tabel A en B vergelijken, verschil wordt de nieuwe inhoud van tabel B (Access 2003)

Status
Niet open voor verdere reacties.

assessor

Gebruiker
Lid geworden
7 jan 2007
Berichten
184
Het leek zo simpel maar na 3 uur ben ik nog geen steek verder, steeds nieuwe ideeën maar gelijk ook weer moeilijkheden.

Tabel A wordt om de dag gegenereerd en bestaat uit 6 kolommen:
1) UniekNr
2) Code
3) Naam
4) Type
5) Start
6) Eind

Met een "MakeTable" Query:
1) Filter ik uit de kolommen Code, Naam en Type regels die mij niet interesseren. Not Like etc.....
2) In kolom "Start" een filter die alleen regels na huidige datum >(Now() overhoudt.
3) Van het overgeblevene wordt tabel B aangemaakt.

Dit was de eerste stap.

Nu wil ik deze query gaan gebruiken om:
1) de inhoud van tabellen A en B te vergelijken
2) het verschil weg te schrijven als de nieuwe tabel B.

De voorkomende verschillen zijn:
1) nieuwe files "UniekNr"
2) datumwijzigingen "Start" en "Eind"

Dit moet makkelijker kunnen dan hoe ik het nu voor ogen heb namelijk een hele rits make, update en delete query's.

Alle hulp in deze wordt gewaardeerd, Jos
 
Als je de twee tabellen hebt, kun je ze wel met elkaar vergelijken. Het valt mij op dat je het veld UniekNr niet meeneemt; uit de naam zou ik afleiden dat dat je sleutelveld is. En dat de andere velden dus meerdere keren zouden moeten kunnen voorkomen. Als dat zo is; maak je het jezelf wel heel erg lastig, want hoe bepaal je dan de unieke records die dubbel of niet voorkomen? Ik zou dus het sleutelveld ook mee kopieëren. Daarna is het simpel om ze te vergelijken: maak een nieuwe query aan met beide tabellen, en maak een Outer Join koppeling tussen A en B op basis van UniekNr, waarbij je van A alle records laat zien en van B de gerelateerde. Als je vervolgens TabelB.UniekNr filtert op Null heb je de waarden uit A die niet voorkomen in B. Deze nieuwe query wordt dan je nieuwe TabelMaak query.
 
Michel, je hebt het weer voor elkaar. Geweldig, ik ga een broodje eten, kom terug en het probleem is opgelost :)

Ik heb het misschien niet helemaal duidelijk omschreven, ik neem wel alle velden mee.
UniekNr is niet echt een sleutelveld, als een datum wijzigt (Sart of Eind) dan blijft dit nr. hetzelfde.
Dit houdt in dat ik ook voor deze velden Outer Join koppelingen moest maken.
Dat had ik allemaal wel maar het is nooit in mij opgekomen om TabelB.UniekNr te filteren op Null om de gelijkgebleven velden niet mee te nemen.
Als je er eenmaal overheen kijkt...

Hartstikke bedankt weer.
 
UniekNr is niet echt een sleutelveld, als een datum wijzigt (Sart of Eind) dan blijft dit nr. hetzelfde.
Zolang het om één record gaat per UniekNr, is het uiteraard wel degelijk een uniek nummer. Dat verandert niet als je een veld wijzigt...
 
Dat is natuurlijk zo, weet even niet waar ik aan dacht...

Nu moet ik het nog zo elegant mogelijk voor elkaar krijgen dat elke keer dat deze actie gedaan wordt:
1) Alleen de nieuw bijgekomen UniekNr en de UniekNr met wijzigingen worden getoond. (dat is nu dus gelukt)
2) Dat bij het wegschrijven (MakeTable) van de nieuwe tabel B niet alleen de bij "1" genoemde, maar alle files vanaf de huidige datum worden weggeschreven.

Twee acties dus, zien wat er sinds vorige keer is gewijzigd en vervolgens alles vanaf huidige datum weer in tabel B opslaan.
Is op zich niet moeilijk maar vaak doe ik heel moeilijk waar het heel makkelijk kan.
Wie weet wanneer ik hier weer tijd voor heb, dit moet steeds tussen het reguliere werk door...

Nogmaals dank, ik hoop dat ik nog een een beroep op je kan doen, ik zit nog vol vragen.
En dan ben ik nog niet eens met Access 2010 begonnen en om het nog makkelijker te maken heb ik nu "voorlopig" Access 2007 ter beschikking gekregen.

mvg, Jos
 
De tweede actie klinkt als een bijwerkquery; de eerste variant is een toevoegquery. Toch? Want die nummers heb je toch al staan in tabelB?
 
Ik heb nog geen tijd gehad om hiermee te experimenteren maar...

De aanmaak query waarmee tabel B werd aangemaakt wordt de toevoeg of query of bijwerk query, moet nog zien wat het beste gaat werken.
Met een toevoeg query kan ik (denk ik) alleen de files (Unieknr) toevoegen die nog niet in tabel B bestaan.
Met een bijwerk query kan ik (denk ik) alleen de velden van files die al in tabel B bestaan aanpassen.
Ik denk niet dat ik met een van beide query's de twee handelingen (toevoegen en bijwerken) kan verrichten.

En dan moet ik ook nog iets bedenken om de verschillen te zien, dus wat gaan de toevoeg en/of wijziging query's doen.
Ik dacht dit voor het uitvoeren van de toevoeg en/of wijziging query's met een select query te controleren.

Of ben ik weer veel te moeilijk bezig? Ik hoop dat je mij nog kan volgen :)

mvg, Jos
 
Je bent volgens mij wel op de goede weg, maar je moet ook weer niet te moeilijk denken. Ik heb het gevoel dat je denkt dat je met één query alles zou moeten kunnen doen, maar dat kan denk ik niet. Een toevoegquery moet je misschien nog combineren met een Verwijderquery om je tijdelijke tabel leeg te maken, een tabelmaak query heeft dat nadeel niet. Een toevoegquery heeft dan weer het voordeel dat je de opmaak in de tijdelijke tabel niet kwijt raakt; een tabelmaak query gooit ook je veldinstellingen overboord, en als je bepaalde veldinstellingen nodig hebt in vervolgtabellen, dan zou ik voor de verwijde'/toevoeg optie kiezen.
 
Met minder dan drie query's kan ik het niet:
1) selection query met de instellingen van de update query zodat ik kan zien wat er nieuw of gewijzigd is voordat dit aangepast wordt.
2) de update query die dit vervolgens uitvoert
3) delete query die de files met start(date) ouder dan Now() verwijderd.

Dit werkt zo te zien goed, nu moet ik alleen het geheel een beetje netjes in een form zien te presenteren.

mvg, Jos
 
Queries 1 en 2 kun je combineren, maar dat hoeft op zich niet. Als je query klopt, hoef je niks te controleren, en kun je gelijk updaten. Als je wel een handmatige check nodig hebt, zit er iets niet goed in de onderliggende data, lijkt mij...
 
Query 1 is niet zozeer bedoeld als controle als wel een methode om snel te zien wat er gewijzigd is alvorens het tussen de duizenden andere regels verdwijnt.

PS. net ook de eerste stappen gezet in het omzetten van mijn programma naar Access 2007, is nu al een drama, als je hier wat tips voor hebt houd ik mij aanbevolen.
vast dank

mvg, Jos
 
Wat voor problemen? Ik lees een 2003 db in (ik gebruik tegenwoordig ook 2010, maar niet verder vertellen ;) ) en kies vervolgens Publiceren, en converteer 'm naar 2007 format. En alles blijft werken.... Moet er wel gelijk bijzeggen dat je wel problemen krijgt met eigen werkbalken, omdat 2007/2010 natuurlijk die heerlijke linten gebruikt.
 
Ik moet enkele ODBC links maken naar tabellen in een Fox Pro database daarvoor moet ik "Visual Foxpro Tables" kunnen selecteren in mijn "Machine Data Source" window maar bij 2007 heb ik deze optie niet. Ik vermoed dat ik hiervoor iets moet installeren in Access 2007, kan mij vaag herinneren dat dit ook zo was bij 2003 maar da's een tijdje geleden.

PS. je geheim is veilig bij mij :)
 
"Visual Fox Pro" tabellen zijn weer gelinkt (kwartje zat even vast) en alles gaat de goede kant op met het Access 2007 project.

Terugkomend op mijn originele "probleem"
Alle query's werken als een zonnetje, in een macro gezet, knopje in formulier klaar echter...
Als ik de macro start gaan achtereenvolgens de select, update en delete query's.
Tussen de select en update query's een msgBox geplaatst die je vertelt dat de select query je de nieuwe en/of gewijzigde files toont, OK en macro gaat verder.

Deze msgBox met alleen OK knop zou ik graag vervangen door een keuze box met OK en CANCEL

maar hoe, kan dit zonder dat ik uit de macro naar een stukje code stap????

mvg, Jos
 
Laatst bewerkt:
Waarom de select query er überhaupt tussen gezet?
 
De nieuwe files zie je makkelijk genoeg dat zijn de hoogste UniekNr (niet persé de nieuwste datums).
Maar datumwijzigingen in reeds bestaande files zie je niet makkelijk terug dus gebruik ik dit om tijdens het inlezen van de nieuwe lijst snel te kunnen zien of er wijzigingen zijn.
Ik ben altijd in voor betere oplossingen.

Toevoeging:
Ik zie ineens dat dit niet altijd even goed werkt.
Als er wat meer nieuwe files zijn dan kan ik niet scrollen voor ik OK geklikt heb en zodra ik OK klik is alles weg...
Terug naar de tekentafel.

mvg, Jos
 
Laatst bewerkt:
Niet het toppunt van elegantie maar wel opgelost, twee knopjes.
1) knopje "wijzigingen" select query
2) knopje "update" update/delete query's
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan