Centar za edukaciju-BiH


Stranice (3):1,2,3

#1 14.10.2015 13:35
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Adodb.Command + MySQL Stored Procedura
Deneska naletav na eden cuden problem na koj ne najdov resenie.
Imam Stored procedura koja mi vraka odredeni rezultati vo grid.
Jas naviknav da gi koristam stored procedurie od MSSQL server so ADODB.Command no vo MySQL naidov na problem koj ne mi dava da koristam ADODB.Command odnosno dobivam greska 424.
Ova e codot
PreuzmiIzvorni kôd (Visual Basic):
  1.  If (txtDataOD) = "__.__.____" Then Me.txtDataOD.Text = "01.01." & Format(Now(), "yyyy")
  2.   If (txtDataDO) = "__.__.____" Then Me.txtDataDO.Text = "31.12." & Format(Now(), "yyyy")
  3.    Dim RsIzvestaj As ADODB.Recordset
  4.    Set RsIzvestaj = New ADODB.Recordset
  5.        ' Ova treba samo ako e MY SQL ,za MS SQL ne treba
  6.       RsIzvestaj.CursorLocation = adUseClient
  7.    
  8.     Dim cmd As ADODB.Command
  9.     Set cmd = New ADODB.Command
  10.  
  11.       With cmd
  12.            .ActiveConnection = cn
  13.            .CommandType = adCmdStoredProc
  14.            .CommandText = "spSmetki"
  15.            .Parameters.Append cmd.CreateParameter("OdData", adDate, adParamInput, , txtDataOD)
  16.            .Parameters.Append cmd.CreateParameter("DoData", adDate, adParamInput, , txtDataDO)
  17.       End With
  18.        
  19.          Set RsIzvestaj = cmd.Execute
  20.          Set cmd = Nothing
  21.  
  22.              
  23.          ' Test dali ima zapisi vo recordsetot
  24.         ' RsIzvestaj.MoveFirst
  25.         ' Do While Not RsIzvestaj.EOF
  26.         ' MsgBox RsIzvestaj.Fields(2)
  27.         ' RsIzvestaj.MoveNext
  28.         ' Loop
  29.        
  30.        ' za Data Grid
  31.        Set DataGrid1.DataSource = RsIzvestaj
  32.             DataGrid1.ReBind
  33.             DataGrid1.Refresh

A ova funkcionira bez problem
PreuzmiIzvorni kôd (Visual Basic):
  1.  If (txtDataOD) = "__.__.____" Then Me.txtDataOD.Text = "01.01." & Format(Now(), "yyyy")
  2.   If (txtDataDO) = "__.__.____" Then Me.txtDataDO.Text = "31.12." & Format(Now(), "yyyy")
  3.    Dim RsIzvestaj As ADODB.Recordset
  4.    Set RsIzvestaj = New ADODB.Recordset
  5.        ' Ova treba samo ako e MY SQL ,za MS SQL i MSACCESS ne treba
  6.       RsIzvestaj.CursorLocation = adUseClient
  7.    
  8.              
  9.     RsIzvestaj.Open "CALL spSmetki('" & Format(txtDataOD, "yyyy-MM-dd") & "','" & Format(txtDataDO, "yyyy-MM-dd") & "')", cn, adOpenStatic, adLockOptimistic
  10.              
  11.    
  12.              
  13.          ' Test dali ima zapisi vo recordsetot
  14.         ' RsIzvestaj.MoveFirst
  15.         ' Do While Not RsIzvestaj.EOF
  16.         ' MsgBox RsIzvestaj.Fields(2)
  17.         ' RsIzvestaj.MoveNext
  18.         ' Loop
  19.        
  20.        ' za Data Grid
  21.        Set DataGrid1.DataSource = RsIzvestaj
  22.             DataGrid1.ReBind
  23.             DataGrid1.Refresh

Googlav malku no ne najdov nekoe objasnuvajne , moze ovde nekoj ima imano iskustvo so ova
↑  ↓

#2 14.10.2015 14:14
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,612


Predmet:Re: Adodb.Command + MySQL Stored Procedura
Meni ne javlja gresku.
Javlja mi gresku ovdje
.ActiveConnection = cn
a to je sto nemam globalnu var cn odnosno konekciju.

Mozda ti se negdje nesto preklapa.
Postavi vecu cjelinu ako mozes.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#3 14.10.2015 14:34
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Re: Adodb.Command + MySQL Stored Procedura
cn E konekcijata na serverot eve i za nea cod samo stavi tvoi parametri
PreuzmiIzvorni kôd (Visual Basic):
  1. Public cn As ADODB.Connection                ' Glavna konekcija za cel program
  2.  
  3. Public DA As Variant                         ' Zamena za TRUE
  4. Public NE As Variant                         ' Zamena za FALSE
  5.  
  6. Public BarCodePrefix As Integer                ' Prefiks na barkod citacot
  7. 'Global Const BarCodePrefix = "2"              ' Konstanta STX prefiks na bar kod citacot
  8. Public SearchFormaKasa As Boolean          ' Se koristi forma za prebaruvajne vo kasata
  9. Public SearchGridKasa As Boolean             ' Moze da se prebaruva vo gridot na kasata
  10.  
  11.  
  12. Sub Main()
  13. On Local Error GoTo Error_Main:
  14. Set cn = New ADODB.Connection
  15.      
  16.  
  17.     ' My SQL server
  18.  
  19.      
  20.      cn.ConnectionString = "Driver={Mysql ODBC 5.1 Driver}; Server=localhost" & _
  21.                            ";port=3306; database=BazaTest" & _
  22.                            "; user=root" & _
  23.                            "; password=admin" & "; option=3;"
  24.       DA = 1
  25.       NE = 0
  26.  
  27.    cn.Open
  28. If cn.State = adStateOpen Then
  29.    frmIzvestai.Show
  30. End If
  31.  
  32. Main_Exit:
  33.    Exit Sub
  34.  
  35. Error_Main:
  36.  
  37. If Err <> 0 And Err <> -2147217843 And Err <> -2147467259 Then MsgBox Err & "  -->>>  " & Error(Err)
  38.  
  39. If Err = -2147217843 Then
  40.     Call MsgBox("  !  #
  41.   !  " ", vbOKOnly + vbCritical + vbApplicationModal + vbDefaultButton1, "")
  42.    frmParametri.Show
  43.    Resume Main_Exit:
  44. End If
  45.  
  46. If Err = -2147467259 Then
  47.    Call MsgBox("  !  #
  48.   "  ", vbOKOnly + vbCritical + vbApplicationModal + vbDefaultButton1, "")
  49.     frmParametri.Show
  50.     Resume Main_Exit:
  51. End If
  52.  
  53.    
  54. End Sub

Greskata koja ja dobivam e error 7004 The rowset is not bookmarkable
po internet najdov samo deka ako se dodadi ovaa linija :
RsIzvestaj.CursorLocation = adUseClient
sve ke OK no jas toa od porano go imam staveno i ne e do toa problemot.
↑  ↓

#4 15.10.2015 09:33
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,612


Predmet:Re: Adodb.Command + MySQL Stored Procedura
Kod mene radi.
Jedino sto nemoze je rsIzvjestaj koji nemam.

Koja ti je verzija ado?
Ja sam probao sa 20 i radi.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#5 15.10.2015 12:01
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Re: Adodb.Command + MySQL Stored Procedura
Se prikazuvaat podatocite vo grid?
↑  ↓

#6 15.10.2015 12:06
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Re: Adodb.Command + MySQL Stored Procedura
Kaj mene e ADO 2.8 ,no go zameniv i so 2.0 da probam pak isti problem.
Podatocite postojat ako go stavam recordsetot vo Do While ciklus toa raboti ,problem e koga polnime grid.
↑  ↓

#7 15.10.2015 21:29
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,612


Predmet:Re: Adodb.Command + MySQL Stored Procedura
Nerznam imas li adoData odnosno adodc.
Evo preko njega je to mnogo lakse
Adodc2.CommandType = adCmdStoredProc
Adodc2.RecordSource = "vjezba" ' ime stored procedure
Adodc2.Refresh
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#8 15.10.2015 22:16
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Re: Adodb.Command + MySQL Stored Procedura
Nemam , nikogas nemam raboteno so adoData , utre ke probam pa ke javam.
Ako mozi nesto pokonkretno, kako se stavaat parametri na adoData za stor procedura , konekcija.
I uste nesto ova mi e malku neprakticno bidejki na nieden program ne go imam koristeno i sega samo za mySql moram.
Vo sekoj slucaj ne e loso da se znae.
Ovaj post je ureden 1 puta. Posljednja izmjena 15.10.2015 22:25 od strane Gjoreski. ↑  ↓

#9 15.10.2015 22:36
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,612


Predmet:Re: Adodb.Command + MySQL Stored Procedura
Evo ovako.
Ja gotovo uvije koristim data kontrolu dali bilo ado ili dao.
Za ado moras ukljuciti componentu Microsoft ado data control.
Znaci postavim na formu jedan ili vise data kontrola.
Na njima mozes konekciju upidsati kodom ili direktno.
U tvom slucaju mozes napraviti dsn konekciju i upisati u conection string DSN=Imebaze
U recordsource upisas neku tabelu ili Query ili pak stored proceduru.
Kodom veci mas gore napisano za stored proceduru kako treba.

Poslije u datagrid-data source upises ime data kontole.
Poslije svake promjene u data dovoljno je refres data da se sve promijeni u datagrid.

meni je to uvijek bilo nekako naj prikladnije za rad.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#10 15.10.2015 22:44
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Re: Adodb.Command + MySQL Stored Procedura
Znam jas za toa , imam jas resenie i za mojov problem eve vaka :

PreuzmiIzvorni kôd (Visual Basic):
  1.   RsIzvestaj.Open "CALL spSmetki('" & Format(txtDataOD, "yyyy-MM-dd") & "','" & Format(txtDataDO, "yyyy-MM-dd") & "')", cn, adOpenStatic, adLockOptimistic
  2.              
ova e vo red raboti bez nikakov problem , no sakav da znam zosto ova so ADO.command ne mi funkcionira kako sto treba.
Za MSSQL i za ACCESS ADO.Command raboti bezprekorno,problem se javuva samo so MY SQL i toa samo koga treba da se napolni GRID ili DATA Commbo ,sve ostanato e vo red.
↑  ↓

Stranice (3):1,2,3


Sva vremena su GMT +02:00. Trenutno vrijeme: 7: 04 pm.