11. marts 2002 - 13:32Der er
5 kommentarer og 1 løsning
Find ens poster i en tabel
Jeg skal lave noget VB kode, så jeg finder alle de poster som er ens, det som jeg har lavet virker ikke rigtig, som man kan se på min kode, vil det ikke kunne gå.
Er der nogen som kan lave noget kode, hvor jeg starter på sidste post i tabelen (SL01), og sammenligner denne post med resten af posterne i tabellen, og der efter går jeg en post tilbage (MovePrevious) og sammenligner denne post med alle de andre poster, og sådan bliver jeg ved omdtil man når tilbage til første post. Man skal have to curser, som hver peger på den samme tabel, den ene curser1 skal pege på den post som de andre poster skal sammenlignes med, og den anden curser2 skal være den som går alle posterne igennem for den føste curser.
dette er hvad jeg har prøvet, men virker ikke...
Sub SletAlt() Dim Dbs As Database Dim Rst1 As Recordset Dim Rst2 As Recordset Dim strSQL As String Dim Debitor As String Dim svar As Integer Set Dbs = CurrentDb Set Rst1 = Dbs.OpenRecordset("Select * from SL01") Set Rst2 = Dbs.OpenRecordset("Select * from SL01") Rst1.MoveLast Rst2.MoveLast Rst2.MovePrevious
Do While Not Rst1.BOF
Do While Not Rst2.BOF 'Debug.Print Rst2.Fields("SL01002") If (Left(Rst1.Fields("SL01002"), 4) = Left(Rst2.Fields("SL01002"), 4)) And (Left(Rst1.Fields("SL01003"), 5) = Left(Rst2.Fields("SL01003"), 5)) Then Debitor = Rst2.Fields("SL01001") strSQL = "DELETE FROM SL01 WHERE SL01001= '" & Debitor & "'"
Dbs.Execute strSQL
End If Rst2.MovePrevious Loop svar = MsgBox("Næste runde", vbOKOnly, "poster") Rst1.MovePrevious Rst2.MoveLast 'Der opstår måske nogle problemmer her, dem som bruges til at undersøge!!! Loop
End Sub
Jeg håber ikke at mit svar er for inviklet, jeg uddyber gerne. Håber at I kan følge mig
Hvergang en post bliver sammenlignet skal posten slettes for curser2, og tabellen skal opdateres uden at curseren mister sit felt
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Sub SletAlt() On Error Resume Next Dim Dbs As Database Dim Rst1 As DAO.Recordset Dim strSQL As String Dim Debitor As String Dim svar As Integer Set Dbs = CurrentDb Set Rst1 = Dbs.OpenRecordset("Select * from SL01") Rst1.MoveLast
Do While Not Rst1.BOF Dbs.Execute "DELETE FROM SL01 WHERE (Left(SL01002, 4) = '" & Left(Rst1!SL01002, 4) & "' And Left(SL01003, 5) = '" & Left(Rst1!SL01003, 5) & "') And SL01001 <> '" & Rst1!SL01001 & "'" If Dbs.RecordsAffected > 0 Then Rst1.Requery Rst1.MoveLast Else Rst1.MovePrevious End If Loop Rst1.Close Dbs.Close End Sub
Hvis din originale kode er som jeg ser på min skærm mangler en Underscore i linje 2 i det inderste Loop. Og noget er galt i linjen som starter med strSQL=. Sammenlign med følgende, som ganske vist er fra et andet miljø (PowerBasic/SQLTools) og som virker:
SQLStatement = "UPDATE `STAT_FULLTEXT_DATA` " & _ "SET ANTAL =" & STR$(AntalF) & _ " WHERE `LIC_ID` =" & STR$(Lid) & " AND MD =" & STR$(j) & _ " AND ÅR = " & "'" & AA & "'"
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.