Jeg prøver på at få poster i en tabel til at matche ud med hinanden på baggrund af kriterier såsom beholdning og dato. Der eksisterer tre data fra tre datakilder: 1, 2 og 3. Jeg vil matche 1’erne med 2 og 3’erne. Nogle er identiske på nær datakilden, andre er ikke.
I VBA Script vælger jeg først alle posterne fra datakilde 1 i tabellen. Dernæst kører jeg et while loop, der udfører en ny forespørgsel for hver post returneret. Forespørgslen udvælger felter, hvor Beholdning og Dato er lig med den post, som while loopet er nået til, men hvor datakilde er 2 eller 3.
Det virker OK nogen gange, andre gange returnerer Access nogle værdier, som er fuldstændig skæve! Jeg har kørt noget logging til en tekstfil et par gange og en msgbox et par andre, og Access finder på sin helt egen værdi til feltet Beholdning i stedet for den værdi, som den burde hente fra den post, der er nået til i loopet.
Det blev måske lidt kringlet. Her følger den kode, jeg bruger.
Dim MyDB As DAO.Database, MyRec As DAO.Recordset, MySubRec As DAO.Recordset Set MyDB = CurrentDb Set MyRec = MyDB.OpenRecordset("SELECT * FROM Table WHERE Source = 'BEC' and Level=2")
While Not MyRec.EOF
sqlselectquery = "SELECT * FROM Table WHERE Source <> 'BEC' and Quantitity = " & MyRec.Fields("Quantitity") & " and Registrationnumber = '" & MyRec.Fields("Registrationnumber") & "' and Exdate=#" & MyRec.Fields("ExDate") & "#"
Set MySubRec = MyDB.OpenRecordset(sqlselectquery) While Not MySubRec.EOF sqlupdatequery = "UPDATE Table SET MatchFound = True WHERE TableID = " & MySubRec.Fields("TableID") DoCmd.SetWarnings False DoCmd.RunSQL sqlupdatequery DoCmd.SetWarnings True MySubRec.MoveNext Wend MyRec.MoveNext Wend
Undskyld, enten har jeg misforstået DISTINCT eller så kan SELECT DISTINCT da ikke gøre det for mig. I min første query vil jeg kun have dem fra datakilde "BEC" - uanset om de er unikke eller ej.
Men det jeg blot ikke forstår er, hvor Access får sine værdier fra, som ikke står i databasen.
Når jeg kører ovenstående programkode igennem en 4-5 gange, så ser alle matches ud til at være blevet gennemført. Er der en eller anden begrænsning jeg er støt på eller er Access utrolig dårlig til at håndtere arbejdshukommelse?
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.