Avatar billede celal Nybegynder
11. marts 2002 - 13:32 Der 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
Avatar billede fynbohans Nybegynder
11. marts 2002 - 14:25 #1
Findes allerede i Access!
Under Ny Forespørgsel kan vælges forespørgslen Find Dubletter.
Avatar billede celal Nybegynder
11. marts 2002 - 14:53 #2
Det kan jeg sgu ikke bruge til noget........!!!!!
Avatar billede terry Ekspert
11. marts 2002 - 20:38 #3
celal>fynbohans sugested you use the "find duplicate" wizard! what is wrong with that idea? You need to give more information or we cant help.
11. marts 2002 - 22:02 #4
Prøv denne:

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

/Thomas
Avatar billede nih Novice
12. marts 2002 - 08:42 #5
Hvis du vil anvende temptabeler kan følgende SQL bruges:

SELECT * INTO tblTemp
FROM(SELECT * from SL01
  union
  select * from SL01)

vha. kode kan du dbs.execute, og bagefter slette og omdøbe tabellerne.

Niels
Avatar billede fynbohans Nybegynder
12. marts 2002 - 11:51 #6
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 & "'"
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester