Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

SearchForRecord in Unterformular

Begonnen von alex1737, September 23, 2017, 20:27:12

⏪ vorheriges - nächstes ⏩

alex1737

Hallo zusammen,

nach stundenlangen ausprobieren, testen sämtlicher Ansätze aus dem Netz, ändern dieser, etc. wende ich mich jetzt doch direkt mit meinem Problem an die Profis hier.

Beim Klick in das Feld ID_feld meines Formulars FOR_create_x soll sich eine InputBox öffnen, in das eine ID eingegeben werden kann, nach der dann gesucht wird und im Formular auf diesen Datensatz gesprungen wird.
Das ganze klappt auch soweit, solange ich das Formular direkt öffne.

Problem: Sobald ich das Formular in meinem Navigationsformular (Home_amx_FE1) öffne, kommt es zum Fehler.

Ich habe dann schonmal die beiden (wieder auskommentierten) .SetFocus-Zeilen eingefügt, leider ohne Erfolg

Nachfolgender Code steht im Modul

Function search_ID()
On Error GoTo search_ID_Err
    Dim Var8 As Integer

    Var8 = InputBox("gesuchte ID eingeben", "ID-Suche_amx")
   
    'Forms!Home_amx_FE1!Navigationsunterformular.SetFocus
    'Forms!Home_amx_FE1!Navigationsunterformular.Form!ID_feld.SetFocus
   
    DoCmd.SearchForRecord acForm, "FOR_create_x", acFirst, _
                          "[TAB_x].[ID_feld] =" & Var8
search_ID_Exit:
    Exit Function
search_ID_Err:
    MsgBox "Es wurde nach keiner ID gesucht. Bitte erneut in das ID-Feld klicken, ID eingeben und mit OK bestätigen", 48, "Foul_amx"
    Resume search_ID_Exit
End Function


Im Formular "FOR_create_x" rufe ich dann die oben eingefügte Funktion auf:

Private Sub ID_feld_click()
    Call search_ID
End Sub


Falls es Fragen gibt, ich die Hälfte an Infos drumherum vergessen habe, o.ä. bitte kurze Info. ;)

Herzlichen Dank im Voraus für Eure Bemühungen!

Lachtaube

Ein etwas anderer Ansatz.Private Sub search_ID()
   Dim Var8 As String
   Dim Criteria As String

   On Error GoTo search_ID_Err

   'Das ist keine intuitive Bedienung!!!
   Var8 = InputBox("gesuchte ID eingeben", "ID-Suche_amx")

   'Eingabe prüfen
   If IsNumeric(Var8) Then
      'Suchkriterium anlegen
      Criteria = BuildCriteria("ID_feld", dbLong, Var8)
     
      'im geklonten Recordset
      With Me.Recordset.Clone()
         
         'nach dem Kriterium suchen
         .FindFirst Criteria
         
         'Ergebnis prüfen
         If .NoMatch Then
            MsgBox "ID nicht gefunden."
         Else
            'Anzeige im Erfolgsfall synchronisieren
            Me.Bookmark = .Bookmark
         End If
     
      End With
     
   Else
      MsgBox "Abbruch, leere oder ungültige Eingabe."
   End If

search_ID_Exit:
   Exit Sub

search_ID_Err:
   'diese Aussage muss nicht zutreffen
   MsgBox "Es wurde nach keiner ID gesucht. Bitte erneut in das ID-Feld " & _
          "klicken, ID eingeben und mit OK bestätigen", vbExclamation, "Foul_amx"
   Resume search_ID_Exit
End Sub
Grüße von der (⌒▽⌒)

Beaker s.a.

Hallo Alex,
Zitat   'Das ist keine intuitive Bedienung!!!
   Var8 = InputBox("gesuchte ID eingeben", "ID-Suche_amx")
Dem kann ich nur zustimmen. Warum nimmst du nicht einfach ein
ungebundenes Textfeld direkt auf dem Formular?
Und wenn euer Sortiment nicht 10Tsde von Artikeln enthält vielleicht
sogar ein Kombi mit den Artikel-IDs. Das liesse sich auch noch mit
einem vorgeschaltetem Kombi (Waren-/Artikelgruppe) einschränken
(filtern).
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

alex1737

Hi ihr beiden,

vielen Dank für des Rätsels doch so einfache Lösung. Funktioniert perfekt!
In dem Fall ist ein ungebundenes Textfeld aufgrund der "usabililty" leider nicht möglich. Hinweistext kann man sicher noch besser formulieren. Aber sonst, klar. An ähnlichen anderen Stellen habe ich bereits mit ungebundenen Textfeldern gearbeitet.
Kombi ist an der Stelle aufgrund des Umfangs nicht denkbar.

Besten Dank nochmal und Gruß!
Alex