collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 105
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 14809
  • stats Beiträge insgesamt: 76028
  • stats Themen insgesamt: 10230
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 933

Autor Thema: Kombifeld für PLZ - MsgBox für Werte die es in der Liste nicht gibt  (Gelesen 322 mal)

Offline herb54

  • Access-Profi
  • **
  • Beiträge: 123
Hallo zusammen,
ich habe eine Postleitzahlentabelle importiert als tblPLZ. Diese enthält folgende Felder: ID, PLZIDRef, PLZ, Ort, Bundesland. Eine Auswahlabfrage (qryPLZ) erzeugt mir aus dieser Tabelle die Felder PLZ, Ort, Bundesland.
In einem Formular, welches als Datensatzquelle mit einer Adresstabelle verknüpft ist, gebe ich Adressen ein.
Ein Kombifeld des Formulars schreibt mir über Anwahl mit der Maus (Ereignis: Nach Aktualisierung) oder über die Tastatur (Beim Verlassen) über:
Me!PLZ = Me!cmbPLZ.Column(0) und Me!Ort = Me!cmbPLZ.Coumn(1) die Postleitzahl und den dazugehörigen Ort in die entsprechenden Felder der Adresstabelle.
Wie fange ich jedoch fehlerhafte Eingaben von Postleitzahlen ab die es nicht gibt in der Tabelle tblPLZ? Die NotInList Eigenschaft beschäftigt sich ja offensichtlich nur darum solche Einträge anzufügen, was ich aber gar nicht möchte. Mein Ziel wäre es nur mit Anzeige einer MsgBox darauf aufmerksam zu machen, dass es diese PLZ nicht gibt.
Im Voraus vielen Dank!
Grüße
Herbert
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 24505
Hallo,

was meinst Du mit "Abfangen"?

Wenn Du in die Adresstabelle die PLZ durch Auswahl in einem neuem DS eingibst, gibt es die dazugehörenden Orte..


Oder ist das ein nachträglicher Vorgang, in vorhandene Adressen zusätzlich zu den  Orten die PLZ einzutragen?

Wenn es in einem solchen Fall keinen Ort/Plz in der tblPLZ gibt, so muss mit dem Kombifeld-Ereignis "Bei nicht in Liste" zunächst diese neue Kombination in tblPLZ eigetragen werden.

Btw: Für denselben Ort kann es mehrere PLZ geben...

Was willst Du genau erreichen?

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 8524
Hallo,
Zitat
Auswahlabfrage (qryPLZ) erzeugt mir aus dieser Tabelle die Felder PLZ, Ort, Bundesland.
Die Abfrage sollte auch die ID beinhalten.

Zitat
die Postleitzahl und den dazugehörigen Ort in die entsprechenden Felder der Adresstabelle.
In die Adresstabelle gehört dann nur diese ID, sonst keine weiteren Felder, weder der Ort noch die PLZ.
Beides erhältst Du dann einfach über eine Abfrage mit der tblPLZ und der Adresstabelle mit einer Verknüpfung über die ID.
Gruß
Klaus
 
Folgende Mitglieder bedankten sich: herb54

Offline herb54

  • Access-Profi
  • **
  • Beiträge: 123
Hallo Franz,

das Kombifeld dient als Hilfe beim Ausfüllen der Adresstabelle (mit Eingabe der PLZ im Kombifeld werden PLZ und Ort automatisch übertragen). Jetzt gibt es die Möglichkeit, dass eine Eingabe erfolgt, für die es keine Postleitzahl gibt (Beispiel: 99999 - ich weiß ist ein blödes Beispiel). Momentan ist es so, dass dann diese falsche Zahl einfach  im Feld steht aber der Ort nicht eingesetzt wird. Es wäre einfach super, wenn bei Eingabe einer PLZ die es in der Tabelle tlbPLZ nicht gibt mit einer MsgBox darauf hingewiesen wird.
Grüße
Herbert
 

Offline herb54

  • Access-Profi
  • **
  • Beiträge: 123
Hallo Klaus,

könnte dies nicht auch über eine Beziehung mit referentieller Integrität zwischen tblPLZ und qryPLZ erfolgen (Verknüpfung über ID)?

Gruß
Herbert
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 8524
Hallo,
dass dann diese falsche Zahl einfach  im Feld steht aber der Ort nicht eingesetzt wird.
Wo soll denn der Ort herkommen, wenn es eine falsch PLZ ist ?

Siehe auch mein vorheriger Beitrag.

Gruß
Klaus
 
Folgende Mitglieder bedankten sich: herb54

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 24505
Hallo,

wenn die Kombis bei "Nur Listeneinträge" mit  "Nein" definiert sind, kann in die Kombifelder eingegeben werden, was man möchte...

Soll heißen, wenn die Tabellen nicht vernünftig (normalisiert) aufgebaut und in Beziehung gesetzt werden, ähnelt das Ganze eher einem Notizblock denn einer DB...

Offline PhilS

  • Global Moderator
  • Access-Meister
  • *****
  • Beiträge: 781
    • Tipps zu Access, VBA, SQL und Co.
Postleitzahlen, Orte und Straßen stehen in der Theorie in einer schönen M:N-Beziehung, die man als Datenbankentwickler sauber ausmodellieren und somit nur "gültige" Eingaben zulassen kann.

In der Praxis sieht das oft anders aus. Sowohl Änderungen in der o.g. Zuordnungslogik seitens der jeweiligen Post als auch physische, z.B. straßenbauliche, Änderungen werden in solchen Datenbeständen oft nicht zeitnah abgebildet.

Wenn man eine korrekte Adresse erfassen möchte, die laut der Logik der Anwendung nicht gültig und somit unzulässig ist, ist das extremst ärgerlich. - Eigene Erfahrung! - Der hier geschmähte "Notizblock" wäre da eine Wohltat!
Wie fange ich jedoch fehlerhafte Eingaben von Postleitzahlen ab die es nicht gibt in der Tabelle tblPLZ? Die NotInList Eigenschaft beschäftigt sich ja offensichtlich nur darum solche Einträge anzufügen, was ich aber gar nicht möchte. Mein Ziel wäre es nur mit Anzeige einer MsgBox darauf aufmerksam zu machen, dass es diese PLZ nicht gibt.
Wenn du nur die PLZ in deinem DropDown anzeigen/auswählen lässt, ohne zusätzliche Schlüsselspalte (das würde ich empfehlen (s.o.)), dann kannst du den folgenden Code verwenden.

Private Sub Combo0_AfterUpdate()

    If Not CBool(Nz(Me.Combo0.Column(0), "") = Me.Combo0.Value) Then
        MsgBox "Eintrag gibt es nicht"
    End If

End Sub

Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!
 
Folgende Mitglieder bedankten sich: herb54

Offline herb54

  • Access-Profi
  • **
  • Beiträge: 123
Hallo PhilS,

hatte leider mit deinem Code eine Fehlermeldung: "Unzulässige Verwendung von Null". Ich habe den Code jetzt etwas angepasst und so läuft er einwandfrei und gibt die MsgBox-Fehlermeldung aus:

Private Sub cmbPLZ_AfterUpdate()
Me!PLZ = Me!cmbPLZ.Column(0)
Me!Ort = Me!cmbPLZ.Column(1)
  If IsNull(Me.cmbPLZ.Column(0)) Then
        MsgBox "Eintrag gibt es nicht"
    End If
End Sub

Ich kann dir bezüglich der Problematik mit Straßennamen recht geben: Laut Google gibt es meine Hausnummer nicht d.h. ich muss immer die Nummer meines Nachbarn eingeben. Ich habe die gleiche Nummer wie er nur mit dem Zusatz "C".
Irgendwie seltsam, wenn man in älteren Access Büchern nachschaut wird die komplette Adresse (Name, Vorname, Straße, PLZ, Ort usw.) in einer Tabelle erfasst. Scheinbar hat man es damals mit der Normalisierung noch nicht ganz so genau genommen.
Vielen Dank für deine Info!
Grüße
Herbert
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 2429
Hallo Herbert,
Wenn der Code in der Reihenfolge funzt, ist "Me!PLZ" aber auch NULL. IMO gehören
die beiden ersten Zeilen in einen Else-Zweig des If-Konstrukts
Private Sub cmbPLZ_AfterUpdate()
    If IsNull(Me.cmbPLZ.Column(0)) Then
        MsgBox "Eintrag gibt es nicht"
    Else
        Me!PLZ = Me!cmbPLZ.Column(0)
        Me!Ort = Me!cmbPLZ.Column(1)
    End If
End Sub
Zitat
Laut Google gibt es meine Hausnummer nicht
Google ist dafür auch keine Referenz, das sind nur die Leitdaten der Post (DHL).
Aber auch da gibt es keine Zusätze bei den Hausnummern. Die werden dort bei
ungeteilten Strassen gar nicht angegeben (HNRTYP = "N"). Bei geteilten
Strassen werden die Nummern der Abschnitte in zwei Feldern (von/bis) angegeben,
und der HNRTYP ist "U" (ungerade) oder "G" (gerade).
Zitat
komplette Adresse (Name, Vorname, Straße, PLZ, Ort
Ausser den Namen*) würde ich eine Adresse auch immer komplett mit den Klartexten
abspeichern, da es in den PLZleitdaten auch Änderungen geben kann (Strassenabschnitte
verschieben sich, Orte werden eingemeindet). Die Redundanz nehme ich in dem Fall in Kauf.
*) Die Adressen bekommen einen FK auf die Person, so dass ich beliebig viele Adressen
zu ihr anlegen kann. Wichtig z.B. für Rechnungen, die sich ja nicht verändern dürfen.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 
Folgende Mitglieder bedankten sich: herb54

Offline PhilS

  • Global Moderator
  • Access-Meister
  • *****
  • Beiträge: 781
    • Tipps zu Access, VBA, SQL und Co.
Re: Kombifeld für PLZ - MsgBox für Werte die es in der Liste nicht gibt
« Antwort #10 am: März 05, 2020, 08:56:41 »
hatte leider mit deinem Code eine Fehlermeldung: "Unzulässige Verwendung von Null".
Das hängt vermutlich damit zusammen, dass deine ComboBox zwei Spalten hat. Ich bin von nur einer Spalte ausgegangen und hatte diesen Fall (so meine ich) explizit behandelt.

Irgendwie seltsam, wenn man in älteren Access Büchern nachschaut wird die komplette Adresse (Name, Vorname, Straße, PLZ, Ort usw.) in einer Tabelle erfasst. Scheinbar hat man es damals mit der Normalisierung noch nicht ganz so genau genommen.
Aus meiner Sicht kann man im Kontext von Adressen keine pauschalen Normalisierungsregeln vorgeben. Das hängt immer von den Anforderungen und dem Zweck der Anwendung ab (z.B. eine Person mit mehreren Adressen). Bzgl. PLZ/Ort/Str kann man, wie bereits erwähnt, theoretisch normalisieren, aber da die Grunddaten von externen Einflüssen bestimmt werden, ist das aus meiner Sicht i.d.R. nicht sinnvoll.
Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!
 
Folgende Mitglieder bedankten sich: herb54

Offline herb54

  • Access-Profi
  • **
  • Beiträge: 123
Re: Kombifeld für PLZ - MsgBox für Werte die es in der Liste nicht gibt
« Antwort #11 am: März 05, 2020, 17:02:36 »
Hallo,
Dank an alle die mir hier geholfen haben! Mein Problem wurde gelöst, und ich habe wieder einiges Neues erfahren. Bei Access lernt man nie aus und es ist toll, dass man hier von euch geholfen bekommt!
Grüße
Herbert
 

 

Kombifeld füttert Kombifeld mit definierten Werten

Begonnen von accessundichBoard Access Programmierung

Antworten: 15
Aufrufe: 11117
Letzter Beitrag Januar 24, 2011, 11:52:33
von crbb
Speichern von Inhalten aus Formular mit kombifeld

Begonnen von thomutBoard Tabelle/Abfrage

Antworten: 5
Aufrufe: 4852
Letzter Beitrag Mai 31, 2010, 20:15:12
von database
Filter erstellen für Datum-Kombifeld

Begonnen von T417Board Formular

Antworten: 16
Aufrufe: 11789
Letzter Beitrag Juli 13, 2010, 15:23:39
von T417
Neuen Eintrag im Kombifeld automatisch auswählen?

Begonnen von FreddaBoard Formular

Antworten: 2
Aufrufe: 2790
Letzter Beitrag August 18, 2010, 00:19:12
von Fredda
Wert aus Kombifeld übernehmen

Begonnen von Martin_8Board Formular

Antworten: 6
Aufrufe: 4636
Letzter Beitrag September 14, 2010, 12:50:52
von Martin_8

Advertisment / Werbung - Amazon Affiliate Links