Avatar billede epimp Nybegynder
09. august 2006 - 08:42 Der er 4 kommentarer

Select forespørgsel returner forkerte data

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.

Hvad pokker har Access og jeg gang i?

På forhånd tak.
Avatar billede epimp Nybegynder
09. august 2006 - 08:43 #1
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
Avatar billede Slettet bruger
09. august 2006 - 11:07 #2
SELECT DISTINCT?~)
Avatar billede epimp Nybegynder
09. august 2006 - 11:14 #3
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.
Avatar billede epimp Nybegynder
09. august 2006 - 11:16 #4
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?
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