invullen straatnaam en plaats lukt niet vanuit postcode database

Status
Niet open voor verdere reacties.

martijnverdaas

Gebruiker
Lid geworden
5 apr 2010
Berichten
44
Na wat lezen in de nieuwsbrieven zal ik een bestand van postcodes van NL met bijbehorende gegevens.

Dit had ik even op de plank opzij geschoven omdat ik alleen maar betaalde varianten tegen kwam.

Nu heb ik in mijn bestaande frm [frmLeerling] de velden nummer & postcode de codes gegeven zoals in het voorbeeld bestand.

code voor nummer;

Code:
Private Sub Nummer_AfterUpdate()
Dim Adres As Recordset
Dim sqlZ As String
Dim srt1 As Byte
Dim srt2 As Byte

If Me![Nummer] <> "" Then
  If Me![Nummer] Mod 2 = 0 Then
    srt1 = 1
    srt2 = 1
  Else
    srt1 = 0
    srt2 = 0
  End If
Else
  Me![Nummer] = 0
  srt1 = 2
  srt2 = 3
End If

sqlZ = "SELECT Straat, Plaats, Gemeente, Provincie FROM (Plaats INNER JOIN Straat ON Plaats.PlaatsID = Straat.PlaatsID) " & _
       "INNER JOIN Postcodes ON Straat.StraatID = Postcodes.StraatID " & _
       "WHERE (Postcode = '" & Me![Postcode] & "' AND " & _
               "Van <=" & Me![Nummer] & " and " & _
               "Tem >=" & Me![Nummer] & " and " & _
               "(Soort = " & srt1 & " OR Soort = " & srt2 & "))"

If Me![Nummer] = 0 Then
  Me![Nummer] = ""
End If

Set Adres = CurrentDb.OpenRecordset(sqlZ)

If Adres.BOF Then
    MsgBox "Postcode/nummer niet gevonden", vbExclamation
Else
    Me.Straat = Adres!Straat
    Me.Plaats = Adres!Plaats
    Me.Adres = Me.Straat & " " & Me.Nummer & vbLf & Me.Postcode & " " & Adres!Plaats
End If

Adres.Close
End Sub

en bij postcode;

Code:
Private Sub Postcode_AfterUpdate()
If DCount("*", "Postcodes", "Postcode = '" & Me.Postcode & "'") = 0 Then
  MsgBox "Postcode bestaat niet", vbExclamation
End If
End Sub

wanneer ik een verkeerde postcode invoer krijg ik netjes de melding foute postcode. dus ergens gaat het de goede kant op.

Maar wanneer ik met de tab ga van postcode naar nummer en vul dan huisnummer in kies TAB of ENTER gebeurd er niks. geen foutmelding, geen fout in de VBA maar helaas ook geen adres gegevens in de gecodeerde velden

Mijn vraag is waar kan het aan liggen. Nu komt het overgrote deel van de info uit de [tblLeerling] en haalt hij voor deze actie de gegevens uit de drie tabellen zoals in het voorbeeld bestand zaten. Is dit de fout??

Ergens staat het mij bij dat je maar 1 tabel kan gebruiken, maar hoe los ik dit dan op. Moet ik mijn adres gegevens in een subform in dit formulier proppen of kan het makkelijker?
 
Ik gebruik (bijna) dezelfde code en bij mij werkt het gewoon. Ik gebruik wel een specifiekere declaratie omdat ik ook ADO gebruik, naast DAO, dus wellicht licht daar het probleem. Je kunt dit nog proberen:
Code:
Dim Adres As DAO.Recordset
En zet eens een onderbrekingspunt in de code, om te kijken of hij überhaupt wel loopt.
 
Ik heb een onderbreking geplaatst en dan zegt hij kan de method/gegevens lid niet vinden??

Jouw stukje code gebruikt bij het veld [Nummer]

Code:
Private Sub Nummer_AfterUpdate()
Dim Adres As DAO.Recordset
Dim sqlZ As String
Dim srt1 As Byte
Dim srt2 As Byte

met de rest te laten staan natuurlijk alleen de tweede regel vervangen met jouw regel
 
Een onderbrekingspunt doet in beginsel niks met foutmeldingen; die komt dan wellicht doordat de DAO bibliotheek niet is geladen. Je kunt de db nog eens compileren, om te zien of er nog andere fouten inzitten. En controleer je bibliotheken; mijn eigen ervaring is dat je de DAO bibliotheek het beste als laatste kunt laden, dus eerst de ADO bibliotheek, en dan pas DAO. Zelf heb ik 'm consequent als laatste staan, omdat ik tè vaak mijn hooft heb gestoten aan niet-werkende formulieren. En dat bleek dan opgelost door de laadvolgorde aan te passen. Al zullen een aantal mensen zeggen dat die volgorde helemaal niks uit mag maken, en dat ze er zelf nooit problemen mee hebben.
Maar compileren geeft dus in ieder geval een beter inzicht in wat er allemaal fout kan zijn in de code. Ik neem aan dat de simpelste verklaring (tekstveld Nummer heet anders) niet opgaat?
 
Beste Michel,

mijn eigen ervaring is dat je de DAO bibliotheek het beste als laatste kunt laden, dus eerst de ADO bibliotheek, en dan pas DAO. Zelf heb ik 'm consequent als laatste staan

Ik probeer trouw van iedere post te leren door de woorden te googlen en het forum uit te spitten op zoek termen.

Maar nu ben je me even kwijt. Kun je mij helpen aan een uitleg over bovenstaande. of een voorbeeldje geven wat ik moet doen.

Dit over de bibliotheek kan ik even niet volgen.

Alvast bedankt.

Martijn
 
In het VBA venster kun je in <Extra>, <Verwijzingen> bibliotheken laden die je nodig hebt voor een project. Standaard staat daar de Access bibliotheek aangevinkt, en wellicht nog wel een paar. Ik heb in een project bijvoorbeeld de bibliotheken aan staan in bijgaand plaatje.
 

Bijlagen

  • Verwijzingen.png
    Verwijzingen.png
    11,2 KB · Weergaven: 72
Yes, Ado 2.8 aangezet en toen zag ik de code vastlopen, een typefout in me.plaats moest zijn Me.Plaats...

Nu vraag ik me af Michel, kan ik deze ook uitbreiden met de netnummers gekoppeld aan de postcode gebieden, weet jij toevallig hoe dat zit. Ik ben namelijk voor automatiseren wat er te automatiseren valt.

dus als ik postcode en woonplaats weet, weet ik ook het netnummer voor de telefoon, graag zou ik deze alvast ingevuld hebben ??
 
Vreemd dat het omzetten van de hoofdletter je probleem oplost, want de code is niet hoofdlettergevoelig... Wellicht is jouw pc wat strenger dan die van mij :)

Je tweede vraag is simpel op te lossen met een extra veld in de tabel [plaats]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan