[ smal @ 22.11.2011. 21:14 ] @
| Ovakva situacija:
Klasična Access aplikacija se izvršava lokalno, ali tabela SIFKOM, tj. šifarnik komitenata, trebala bi da se na On Click updateuje podacima koji se popunjavaju na udaljenoj lokaciji.
Na remote lokaciji je Advantage Database Server. Izguglao sam i prepravio rešenje za internet konekciju, napravio unbound datasheet formu, i na open event postavio sledeći kod:
Code: Private Sub Form_Open(Cancel As Integer)
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
'Create a new ADO Connection object
Set cn = New ADODB.Connection
With cn
.Provider = "Advantage OLE DB Provider;LockMode=ADS_COMPATIBLE_LOCKING;User ID=USER;Password=Pass; Data Source=\\adresa:6263\software\baza.add;Advantage Server Type=ADS_AIS_SERVER;ReadOnly=TRUE;TableType=ADS_CDX"
.Open
End With
'Create an instance of the ADO Recordset class, and
'set its properties
Set rs = New ADODB.Recordset
With rs
Set .ActiveConnection = cn
.Source = "SELECT SIFRA_KOM, NAZIV_KOM, POSTA, ADRESA, MESTO_KOM, TEKUCI, PIB, REFER, DATUM, VREME from SIFKOM where PIB is not null order by SIFRA_KOM"
.LockType = adLockReadOnly
.CursorType = adOpenKeyset
.CursorLocation = adUseClient
.Open
End With
'Set the form's Recordset property to the ADO recordset
Set Me.Recordset = rs
Set rs = Nothing
Set cn = Nothing
Set cn = Me.Recordset.ActiveConnection
cn.Close
End Sub
i podaci su na formi za manje od 2 sekunde. Moje pitanje glasi, kako recordset prebaciti u lokalnu Access tabelu, odnosno kako izvršiti update lokalne Access tabele dobijenim recordset sadržajem?
Hvala! |
[ Trtko @ 22.11.2011. 22:05 ] @
Pa vrtio bi recordset i upisivao u tablicu na lokalnoj bazi
Dim d As Database
Set d = CurrentDb
Dim ev As Recordset
Set ev = d.OpenRecordset("select * from lokalnatabla where sifra_kom=" & saforme_sifrakom)
If ev.EOF() Then
ev.AddNew ' novi
Else
ev.Edit 'mjenjanje
End If
ev.Fields("sarza") = Fsarza
ev.Fields("nalog") = Format(Fnalog, "000000")
ev.Fields("kolicina") = Fkolicina
ev.Fields("kupac") = UCase(Fkupac)
ev.Fields("predmet") = UCase(Fpredmet)
ev.Fields("proizvod") = UCase(Fproizvod)
ev.Fields("datproiz") = Fdatproiz
ev.Fields("narudzba") = Fnarudzba
ev.Fields("oznaka") = UCase(Foznaka)
ev.Update
ev.Close
Set d = Nothing
[ smal @ 22.11.2011. 23:00 ] @
Liči da će da radi :) ali nedostaje još nešto, tj. upiše samo prvi slog...
[ Trtko @ 23.11.2011. 08:07 ] @
pa morao bi to ubaciti u onu tvoju funkciju za ado prepis
nekako ovako
............
...........
...........
Set rs = New ADODB.Recordset
Do while not rs.eof()
Dim d As Database
Set d = CurrentDb
Dim ev As Recordset
Set ev = d.OpenRecordset("select * from lokalnatabla where sifra_kom=" & saforme_sifrakom)
If ev.EOF() Then
ev.AddNew ' novi
Else
ev.Edit 'mjenjanje
End If
ev.Fields("sarza") = Fsarza
ev.Fields("nalog") = Format(Fnalog, "000000")
ev.Fields("kolicina") = Fkolicina
ev.Fields("kupac") = UCase(Fkupac)
ev.Fields("predmet") = UCase(Fpredmet)
ev.Fields("proizvod") = UCase(Fproizvod)
ev.Fields("datproiz") = Fdatproiz
ev.Fields("narudzba") = Fnarudzba
ev.Fields("oznaka") = UCase(Foznaka)
ev.Update
ev.Close
rs.movenext
loop
Set d = Nothing
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.