Neuigkeiten:

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

Mobiles Hauptmenü

Datensuche im Unterformular

Begonnen von Rückert, März 05, 2012, 18:46:59

⏪ vorheriges - nächstes ⏩

Rückert

Hallo zusammen,

im Forum wurde folgender hilfreicher Beitrag gesendet:

Kurz zur Erläuterung meiner Daten:
- Es existiert ein Hauptformular (HF) mit Bankkontaktdaten (Name, Adresse, etc. pp)
- Es existiert ein Unterformular (UFO) mit Datensätzen zu den Sachbearbeitern der Bank (Name, Tel, Email, etc.)
- Tabellen sind über die Banken_ID (AutoWert) aus dem HF und der Banken_ID (Long) aus dem UFO miteinander verknüpft.

hier nun erstmal der von mir verwendete und von willi wipp erstellte (vielen dank!) Code :
Code: In Zwischenablage kopieren
' Menue: Extras -> Verweise Microsoft DAO 3.xx Object Library muss aktiv sein!
Option Compare Database
Option Explicit
Private mrs  As DAO.Recordset

Private Sub btnErsterAP_Click()
    Dim strFind As String
 
    With Me![Banken_UF].Form
        Set mrs = CurrentDb.OpenRecordset(.RecordSource, dbOpenSnapshot)
        strFind = "SB_Name Like '*" & Me!SB_Suche2 & "*'"
        mrs.FindFirst strFind
        If mrs.NoMatch Then                                    'nicht gefunden
            MsgBox "Der gesuchte Ansprechpartner '" & Me!SB_Suche2 & _
                   "' wurde nicht gefunden", , "Verschollen?"
            Me!btnNaechsterAP.Enabled = False
          Else                                                       'gefunden
            Me.Recordset.FindFirst "Banken_ID = " & mrs!Banken_ID
            .Recordset.FindFirst strFind
            !SB_Name.SetFocus
            Me!btnNaechsterAP.Enabled = True
        End If
    End With
End Sub

Private Sub btnNaechsterAP_Click()
    Dim strFind As String
 
    If mrs Is Nothing Then Exit Sub                        'zur Sicherheit ;-)
    With Me![Banken_UF].Form
        strFind = "SB_Name Like '*" & Me!SB_Suche2 & "*'"
        mrs.FindNext strFind
        If mrs.NoMatch Then                                    'nicht gefunden
            MsgBox "Der gesuchte Sachbearbeiter '" & Me!SB_Suche2 & _
                   "' wurde nicht gefunden", , "Das waren Alle?"
            mrs.Close: Set mrs = Nothing
            Me!btnErsterAP.SetFocus
            Me!btnNaechsterAP.Enabled = False
          Else                                                       'gefunden
         
          Me.Recordset.FindFirst "Banken_ID = " & mrs!Banken_ID
            .Recordset.FindFirst strFind
            !SB_Name.SetFocus
        End If
    End With
End Sub

Private Sub Form_Close()
    If Not (mrs Is Nothing) Then
        mrs.Close: Set mrs = Nothing
    End If
End Sub

Dazu habe ich zwei Frage. SB_Name ist die Spalte, in der im Unterformular gesucht werden soll. Frage eins, was bitte ist SB_Suche2?

Bei der Anlage der Datenbank ist der Gast und "Oma" davon ausgegangen, dass folgende Beziehung zwischen den Tabellen herrscht: Eine der beiden Tabellen hat eine Primärschlüssel und die andere hat in der Verknüpfungstabelle einen Fremdschlüssel (Zahl, Long integer). Meine Datenbank ist so aufgebaut, dass die Verknüpfungstabelle einen eigenen Primärschlüssel und die Fremdschlüssel (der beiden zu verknüpfenden Tabellen als Zahl) angelegt sind. Also der (1) Mandant wird in die (unendlich) in der MandantAuftragDetail Tabelle verknüpft, die wiederrum mit dem (1) Auftrag in (unendlich) der MandantAuftragDetail Tabelle verknüpft ist und einen eigenen Primärschlüssel besitzt. Das erscheint mir nicht richtig,  da sich beide "Verknüpfung von" und "Verknüpfung nach" Felder IFAUF auf die MandantenAUftragDetail Tabelle verknüpfen. Das ist meine zweite Frage. ::)

Sorry, ich hoffe, dass ist verständlich.

Grüße und danke vorab für Eure Antwort.

Rückert

Beaker s.a.

Hallo,
@Andreas
Ist ja nett, dass Du mich zitierst, muss allerdings sagen, das ich aus dem OP nicht so recht schlau geworden bin, und ehrlich gesagt, nicht herausfinde wie Du mein Geschreibsel hiermit in Verbindung bringst. Irgendwie scheint da eine n:m Beziehung vorzuliegen. Aber, wie gessagt, schlau geworden bin ich daraus nicht  :(

@Rückert
ZitatFrage eins, was bitte ist SB_Suche2?
1. ist das Me!SB_Suche2
2. wird das wohl das Formularfeld sein, in dem der Suchbegriff steht/stehen soll.

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)

Beaker s.a.

Hallo,
Wo ist denn Andreas' Post geblieben?
Habe jetzt den OP noch mal gelesen, und glaube jetzt es verstanden zu haben.
ZitatMeine Datenbank ist so aufgebaut, dass die Verknüpfungstabelle einen eigenen Primärschlüssel und die Fremdschlüssel (der beiden zu verknüpfenden Tabellen als Zahl) angelegt sind.
Ist IMO auch richtig so. Ich verwende in n:m Tabellen auch immer einen unabhängigen PK (Autowert).
Im UFo verwendest Du den natürlich nicht für die Verknüpfung, sondern den dem HFo (dort PK) entsprechenden Fremdschlüssel.
hth
gruss ingrid
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)

Hondo

Hallo,
ja war spaßig, hatte gleich 2 Threads auf gemacht in 2 versch. Foren und hab dann im falschen gepostet.
Habs aber dann gleich gemerkt ::)

Andreas