Neuigkeiten:

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

Mobiles Hauptmenü

ButtonClick -> Inputbox Suchbegriff -> Formular öffnen -> Datensatz suchen

Begonnen von simon1987, März 08, 2013, 11:09:19

⏪ vorheriges - nächstes ⏩

simon1987

Hallo liebe Forummitglieder,

ich habe mal wieder ein kleines Problem. Ich hoffe es gibt da eine schnelle unkomplizierte Lösung.

Ich habe in einem Formular "Start" einen Button, der bei Click eine Inputbox öffnen soll. Dort soll dann ein Suchbegriff (z.B. ER123) eingegeben werden. Dann soll ein anderes Formular "Wareneingang" aufgerufen werden und der Datensatz geöffnet werden, wo in dem Textfeld "ERNr" der Suchbegriff steht.

Also eine Inputbox und den Inhalt auf einen Speicherplatz verweisen ist kein Problem. :D

Ich bräuchte nur den Befehl, der das neue Formular öffnet und den Suchbegriff (auf dem Speicherplatz) mit der Textbox vergleicht.

P.S. Habe unter diesem Link schon einen Ansatz gefunden...
http://www.access-o-mania.de/index.php?ind=tipps&op=entry_view&iden=80
allerdings krieg ichs nicht so ganz auf mein Problem umgemünzt.

DANKE für Eure Hilfe!!

Grüße
Simon

Kladdi

Hallo,

DoCmd.Close acForm, "Startseite"     ---> schließt die Startformular
DoCmd.OpenForm "Wareneingang"       ---> öffnet neues Formular "Wareneingang"

Vermutlich wird ja deine InputBox so aussehen...

strWert = InputBox("what you want to search:")

Und der Vergleich sollte -vorrausgesetzt ich habs richtig verstanden- so funktionieren

If strWert = Me.textfeld1.value Then
MsgBox ("Wert gefunden")
Else
MsgBox("Wert nicht gefunden")
End If


Mfg Kladdi

simon1987

OK...

also hier der Code:

Private Sub Befehl4_Click()
    Dim search As String
    search = InputBox("Bitte geben Sie die Nummer der Eingangsrechnung ein." & Chr(13) & "Form: ER###", "ER-Nr. eingeben")
   
    DoCmd.OpenForm "Wareneingang"
   
   
End Sub

jetzt soll der wert, der unter search gespeichert ist,
mit dem textfeld, welches ERNr heißt, verglichen werden
und es soll der datensatz angezeigt werden, wo dies übereinstimmt

wenn ich deinen Code einfüge:

If search = Me.ERNr.Value Then
        MsgBox ("Wert gefunden")
Else
        MsgBox ("Wert nicht gefunden")
End If

Kommt "Fehler beim Kompilieren: Methode oder Datenobjekt nicht gefunden" und er markiert mir .ERNr.
das Textfeld und Steuerelement heißen aber so.. also ERNr

P.S. das Startformular soll nicht geschlossen werden...

Hast du noch eine Idee??

Vielen Dank

Grüße
Simon

simon1987

Ich habs hinbekommen!!!

der Code ist:

    Dim strWert As String
    strWert = InputBox("Bitte geben Sie die Nummer der Eingangsrechnung ein." & Chr(13) & "Form: ER###", "ER-Nr. eingeben")
   
    DoCmd.OpenForm "Wareneingang"
    If strWert <> "" Then
        Me.Filter = "ERNr = '" & strWert & "'"
        Me.FilterOn = True
    Else
        MsgBox "Keine Eingabe"
    End If
   
End Sub

Vielen Dank für deine Hilfe!!

Grüße
Simon

simon1987

Ok, hab mich geirrt...

er öffnet mir das Formular, aber nicht den Datensatz den ich in der Suche eingeben habe

:-\ :-\ :-\ :-\ *frust*


database

Hallo,

auf welchem Formular befindet sich das Feld?

mit ... Me.Filter = "ERNr='" & strWert & "'"

... beziehst du dich auf das aktuelle Formular - also jenes von dem du aus das Formular Wareneingang aufrufst.

Öffne doch das Form und gib dem die WHERE-Klausel mit


If strWert <> "" Then
       DoCmd.OpenForm "Wareneingang",,,"ERNr='" & strWert & "'"
   Else
       MsgBox "Keine Eingabe"
   End If



simon1987

Gut, mit der Suche funktioniert das soweit SUPER.. vielen Dank!

Ein Problem ist noch,
wenn er die Eingabe nicht findet, soll er die unten angebene Message Box öffnen und das Formular Wareneingang schließen...


Hier der Code:

    Dim strWert As String
    strWert = InputBox("Bitte geben Sie die Nummer der Eingangsrechnung ein." & Chr(13) & "Form: ER###", "ER-Nr. eingeben")
   
    If strWert <> "" Then
        DoCmd.OpenForm "Wareneingang", , , "ERNr = '" & strWert & "'"
    Else
        MsgBox "Rechnung nicht gefunden oder keine Eingabe."
'       DoCmd.Close acForm, "Warenausgang"
    End If


DANKE!!
Grüße
Simon

database

  naja,  da gäbe es ntürlich schon noch andere Möglichkeiten...

du könntest ja an Hand des eingegebenen Suchbegriffs die entsprechende Tabelle 'befragen' ob es diese Nummer überhaupt gibt und nur dann das Form öffnen, wenn die Antwort JA lautet.


Frag doch einmal die Tabelle ab...



    Dim x as long

    x = NZ(DLookup("*","DeineTabelle","ERNr='" & strWert & "'"),0)

    If strWert <> "" Then

        If x > 0 then
            DoCmd.OpenForm "Wareneingang",,,"ERNr='" & strWert & "'"
        Else
             MsgBox "Rechnung nicht gefunden oder keine Eingabe."
        End If

    Else
        MsgBox "Keine Eingabe"
    End If




simon1987

habe warenausgang mal in wareneingang geändert... nüschts

er öffnet mir einen neuen datensatz, wenn er den suchbegriff nicht findet..

liegt, denke ich, daran, dass entweder docmd.openform befehl kommt (if else function)

ODER DoCmd.Close acForm, "Wareneingang"  <--- hier ist ja das Formular noch nicht geöffnet

hmm...

database

Hi,

sieh mal oben, ich habe den Code geändert und eine Alternative vorgeschlagen.

simon1987

er kommt mit deinem "*" in dlookup nicht klar, laufzeitfehler 3075: syntaxfehler (fehlender operator) in abfrageausdruck '*'

hmm :-/

database

Uuuuupppps... SORRY...

x = NZ(DCount("*","DeineTabelle","ERNr='" & strWert & "'"),0)

bitte diese Zeile ändern!

simon1987

SUPER !!!!!!!!!   ;D ;D ;D ;D ;D ;D

Funktioniert wie geschmiert... VIELEN VIELEN DANK!!!!

Und ein entspannendes Wochenende... :)

Grüße
Simon