14. december 2004 - 10:06Der er
6 kommentarer og 1 løsning
Import med overskrivning af dubletter
Jeg har 2 kontorer, der ikke er i direkte kontakt andet end via mail. De skal bruge den samme simple database og indtaste de fejltyper der opstår. Det er ikke en travl database men de vil gerne udveksle/replikere data jævnligt så de hver kan se alle fejltyperne.
Jeg anvender følgende procedurer:
1. Alle nyindtastede poster tildeles automatisk værdien 0 i feltet Lock
Eksport: 1. Vælg alle med værdien 0 i feltet Lock 2. Gør klar til eksport ved at ændre 0 til 1 3. Eksportere alle records med værdien 1 til Excel og sender filen til den anden DB 4. Opdater alle records med værdien 1 til værdien 2
Import: 1. Importer alle records i Excel-filen 2. Opdater alle records med værdien 1 til værdien 2
Jeg eksportere til et Excelark med: DoCmd.OutputTo acOutputQuery, "Forespørgsel1", acFormatXLS, "test.xls", True
og importere med: DoCmd.TransferSpreadsheet acImport, 0, "Tabel1", "C:\test.xls", True, ""
PROBLEM! En gang i mellem ændre de på dataene i en tidligere registreret fejltype, hvordan sikre jeg at den rettede record overskriver de eksisterende record i den anden database?
Jeg forestiller mig at jeg på formen laver en procedurer ved "Efter Opdatering" som ændrer værdien i feltet Lock til 0, derefter kommer recorden med i Excelarket når der eksporteres...
not 100% sure of how your import routine works so its hard to give a precise solution. Are you saying that up until now only NEW records have been imported and now you want to UPDATE existing?
Jeg ville importere dataene i en temp-tabel i første omgang. Herefter kan du f.eks. lave en slette forespørgsel, som sletter de poster fra tabel1, som også findes i temp-tabellen og derefter indsætte hele temp-tabellen vha en tilføjelsesforespørgsel.
thomasjepsen >> Din løsning virker overkommelig, men jeg kan ikke lige overskue at lave sletteforespørgslen, da tabellernes primærnøgle er sammensat af 3 felter. Hvis der kun var et felt i primærnøglen ville jeg skrive noget ala: DELETE * FROM tabel1 WHERE a IN (SELECT a FROM tabel2);
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.