Avatar billede puppetmaster Nybegynder
26. april 2004 - 09:30 Der er 4 kommentarer og
1 løsning

Sammenligning af tabeller

Tja, hvordan kan man bedst sikre sig at en tabel "overført" fra en database til en anden database, vha. en tabeloprettelsesforespørgsel, er gået godt og at de 2 tabeller er identiske?
26. april 2004 - 09:33 #1
Hvis du vil sikre dig, at de er 100% identiske, kan du bare lave en ny forespørgsel, hvor du joiner de 2 tabeller på samtlige felter.
Brug herefter en
If DCount("*", "DinForespørgsel") = DCount("*", "Den ene tabel") then 'alt ok
Avatar billede puppetmaster Nybegynder
26. april 2004 - 09:35 #2
ok, der er ikke en indbygget funktion i Access som kan verificere at overførslen gik godt? (selvfølgelig kan man jo lave en On Error, så hvis der opstår en fejl, brydes ud af koden, så tabellen ikke bliver slettet af min kode længere nede!)
26. april 2004 - 09:41 #3
Du kan godt spørge på hvormange poster der blev påvirket i en forespørgsel. Og i dette tilfælde med Tabeloprettelse, vil det også være det samme. Men hvis det f.eks. havde været en opdateringsforespørgsel eller en tilføjelsesforespørgsel, så er det ikke ensbetydende med, at de 2 tabeller er helt ens:

Dim db as database
Set db = Currentdb
db.Execute "Din Tabeloprettelsesforespørgsel"
If db.recordsaffected <> DCount("*", "Din oprindelige tabel") then 'fejl

I dit tilfælde vil jeg dog nok bare spørge på om Dcount er den samme for tabel1 og tabel2 (altså UDEN den forespørgsel, som jeg snakkede om først). Det burde være nok!
Avatar billede puppetmaster Nybegynder
26. april 2004 - 09:48 #4
hmmm....der er dog det problem at eksemplet kun tæller antallet af records, ikke om data er ens.
26. april 2004 - 10:13 #5
Ja, men ved en tabeloprettelse, så har jeg nu aldrig oplevet, at den skulle lave om på data undervejs.
Dog kan indekser, primærnøgler og selvfølgelig relationer ikke kopieres med, når du bruger tabeloprettelsesforespørgsel.

Jeg plejer selv at oprette tabellen præcist som jeg vil have det med indekser osv. Derefter bruger jeg Tilføjelsesforespørgsler i stedet (og sletteforespørgsel forinden, hvis den skal køres ofte). Derved er det mere relevant at benytte metoden med forespørgslen hvor du joiner på alle felter.

Endnu et sikkerhedscheck kan foretages ved at db.Execute kan sættes til at afbryde hvis ikke alle poster går godt:
Dim db as database
Set db = Currentdb
db.Execute "Din Tabeloprettelsesforespørgsel", dbFailOnError
If db.recordsaffected = 0 then 'fejl
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