| |
Visual-Basic Einsteigerarray - subscript out of range | | | Autor: crosstravel | Datum: 12.11.16 15:43 |
| Hallo zusammen,
mittels split trenne ich ein Adressfeld in Strasse und Hausnummer und
speichere das Resultat in einem Array.
Fehlt nun die Hausnummer und ich spreche das Array sarray(1) an, kommt die
Fehlermeldung "subscript out of range". Wie kann ich diese Fehlermeldung ab-
fangen?
Danke für Euer Feedback
Rainer | |
Re: array - subscript out of range | | | Autor: Franki | Datum: 13.11.16 03:45 |
| Hallo Rainer,
Du kannst die Dimension des erzeugten Arrays mit Ubound(DeinArray) ermitteln und dann nur bis dahin abfragen.
Allerdings ist die Trennung von Strasse und Hausnummer bei einer Adresse mittels Split keine gute Idee, denn das trennt nach Leerzeichen sofern du nichts anderes angibst. Und sowohl Strassennamen als auch Hausnummern können Leerzeichen enthalten.
Bei z.B.: (Freiherr vom Stein Strasse 1) bringt dir das split keine Hausnummer wenn du auf (1) im Array suchst. (da steht dann "vom" drin)
Und wenn als Hausnummer z.B. (1 B) eingetragen ist, dann liefert dir das Ubound auch nur das B als Ergebnis. Grundsätzlich ist es keine gute Idee Strasse und Hausnummer per Split trennen zu wollen, besser ist es in der Datenbasis dafür getrennte Felder zu verwenden.
Gruß
Frank | |
Re: array - subscript out of range | | | Autor: crosstravel | Datum: 13.11.16 07:38 |
| Hallo Frank,
danke für deine informationen. Mit UBOUND konnte ich mein Problem,
zumindest vordergründig, lösen. Danke. Das von Dir angeführte Problem
mit den Strassennamen bereitet mit mehr sorgen. Eine Anpassung der
Datenbasis zieht einen Rattenschwanz von Anpassungen (Datenbank, Forms,
Druckprogramme usw.) mit sich. Na, mal sehen, wie und wann ich das mache.
Einen schönen Sonntag
Rainer | |
Re: array - subscript out of range | | | Autor: Franki | Datum: 14.11.16 03:31 |
| Hallo Rainer,
so viel Aufwand ist das ja nun auch wieder nicht. Datenbank: Eine zusätzliche Spalte für die Hausnummer, Form ebenfalls ein zusätzliches Eingabefeld. Die Druckroutinen müssen nur die Hausnummer hinten anfügen.
Ich habe oft mit "unqualifizierten" Datenbeständen in dieser Hinsicht zu tun. Meist schreibe ich mir dafür ein kleines Hilfsprogramm, in deinem Fall könnte das so aussehen vom Prinzip her:
Zuerst mal analysieren wie viele Adressen nicht passen.
Alle Adressen der DB durchgehen und per Split aufteilen wie du es jetzt hast.
Private Sub Form_Load()
Dim Adresse As String
Dim Kontrolltext As String
Adresse = "Freiherr vom Stein Str. 1a"
' Oder auch mit 1 a anstatt 1a
Aufteilung = Split(Adresse)
For x = 0 To UBound(Aufteilung) - 1
Kontrolltext = Kontrolltext & Aufteilung(x) & " "
Next
Kontrolltext = Trim(Kontrolltext) & "/" & Aufteilung(UBound(Aufteilung))
Debug.Print Kontrolltext
End Sub Dann brauchst du nur zu kontrollieren, ob nach dem / eine plausible Hausnummer steht. Je nach Prozentsatz der Fehler kannst du das ganze automatisieren und musst nur wenige Datensätze per Hand nachbearbeiten. Teste das mal mit deinem Datenbestand.
Gruß
Frank | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevCommand 4.0
Professionelle Schaltflächen im modernen Design!
Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|