Toon posts:

[VB] access table vergelijking

Pagina: 1
Acties:

Verwijderd

Topicstarter
Probleemstelling :

Ik heb in access 2 table's (data en notes)

data :

usercode
check1
check2
check3

notes :

usercode
check1
check2
check3
tom
pom
mom

Beide table's meoten vergeleken worden en als de vcode gelijk is, dan moet de inhoud van data.check1,2,3 naar notes.check1,2,3 gezet worden die bij diezelfde vcode past...

voorlopig kan ik alleen de database openen en de records inlezen, ik weet niet hoe ik deze beide tabellen met elkaar kan vergelijken en dan die inhoud overzetten.. iemand een idee?


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Option Compare Database

Sub GetData()

   Dim cnn As ADODB.Connection
   Dim rs As ADODB.Recordset
   Dim x
   
   Set cnn = New ADODB.Connection
   Set rs = New ADODB.Recordset
   
   cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=h:\access\merge_v2.mdb;User Id=;Password=;"
   rs.Open "select * from notes", cnn

   rs.MoveFirst
   Do Until rs.EOF
   
       x = x + 1
              
   rs.MoveNext
   Loop
   
   MsgBox x & "aantal records doorlopen! "

End Sub

Verwijderd

code:
1
2
3
If Recordset1.fields("Veld1").value = Recordset2.fields("Veld1").value  then
    Recordset2.Fields("Veld2").value = Recordset2.Fields("Veld2").value
end if

Verwijderd

Topicstarter
Mjah, in een soorteglijke loop zetten als hieronder dus, maar is dat niet zeer zwaar? het zijn namelijk 9000 records en als die allemaal moeten vergeleken worden met die andere table zo'n 8000 dan gaat die het moeilijk hebben denk ik?


code:
1
2
3
4
5
6
7
8
9
10
11
12
do while not eof table 1

     table 1 doorlopen
     
           do while not eof table 2

            table 2 vergelijken met table 1
            als ze gelijk zijn velden updaten in table2

           loop

loop

  • Boss
  • Registratie: September 1999
  • Laatst online: 12:29

Boss

+1 Overgewaardeerd

Maak er een SQL querie van. Het is een UPDATE query en als je de criteria goed zet kan je in +/- 2 seconden (op een lokale computer) makkelijk 9000 records bijwerken. Over het netwerk misschien iets langzamer.

Heb je dus helemaal geen lastige code voor nodig. Wat je nu gebruikt is inderdaad zeker niet een snelle methode.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


Verwijderd

Topicstarter
ik probeer het met deze maar krijg syntax error?

code:
1
UPDATE notes LEFT JOIN data ON data.vcode = notes.vcode SET;

Verwijderd

whoa, als het over een paar duizend records gaat kun je het ook best in een loopje doen. Heeft over het algemeen mijn voorkeur, omdat je net even iets flexibeler bent om uitzonderingssituuaties af te vangen. Als performance echter een probleem is moet je het netjes via een update doen.

Na je SET moet natuurlijk wel iets komen....
Pagina: 1