01. september 2003 - 23:01Der er
19 kommentarer og 1 løsning
Sidste Post i en AccessDatabase
Hej skal have dette programstump til at finde sidste post i databasen. dette eks, virker kun ved lidt poster i basen , ved flere tager det jo extremt lang tid.
Private Sub Form_Load()
Set Myconn = CreateObject("ADODB.Connection") Myconn.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ= " & App.Path & "\kasse.mdb" On Error Resume Next For y = 1 To 25 SQL = "Select * FROM kassebeh WHERE id= " & y & " " Set rs = Myconn.Execute(SQL) Text1 = rs("primo") Text2 = rs("oms") Text3 = rs("ultimo") Next Myconn.Close End Sub
Kan i kloge hoveder hjælpe mig. MVH Force-Master Sten Jensby
Til ocp. Du må lige forklare lidt mere om hvordan, jeg har længe prøvet med det der "rs.movelast" osv, har aldrig fået det til at funke, på min måde virker det , kan du evt omskrive mit programstump så det vil virke. ?
Den fejlmeddelse lyder som om det på en eller anden måde kommer fra Access - det er vel en helt normal database du arbejder med? Tjaa - jeg ved simpelthen ikke hvad fejlen er - måske skulle du forsøge med noget andet end ADODB...?
Prøv evt. at udskifte 'rst' med navnet på dit recordset i nedenstående
Private Sub form_load() Set dindb = DBEngine.Workspaces(0).OpenDatabase(trim(App.Path & "\kasse.mdb")) DoEvents SQL = "Select * FROM kassebeh WHERE id= " & y & " " Set rst = dindb.OpenRecordset(strSQL, dbOpenForwardOnly) Do While Not rst.EOF text1= rst!primo text2= rst!oms text3= rst!ultimo End If rst.MoveNext DoEvents Loop End Sub
du ikke Set dindb = DBEngine.Workspaces(0).OpenDatabase(Trim(App.Path & "\kasse.mdb")) Får fejl i den linje. run-time error 424 object required.
Private Sub Form_Load() Set dindb = DBEngine.Workspaces(0).OpenDatabase(Trim(App.Path & "\kasse.mdb")) DoEvents SQL = "Select * FROM kassebeh" Set rst = dindb.OpenRecordset(strSQL, dbOpenForwardOnly) Do While Not rst.EOF Text1 = rst!primo Text2 = rst!oms Text3 = rst!ultimo rst.MoveNext DoEvents Loop End Sub
Har fået et tip fra en på email. DEt virker heller ikke.
Private Sub Form_Load() Set Myconn = CreateObject("ADODB.Connection") Myconn.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ= " & App.Path & "\kasse.mdb" On Error Resume Next SQL = "Select * FROM kassebeh ORDER BY ID DESC LIMIT 1 Set rs = Myconn.Execute(SQL) Text1 = rs("primo") Text2 = rs("oms") Text3 = rs("ultimo") Myconn.Close End Sub
Endelig fik den løst MArtin havde ret , dog havde rs.movelast forkert. udskiftede den med rs.movenext og flyttede den lidt ned. kan godt det evt kan tage lidt tid , hvis der er mange records i basen.
Private Sub Form_Load()
Set Myconn = CreateObject("ADODB.Connection") Myconn.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ= " & App.Path & "\kasse.mdb" On Error Resume Next SQL = "Select * FROM kassebeh" Set rs = Myconn.Execute(SQL) Do While Not rs.EOF Text1 = rs("primo") Text2 = rs("oms") Text3 = rs("ultimo") rs.movenext Loop Myconn.Close End Sub
Så meget ret havde jeg nu ikke. Det havde været meget mere elegang med en movelast og evt. en moveprevious - forstår ikke hvorfor det ikke virker. Forsøgte du med DAO? Måske kan andre forklare hvorfor den brokker sig over movelast og moveprevious..?
Den løsning du fik på email er jo helt anderledes, den går ud på at du kun henter en post (den sidste) ind i dit recordset - det du vil er vel at hente alle poster til recordsettet, og derefter nappe den sidste post...
NB: Den fejl du fik med DAO skyldes muligvis, at du ikke har dimmet din "dindb" (dmi dindb as database), eller at du ikke har oprettet en reference til DAO 3.6 (eller hvad nummer det nu er nået til...)
Hej Kan faktisk god leve at KUN få DEN sidste post ind. men det virker da nu , men som sagt , med mange post kan det måske tage tid. så hvis du lige har en løsning på KUN DEN sidste post , er jeg taknemlig
Du kan også gøre som du hele tiden har gjort, men indlæse recordsættet i omvendt rækkefølge, ved at bruge ORDER BY xxx DESC (descending) http://www.w3schools.com/sql/sql_orderby.asp
Så slipper du for at loope :o)
Mulighederne er mange...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.