Tabel update via OLEDB

Status
Niet open voor verdere reacties.

agroenen

Gebruiker
Lid geworden
17 apr 2009
Berichten
15
Beste,

ik heb een tabel/formulier met daarin 3 velden:
- bankcode
- banknummer
- iban-nummer
Op het formulier staat een tekstveld waarin, als de bankcode of het banknummer gewijzigd wordt, een iban-nummer gegenereerd wordt m.b.v. een functie GetIBAN, en geplaatst in veld iban-nummer. Dat werkt goed.

Echter: indien we het banknummer via een OLEDB-connectie wijzigen, gebeurt er natuurlijk helemaal niets omdat dit niet op het formulier plaatsvindt.
Hoe kan ik ervoor zorgen dat de waarde in tabelveld iban-nummer wijzigt als er via OLEDB iets wijzigt aan de andere twee velden?
Data-macro after_update vanuit Access werkt niet, execute update-query in Access met OLEDB werkt niet (wil dan een parameter hebben?!). De functie zelf aanroepen vanuit OLEDB lukt ook niet ("update table set iban-nummer = GetIBAN(Bankcode + Banknummer);" (eigen functies niet toegestaan blijkbaar).
Het makkelijkst zou zijn om met OLEDB een update te kunnen doen waarbij het iban-nummer gevuld wordt met de waarde uit het formuliertekstveld; die lijkt namelijk wel direct te veranderen. Is dat mogelijk?
Andere ideeën?

Hartelijk dank vast!
 
De makkelijkste optie is natuurlijk: niet doen zo.... waarom zou je ook? Waarom een formulier maken als je het niet gebruikt?
Maar zelfs dan, moet je het gewoon kunnen triggeren met de juiste gebeurtenis. Niet via je OLEDb overigens, want die kent alleen reguliere SQL commando's, wat dus de reden is dat jouw functie niet werkt in de OLEDB aanroep.
Als je het formulier wél gebruikt, kun je de andere velden laten bijwerken op basis van dé gebeurtenis <Bij aanwijzen> van het formulier. Bijvoorbeeld. Of, bij het starten van de database, laat je eerst een gebeurtenis draaien die de velden bijwerkt.

Maar ik zou methodes die de workflow verzieken dus niet eens overwegen, laat staan gebruiken....
 
De vraag is nu juist hoe dit wèl kan met een OLEDB-connectie... Het formulier wordt niet gebruikt om het banknummer te wijzigen, alleen om duidelijker in beeld te krijgen welke gegevens er gebruikt worden door ons testprogramma.
Het tekstveld op het formulier doet wat ik wil, alleen op de verkeerde plaats; dit zou op tabelniveau moeten plaatsvinden, getriggerd door de wijziging op banknummer door de OLEDB-connectie.
 
Nou, dat gaat dus niet via OLEDB. Daar was je al achter, en daar kan ik niets aan veranderen. Dat niet alleen: dat kan niemand. Je kunt alleen correcte SQL opdrachten laten uitvoeren.
 
kan je als de oledb een wijziging maakt een datum in je tabel laten verschijnen bv in een kolom 'laatste wijziging'. vervolgens zou je een update query of code die je formulier nu doet kunnen laten draaien over de regels die gewijzigd zijn.
 
Lijkt mij ook niet de gewenste oplossing, aangezien ik zoiets al had voorgesteld, en wat was afgewezen :). Je moet natuurlijk, voordat je de export doet, ervoor zorgen dat je bronprogramma, dat de OLEDB export doet, de juiste gegevens exporteert. En dat betekent dat je functie GetIBAN in de bron moet draaien, niet in het doel (de Access database). Dat is de enige oplossing. Of je processen aanpassen. Ik weet niet hoe je nu aan de data komt, en waarom je überhaupt andere programma's niet-gecorrigeerde data laat wegschrijven in je database, maar mij lijkt het, puur op basis van wat je aanlevert aan informatie, dat het wat gestroomlijnder kan. Correct me if I'm wrong...
 
Om de een of andere reden krijg ik geen mailtje meer als er nieuwe antwoorden zijn; ik zie dit nu pas...

Wat jwaque schrijft is exact wat ik wil; via OLEDB vindt er een wijziging plaats in de tabel, en dan moet er een update plaatsvinden. Ik heb inmiddels, door de Sandbox mode op 2 te zetten, wel een update-query kunnen maken in Access. Hoe laat ik die echter "afgaan"? Het lijkt er sterk op dat Access niet "ziet" dat er via OLEDB een wijziging in de tabel gemaakt wordt?
 
Laatst bewerkt:
Zolang je zelf de goede antwoorden op je eigen vragen geeft, valt er weinig toe te voegen :). Zoals ik al eerder zei (weliswaar niet letterlijk), als je een recordset handeling uitvoert wordt er niks getriggerd in Access zelf. Je moet de actie dus uitvoeren vanuit je bronprogramma. Blijkbaar kun je van daaruit van alles programmeren, dus dat zou niet zo moeilijk moeten zijn.
 
je kan een query laten draaien mbv een knop op een formulier of bij het opstarten van je formulier bij gebeurtenissen.

in je vba code komt dan iets van docmd.openquery "querynaam"

in je tabel heb je dan een veld 'laatsteWijziging' In je update query laat je het veld LaatsteWijziging vullen met de datum van vandaag date()

Vast niet de meest elegante oplossing anders was octafish er wel mee gekomen maar voor mijn toepassingen tot nu toe voldoende.
 
Laatst bewerkt:
@jwaque: dat staat al in bericht #2 en is afgewezen door TS. Maar TS is het, als ik de antwoorden zo lees, meer met jou eens dan met mij, dus wellicht dat het nu wel gepikt wordt :D
 
Dat ik een updatequery kan draaien vanuit een formulier-event snap ik, dat is mijn vraag toch niet?

In jullie reacties zie ik nergens staan dat Access niet getriggerd kàn worden door een wijziging via OLEDB; en dat was mijn vraag wel. Tussendoor Access handmatig openen om een updatequery af te laten gaan is geen optie.
Wat een vreemd toontje wordt er weer aangeslagen... Ik heb het nergens over een "export", "niet gecorrigeerde data", of dat ik alles vanuit het andere programma kan programmeren.

Het antwoord is dus blijkbaar 'nee, Access zie een wijziging vanuit OLEDB niet als een event waar je iets mee kan'.
 
Ik denk niet dat je access iets kan laten doen door je oledb. Misschien heb je wat aan dat je wel access automatisch iets kan laten doen via een taak in outlook dacht ik. Maar hoe dat precies werkt weet ik niet.
 
In jullie reacties zie ik nergens staan dat Access niet getriggerd kàn worden door een wijziging via OLEDB; en dat was mijn vraag wel.
Nee?
Nou, dat gaat dus niet via OLEDB. Daar was je al achter, en daar kan ik niets aan veranderen. Dat niet alleen: dat kan niemand. Je kunt alleen correcte SQL opdrachten laten uitvoeren.
En dat 'vreemde toontje' waar je op doelt, is m.i. niet zo vreemd, als je zou lezen wat er gezegd wordt. Maar je blijft maar doorhameren over iets wat niet kan.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan