Funktion, die bei Eingabe der PLZ den Wohnort liefert

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Werner
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 118
Registriert: Sa, 18. Mär 2006 16:08

Funktion, die bei Eingabe der PLZ den Wohnort liefert

Beitrag von Werner »

Hi!

Ich habe eine ganz profane Frage: Mit welcher function oder procedure könnte ich bei Eingabe der Postleitzahl den dazugehörigen Wohnort geliefert bekommen, wenn die entsprechenden Daten auf einer .DBF-Datei vorhanden wären?

Gruß Werner
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Funktion, die bei Eingabe der PLZ den Wohnort liefert

Beitrag von Wolfgang Ciriack »

Wenn du eine Datenbank (alias myplz) mit den Felder PLZ und Ort hast, einen Index (angenommen mal Index 1) auf die Postleitzahl setzen, dann mit

Code: Alles auswählen

if plzdbf->(DbSeek(myplz, .F., 1))
   return plzdbf->ort
else
  return ""
endif
Oder meintest du etwas anderes ?
Viele Grüße
Wolfgang
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Funktion, die bei Eingabe der PLZ den Wohnort liefert

Beitrag von georg »

Hallo, Werner -


Du könntest den :keyboard-Callback-Slot des XbpSLE verwenden, um mit Eingabe der einzelnen Ziffern eine Liste der PLZ-Orts-Kombination anzuzeigen. Oder, wenn das XbpSLE verlassen wird, über editBuffer die Eingabe abgreifen und damit in der entsprechenden DBF suchen.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Funktion, die bei Eingabe der PLZ den Wohnort liefert

Beitrag von brandelh »

Ich mach bei diesen Sachen einen PushButton dahinter, der nach dem Anklicken sucht.

Die automatischen Suchen haben das Problem, dass es sehr störend sein kann wenn die Suche zu lange dauert und ohne Browser darunter macht die Suche nach den ersten Stellen auch keinen Sinn.
Man kann natürlich auf Set und Lostfocus gehen, aber den kann man auch mit 4 Zeichen verlieren und dann bringt die Suche nicht wirklich was.
Außerdem, denkt man an Touch und GUI ist ein Button immer besser als was anderes.
Solche Buttons davor nutze ich z.B. für Auswahllisten anzeigen oder auch Verzeichnisauswahl, Caption "..."
Oder für schnelles Einfügen aus der Zwischenablage "<" oder Kopieren in die Zwischenablage ("C") 24 x 24 Pixel reichen meist.
Gruß
Hubert
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Re: Funktion, die bei Eingabe der PLZ den Wohnort liefert

Beitrag von Wolfgang_B »

wobei es natürlich pro Ort event. mehrere Plz geben kann ...
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Leon
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 118
Registriert: Mi, 28. Nov 2007 12:48
Wohnort: Wien
Hat sich bedankt: 5 Mal
Kontaktdaten:

Re: Funktion, die bei Eingabe der PLZ den Wohnort liefert

Beitrag von Leon »

Wolfgang_B hat geschrieben: Mi, 17. Mär 2021 12:38 wobei es natürlich pro Ort event. mehrere Plz geben kann ...
Aber nur einen Ort bei PLZ als Suchkriterium...
Gruß aus Wien
Leon
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Funktion, die bei Eingabe der PLZ den Wohnort liefert

Beitrag von Martin Altmann »

Das ist so auch nicht korrekt!
In D gab es mal (oder gibt es noch immer) für eine PLZ drei verschiedene Orte

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Funktion, die bei Eingabe der PLZ den Wohnort liefert

Beitrag von Martin Altmann »

In Hessen z.B. 35094 - da gibt es zwei Orte.
Es gibt auch einen Ort mit einer deutschen und mit einer schweizerischen PLZ: Büsingen am Hochrhein

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Funktion, die bei Eingabe der PLZ den Wohnort liefert

Beitrag von brandelh »

Martin Altmann hat geschrieben: Mi, 17. Mär 2021 13:01 Das ist so auch nicht korrekt!
In D gab es mal (oder gibt es noch immer) für eine PLZ drei verschiedene Orte

Viele Grüße,
Martin
76726 zum Beispiel (meine) ....

76726 Germersheim ist richtig, aber es gibt noch ... Gut Altbrand, 76726 Germersheim => oft abgekürzt, also
76726 Altbrand - und das wird dann sortiert als erster Treffer angezeigt und teilweise übernommen, SEHR ÄRGERLICH :roll:
76726 Vorwerk Fiedrich => genauer "Am Vorwerk Friedrich", 76726 Germersheim

das eine ist ein Aussiedler Bauernhof irgendwo südlich vor dem Vorort, das andere die Straße der Straßenmeisterei, ehemals eine Vorfestung der Festung Germersheim.

Warum man die überhaupt aufnimmt ist mir schleierhaft, sind ja alle gleich, aber egal. Einfache Übernahme geht also gar nicht, wenn schon dann mit Auswahlliste.

Aber es geht tatsächlich noch schlimmer.

Vor Jahren wollte ich meinem Arbeitskollegen für sein neues Haus einen 1&1 Vertrag vermitteln, aber die Straße "gibt es nicht", übersetzt da kannst du nicht wohnen und schon gar kein Internet bekommen

Man kann es mit der Plausis auch übertreiben und seine Kunden verprellen, er ging dann zur Telekom, die Post brauchte seine Briefe ja auch schon.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Funktion, die bei Eingabe der PLZ den Wohnort liefert

Beitrag von brandelh »

Leon hat geschrieben: Mi, 17. Mär 2021 12:57
Wolfgang_B hat geschrieben: Mi, 17. Mär 2021 12:38 wobei es natürlich pro Ort event. mehrere Plz geben kann ...
Aber nur einen Ort bei PLZ als Suchkriterium...
zumindest für Deutschland stimmt das nicht, viele kleine Gemeinden sind auch auf eine PLZ zusammen gelegt worden.
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Funktion, die bei Eingabe der PLZ den Wohnort liefert

Beitrag von Koverhage »

Ich mache das so (ist halt mit Express++)

Code: Alles auswählen

function r_obez(tland, tplz, tort)
Local nPointer := 1, lOk := NO, lRetCode := FALSE, GetList := {}, aOrte := {}, oBrowse, GetOptions :={}, act_rec := 0

Local mess_41 := 'Plz', ;
      mess_42 := 'Ort', ;
      mess_43 := 'Auskunft Ortsbezeichnungen'

Local aPres := ;
  {{XBP_PP_COL_DA_FGCLR, GRA_CLR_BLACK },           /* Row FG Color  */      ;
    {XBP_PP_COL_DA_BGCLR, GRA_CLR_PALEGRAY },        /* Row BG Color  */      ;
    {XBP_PP_COL_DA_HILITE_FGCLR, GRA_CLR_BLACK },    /* Cursor FG Color  */  ;
    {XBP_PP_COL_DA_HILITE_BGCLR, GraMakeRGBColor({171,203,241}) }   /* Cursor BG Color  */  ;
  }

if tland = "D " .or. empty(tland)
   tland := "D "
   po->(dbseek(tland+strzero(tplz, 5)))
else
   po->(dbseek(tland+ltrim(str(tplz, 5))))
endif
if po->(found()) .and. !po->(deleted())
   act_rec := po->(recno())
   po->(dbskip())
   if po->plz # strzero(tplz,5)
      po->(dbgoto(act_rec))
      &tort := po->ort
   else
      po->(dbgoto(act_rec))
      do while TRUE
         if po->plz # strzero(tplz,5)
            exit
         endif
         aadd(aOrte, { po->plz, po->ort})
         po->(dbskip())
      enddo
      if len(aOrte) < 1
         return TRUE
      endif
      @ 0,0 DCBROWSE oBrowse DATA aOrte SIZE 20,15 ;
            POINTER nPointer PRESENTATION aPres COLOR { |o| Zebra(oBrowse) } ;
            ITEMSELECTED {||DC_ReadGuiEvent(DCGUI_EXIT_OK,GetList) }

      DCSETPARENT oBrowse

      DCBROWSECOL ELEMENT 1 HEADER mess_41
      DCBROWSECOL ELEMENT 2 HEADER mess_42 ;
                  PICTURE 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

      DCSETPARENT TO

      DCHOTKEY xbeK_F1 ACTION { || my_help(dc_getactiveinfo(GetList)) }            // F1
      DCHOTKEY xbeK_F12 ACTION { || DC_ReadGuiEvent(DCGUI_EXIT_OK, GetList) } // F12

      DCGETOPTIONS BUTTONALIGN DCGUI_BUTTONALIGN_CENTER ;
                   COLORGETS {{GRA_CLR_BLACK,GRA_CLR_YELLOW}} ;
                   ROWOFFSET fi->zeiloff

      DCREAD GUI OPTIONS GetOptions FIT ADDBUTTONS MODAL SETAPPWINDOW to lOk ;
             TITLE mess_43 EVAL {|o|SetAppFocus(oBrowse:GetColumn(1))}
      if lOk
         if nPointer > 0
            &tort := aOrte[ nPointer, 2 ]
         endif
      endif

   endif
   lRetCode := TRUE
endif
return lRetCode
Gruß
Klaus
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Funktion, die bei Eingabe der PLZ den Wohnort liefert

Beitrag von Herbert »

In der CH gibts eine offizielle PLZ-Ortliste. Die Orte mit mehreren Plz sind in entsprechenden %-Anteilen der Gemeindefläche angegeben (ein Weiler des Ortes x kann zur Plz des Nachbarortes y gehören).
Wir zeigen bei Mehrfachnennungen eine kleine Combobox an mit allen beteiligten Orten. Will man das nicht, wird diejenige Ortschaft angezeigt, welche über 50% der Ortsfläche belegt.
Knifflig sind aber auch fixe Postfach-Plz, welche man bei einer Suche nicht berücksichtigen sollte.
Auch muss diese Liste stets aktualisiert werden, da die Gemeinden fusiniert werden und ie Post die Postkreise anpassen kann.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Funktion, die bei Eingabe der PLZ den Wohnort liefert

Beitrag von brandelh »

eine "offizielle" Liste hätten wir uns auch gewünscht.

Als in D von 4 auf 5 umgestellt wurde, hat die EDV PLZ/Ort/Straße Infos gekauft, ist aber ewig her ... nach deiner Anregung hab ich nun bei uns nach sowas gesucht und siehe da:

https://www.suche-postleitzahl.org/downloads
Gruß
Hubert
Antworten