Waarden uit query opslaan bij andere gegevens

Status
Niet open voor verdere reacties.

Japsur

Gebruiker
Lid geworden
9 apr 2004
Berichten
650
Hallo (mede)kenners,

Ik zit met een probleem.
Ik ben bezig met het maken van een ledenadministratie waarbij ik zoveel fouten bij het intypen van adressen etc. wil vermijden.
Ik heb daarom een tabel met daarin alle postcodes van mijn plaats (kan nog andere plaatsen, maar is niet van belang tot nu toe) en daaraan ook de straatnamen, en wijkindeling (naar eigen keuze).
Een tweede tabel met waar de NAW-gegevens in moeten komen.
Nu wil ik in een form. maken die na het intypen van de naam en achternaam en het invullen van de postcode automatisch de straatnaam en wijk verschijnt in de velden adres en wijk. En deze gegevens moeten dan worden opgeslagen bij de gegevens van de NAW-gegevens. (Naam Adres Woonplaats-gegevens)

Ik kom er niet uit hoe dit aan te pakken :confused: Weet misschien iemand hoe ik dit moet aanpakken?
Alvast bedankt!
 
is

update TABEL set WIJK = (select WIJK from NAW where NAAM = 'naam' and POSTCODE = '1234AA'), STRAAT = (select STRAAT from NAW where NAAM = 'naam' and POSTCODE = '1234AA') where ORIGREC = currentorigrec

misschien iets voor je als after save actie of iets dergelijks?
 
Ik neem aan dat je een tabel hebt met postcode, wijk en straatnaam gegevens.

Dan moet je een event maken die de straatnaam en wijk opzoekt adhv de potscode. Dit zal zoiets zijn als:

Code:
dim cnn as ADODB.connection
dim rst as new ADODB.recordset
dim strSQL as string

set cnn = currentproject.connection
strSQL = "SELECT straatnaam, wijk FROM postcodetabel WHERE postcode = " & me.postcode & ";"

rst.open strSQL, cnn, adopenstatic
rst.movefirst
me.straatnaam = rst.fields("straatnaam")
me.wijk = rst.fields("wijk")

rst.close
set rst = nothing
cnn.close
set cnn = nothing

De tabelnaam en veldnamen moet je even aanpassen naar je eigen situatie. Ik heb het niet getest, dus tikfouten zullen er nog wel inzitten.


Grtz,
 
OK, nogmaals een poging dan. Als de gebruiker een geldige postcode heeft ingevoerd (controleer dit!) en een geldige voor en achternaam (ook controleren) heeft ingevoerd. Dan kan je een update op je database doen zoals ik daarnet heb beschreven. Als je dan een refresh geeft op je formulier dan staat meteen de juiste data er.
 
Zie het attachment als voorbeeld van wat ik denk dat je bedoelt.
 

Bijlagen

Euh, de naam moet gewoon ingevoerd worden, het gaat om nieuwe leden zeg maar, de invoer hiervan
Dus de postcode is altijd geldig! Wie gaat er een ongeldige postcode opgeven!

Dus ik voer in:

Voornaam
Achternaam
Huisnummer
Postcode (hier geef ik de postcode op)
Adres (deze verschijnt aan de hand van de postcode, soms zijn er 2 verschillende straten met dezelfde postcode, dus het moet een soort keuze lijst worden zeg maar, waarna ik nog kan kiezen evt. uit 2 of 3 straten, die straatnamen geeft een nieuw lid wel op, dus dat is zelf te checken)
Plaats (deze verschijnt ook aan de hand van de postcode)
Telefoonnummer
Wijk (deze verschijnt ook aan de hand van de postcode)
en nog wat velden..

Dus postcode, adres, plaats en wijk staan in 1 tabel, standaard zeg maar

En de tabel Ledenlijst, waarin alle bovenstaande velden komen te staan.


Waar moet ik die event plaatsen? Bij welk criterium zeg maar
 
Laatst bewerkt:
Ik heb hier de twee tabellen er maar bij gedaan.
Het moet dus uiteindelijk in een form. komen.

Wanneer ik dus zeg maar bij Appie de postcode "7461 AA" intyp in een form, moet er bij adres "Industrieweg" komen te staan, plaats "Rijssen" en wijk "5".
 
Laatst bewerkt:
Het event dat je moet gebruiken is het AfterUpdate (NaBijwerken) event van het postcode veld op het formulier.

Als je de inhoud van de keuzelijst wil aanpassen moet je de rowsource eigenschap aanpassen m.b.v. de waarden uit de recordset. Mischien heb je niet eens VBA daarvoor nodig, en kun je volstaan met een verwijzing naar het postcodeveld.

Rowsource wordt dan zoiets als "SELECT straatnaam FROm postcodetabel WHERE postcode = forms![formuliernaam]![postcodeveld];"
Dan hoef je in de code alleen de keuzelijst te verversen, dat kan met "me.postcodeveldnaam.requery"


Grtz,
 
Ik krijg de volgende foutmelding wanneer ik de code heb ingevoerd.

rst.Open strSQL, cnn, adOpenStatic

Ik snap dit niet? Hoe moet ik dit oplossen??

Alvast bedankt.
 
Laatst bewerkt:
Welke foutmelding krijg je precies?

Wat je noemt in je fout is een regel in de code.


Grtz,
 
OK, de foutmelding:

Fout -2147217900 (80040e14) tijdens uitvoering
Syntaxisfout (operator ontbreekt) in query-expressie Postcode = 7461AA.

En dan springt ie in VBA naar rst.Open strSQL, cnn, adOpenStatic
 
Om een tekstuele invoer moeten altijd quotes staan. De query regel uit de code moet worden:

strSQL = "SELECT straatnaam, wijk FROM postcodetabel WHERE postcode = '" & me.postcode & "';"

Na postcode= staat een extra quote en voor de puntkomma staat ook weer een extra quote. De ingevoerde postcode wordt dus altijd omsloten door quotes.


Grtz,
 
OK, dat is nu wel OK, maar nu komt de volgende foutmelding:

Fout 3021 tijdens uitvoering:

BOF of EOF is Waar, of de huidige record is verwijderd. Vor de gewenste bewerking moet er een huidige record zijn.

En in de code springt ie nu naar: "rst.MoveFirst"
 
Dat betekent dat de query die er nu wordt geconstrueerd geen resultaat oplevert. Je kunt dat het best testen door regel voor regel door de code te lopen.

Als je in de VBA editor in de grijze balk links van de code klikt verschijnt er een stopbord. Als je dat voor de regel doet waar de query wordt opgebouwd kun je door op <F8> te drukken naar de volgende regel springen. Als je dan met je muis over strSQL zweeft zie je welke query er is opgebouwd.

Onder de code staat het debug window (en als dan niet is kun je die oproepen met <ctrl>+g), als je daarin intikt "?strsql" en je geeft <enter> krijg je ook de query te zien en kun je em kopieren.

Deze query zal het ook moeten doen als je hem kopieert en plakt in een SQL vernstertje van een normale query. Als dat werkt, werkt het in de code ook.


Grtz,
 
Ik geloof dat er geen query wordt opgebouwd wanneer ik over strSQL ga met de muis, want ik krijg dit te zien: strSQL = ""
En ook in het direct venster (Ctrl + G) levert het niets op, ik krijg niets te zien.

Maar hij werkt wel als gewone query zeg maar, wanneer ik de code kopieer in het SQLvenster van een query.
Dan geeft hij als parametervraag: Me.Postcode. Ik voer de postcode en hij geeft resultaat.

Maar waarom werkt het niet in het formulier?? De DB staat hier ergens tussen, ik heb er ook bij geplaatst voor het geval dat.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan