Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Inputbox

Begonnen von girly05, Februar 18, 2015, 12:35:04

⏪ vorheriges - nächstes ⏩

girly05

Hallo,
ich steh mal wieder auf dem Schlauch: Der Benutzer gibt über eine Inputbox eine Zahl ein und diese wird in der Variable strEingabe gespeichert. Nun soll in der tblZahl gesucht werden, ob die eingegebene Zahl bereits vorhanden ist oder nicht.
Wie ist der dazu nötige VBA-Befehl?
Danke und liebe Grüße, Girly

bahasu

Hi

Der dlookup-Befehl wird Dir helfen.

Harald

Servus

girly05

Hallo Harald,
danke für die Hilfe. Allerdings verstehe ich diesen Befehl nicht richtig. Hier mein Code:
Private Sub Zahleingabe_Click()

Dim strEingabe As String
Dim tblZahl As String
Dim x As Long

strEingabe = InputBox("Bitte Zahl eingeben und mit ENTER oder OK bestätigen:")

    x = DLookup("strEingabe", "tblZahl")
 
    If x > 0 Then
            MsgBox "Die Zahl lautet: " & strEingabe
    Else
             MsgBox "Die Zahl ist noch nicht in der Tabelle vorhanden."
    End If

End Sub

Wo ist mein Fehler?

Wurliwurm

Zitat von: girly05 am Februar 18, 2015, 14:12:14
Wo ist mein Fehler?

falsch:    x = DLookup("strEingabe", "tblZahl")
richtig:   x = DLookup(strEingabe, "tblZahl")

Mit der Zeit bekommt man einen Blick dafür :-)


girly05

Hallo Wurliwurm,
danke für Deine Hilfe. Diesen Fehler habe ich ausgemerzt und weiter herumexperimentiert.
Die entsprechende Zeile lautet nun so:
    x = DLookup(strEingabe, "tblZahl", "Zahl LIKE '" & strEingabe & "'")
Leider sagt er mir hier Laufzeitfehler 94: Unzulässige Verwendung von Null. Was bedeutet das?
LG Girly

bahasu

Hi,

Dein erstes strEingabe wird so interpretiert, dass acces nach einem Feld sucht, das als Namen den Inhalt von strEingabe hat, was es laut der Meldung aber nicht gibt.

Unter der Annahme, das "Zahl" der Name des in der Tabelle zu suchenden Feldes ist (wobei ich mir nicht sicher bin, ob Zahl zu den von access reservierten Begriffen gehört und damit besser als Bezeichnung zu vermeiden ist).

x = nz(DLookup("Zahl", "tblZahl", "Zahl LIKE '*" & strEingabe & "*'"), "")

Harald
Servus

girly05

Hallo Harald,
nochmals danke. Was bedeutet nz vor der Klammer? Soweit läuft der Code durch, allerdings glaube ich langsam, daß ich die Sache völlig falsch verstehe. Ich hatte gehofft die eingegebene Zahl mit den bereits in der Tabelle vorhandenen Zahlen vergleichen zu können (allerdings habe ich diese Zahlen in der Tabelle als Text formatiert, sollte ich vielleicht ändern) und danach eine Verzweigung hinzubekommen, je nachdem die Zahl schon vorhanden ist oder nicht. Ich vermute, ich bin da völlig falsch rangegangen.
LG Girly

MaggieMay

Hi.
ZitatWas bedeutet nz vor der Klammer?
Anklicken und F1 drücken! ;-)

ZitatNun soll in der tblZahl gesucht werden, ob die eingegebene Zahl bereits vorhanden ist oder nicht.
Die Suche mit Like (und Suchmustern) macht hier mEn keinen Sinn.

Zitatsollte ich vielleicht ändern
Ja, das solltest du wohl.
Freundliche Grüße
MaggieMay

girly05

Hallo MaggieMay,
danke für Deine Anmerkungen, ich werde in Zukunft F1 häufiger einsetzen. Trotzdem die Nachfrage: welche Suche hat dann Sinn, wenn nicht mit Like o.ä. Das Feld in der tblZahl beinhaltet z.Zt. zwar nur Zahlen, allerdings ist in Zukunft vorgesehen, daß diese Zahlen Präfixe in Form von Buchstaben erhalten, deshalb die vorsorgliche Textformatierung. Ansonsten bin ich VBA-Anfänger und für jeden Hinweis dankbar.
LG Girly

MzKlMu

Hallo,
Zitatdaß diese Zahlen Präfixe in Form von Buchstaben erhalten, deshalb die vorsorgliche Textformatierung.
dann gehört das Präfix in eine extra Spalte. Das Präfix hat ja eine Bedeutung, sonst bräuchtest Du es ja nicht. Man speichert in einer Datenbank keine 2 Werte in einem Feld.
Das  verstößt bereits gegen die 1.Normalform (atomare Inhalte).
Gruß Klaus

girly05

Hallo Klaus,
da hast Du recht, allerdings soll die Darstellung dann folgendermaßen aussehen:1234-K oder 7689-M, also ein ähnliche Prinzip wie bei den Postleitzahlen mit Länderkennung.
LG Girly

MzKlMu

Hallo,
welche Bedeutung haben denn die Buchstaben ?
Du kannst einfach ein Feld für den Buchstaben anlegen und für die Darstellung die beiden Felder zusammensetzen.
Etwa so: Zahlenfeld & "-" & Buchstaben
Je nach Bedeutung der Buchstaben kann auch eine extra Tabelle für die Buchstaben sinnvoll sein.
Gruß Klaus

girly05

Hallo Klaus,
die Buchstaben sollen mal für bestimmte Projektstände stehen.
Ich dachte, da die eingegebene Zahl in einer Variable vom Typ String gespeichert ist und das Datenfeld auch als Text deklariert ist, kommt DLookup damit klar. Muß ich die benötigte Tabelle am Anfang gesondert deklarieren oder reicht der Aufruf innerhalb DLookup. Ich werd jetzt mal in der Sauna darüber schwitzen, vielleicht kann ich dann später klarer denken.
LG Girly

MzKlMu

#13
Hallo,
Zitatdie Buchstaben sollen mal für bestimmte Projektstände stehen.
dann ist das Vorhaben bereits vom Grundsatz her falsch. Wenn zu einem Projekt die Stände überwacht werden sollen, so sind hier noch 2 weitere Tabelle notwendig. Eine Tabelle für die möglichen Projektstände und eine Verknüpfungstabelle mit Fremdschlüssel zu Projekt und Fremdschlüssel zu Status mit einem Datumsfeld. Man will ja auch festhalten, wann wurde das Projekt begonnen, wann waren welche Zwischenstände und wann wurde das Projekt beendet. Der Buchstabe hat in der eigentlichen Projekttabelle nichts verloren.

Welche Bedeutung hat denn die Zahl, warum muss diese überhaupt mit einer anderen Tabelle verglichen werden ?
Gruß Klaus

girly05

Hallo Klaus,
es ging eifach nur um die Frage, ob die eingegebene Zahl bereits in der Tabelle vorhanden ist oder nicht. Ich habe es mit einer Inputbox versucht, habe aber jetzt ein Beispiel mit einem Textfeld gefunden und dies funktioniert. Danke für Eure Unterstützung!!!
LG Girly