Neuigkeiten:

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

Mobiles Hauptmenü

Zum ausgewählten Datensatz aus einem Formular in einem anderen springen

Begonnen von zorlayan, Januar 10, 2022, 14:59:25

⏪ vorheriges - nächstes ⏩

zorlayan

Hallo zusammen,

ich habe 2 Formular.
Das erste ist Hauptformular (Rechnung), zweite ist aus einer Abfrage (Ubersicht) in dem die gefilterte daten angezeigt werden.

Hauptformular (Rechnung): z.B.

Datensatz1:
Rechnungsnummer: 2022001
WIN-Nr: ABC1234567890
Rechnungsstatus: Storniert

Datensatz2:
Rechnungsnummer: 2022003
WIN-Nr: ABC12345676890
Rechnungsstatus: Gültig

...

2.Formular (Ubersicht): z.B. (aus Abfrage) (gefiltert nach Win-Nr.)

Rechnungsnummer |    Win-Nr:           |  Rechnungsstatus
2022001         | ABC1234567890        | Storniert
2022003         | ABC1234567890        | Gültig


Code aus zweiten Formular für Doppelklick:

Private Sub RechNr_DblClick(Cancel As Integer)
On Error GoTo Err
Dim WinNr As String
WinNr = Me.AutoWIN

DoCmd.Close
If IstFormularGeoeffnet("Rechnung") = True Then
Forms!Rechnung.SetFocus
Call Forms("Rechnung").Suchen_Click

Else

DoCmd.OpenForm ("Rechnung"), acNormal
Call Forms("Rechnung").Suchen_Click
End If
Exit_cmd:
Exit Sub

Err:
MsgBox Err.Description
Resume Exit_cmd

End Sub

und weitergeleiteten Code aus dem Hauptformular (Rechnung) sieht so aus:

Public Sub Suchen_Click()

On Error GoTo Err
'Nach RechNr Suche
If Not IsNull(Me.SuchText) Then
With Me.Recordset
        .FindFirst "RechNr=" & Me.SuchText
                'If Me.AllowEdits Then
                'Me.AllowEdits = False
                'End If
    If Me.Recordset.NoMatch Then
        MsgBox "Rechnungsnummer existiert nicht, bitte überprüfen!", vbOKOnly
        Me.SuchText.SetFocus
        'Me.AllowEdits = True
    End If
End With
End If
'Nach WIN Suche
If Not IsNull(Me.SuchWIN) Then
    With Me.Recordset
        .FindFirst "AutoWIN= '" & Me.SuchWIN & "'"
                'If Me.AllowEdits Then
                'Me.AllowEdits = False
                'End If
    If Me.Recordset.NoMatch Then
        MsgBox "WIN-Nummer existiert nicht, bitte überprüfen!"
        Me.SuchWIN.SetFocus
        Me.AllowEdits = True
    End If
End With
End If
'Ausgang
Exit_cmd:
 Exit Sub
'Fehlermeldung
Err:
 MsgBox Err.Description
 MsgBox "Eingabe überprüfen!", vbOKOnly
 Resume Exit_cmd

End Sub

Problem: im Hauptformular wird immer nur erste gefundene Datensatz angezeigt (findFirst) in unserem Fall die Datensätze von der (stornierten)Rechnung 2022001 angezeigt aber ich möchte eigentlich die Datensätze von der Rechnung 2022003 sehen.

wie können wir dieses Problem lösen?

Vielen Dank im Voraus.

DF6GL

Hallo,

etwas "unüblich", dieser Aufbau und der Code.

Wenn Du eine bestimme Rechnung finden willst, muss eben nach der Rechnungsnummer, bzw. deren RechnID gesucht werden....



Beaker s.a.

Hallo,Franz
@
ZitatWenn Du eine bestimme Rechnung finden willst, muss eben nach der Rechnungsnummer, bzw. deren RechnID gesucht werden....
Es gibt wohl zu einer WINNr mehrere Rechnungen. Da ist der Filter auf diese Nr schon richtig.

@zorlayan
Wozu der ganze Code nötig ist erschliesst sich mir nicht, mal ganz davon abgesehen, dass man keine
Ereignisprozeduren ohne Ereignis auslöst.
Alles was du brauchst ist das Öffnen von Formular2 aus Formular1 heraus mit dem entsprechenden
Filter
Private Sub RechNr_DblClick(Cancel As Integer)
Dim WinNr As String
WinNr = Me.AutoWIN

DoCmd.Close 'ob das Sinn macht?
DoCmd.OpenForm _
    FormName:="Uebersicht", _
    WhereCondition:="AutoWIN = '" & WinNr & "'"
End Sub
Weitere Parameter der Methode musst du in der OH nachlesen und ggfls. ergänzen.
Analog funzt das so natürlich auch mit der Rechnungsnr, und du könntest hier auch
vorher noch prüfen ob der Filter überhaupt DS zurückgibt; - DCount() wäre die Funktion
meiner Wahl.

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)

DF6GL

Hallo,

Zitataber ich möchte eigentlich die Datensätze von der Rechnung 2022003 sehen.


was soll man weiter dazu sagen?



Vielleicht stellt er mal seinen Tabellenaufbau vor (wie immer einen Screenshot des Beziehungsfensters) und erklärt genau, was er finden/anzeigen will.

Code und Formulare sind dafür erst mal unerheblich.