Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: accessy am November 07, 2012, 22:13:02

Titel: Grundsätzliche Frage zur SUCHE
Beitrag von: accessy am November 07, 2012, 22:13:02
Ich möchte mal eine grundsätzliche Frage zum SUCHEN stellen.
Das Stammformular heißt KUNDEN.
Das eingebundene Unterformular heißt PARTNER.
Die Beziehung der beiden Formulare ist die verknüpfte Kundennummer KNR.

Und zwar folgendes:
Ich möchte einen Namen im UF PARTNER als Suchbegriff eingeben, und den oder die zugehörigen KUNDEN finden.
Also quasi genau anders herum.

Momentan öffne ich per Makro erst einmal das UF PARTNER, so dass alle gelistet werden.
Dann aktiviere ich den Formularbasierten Filter und gebe im Feld NAME den zu suchenden Partner ein.
Nachdem dieser gefunden wurde kopiere ich die Kundennummer KNR, beende den Filter, schließe das Formular,
öffne das Hauptformular wieder, starte den Filter, gebe ins Feld KNR diese ein und suche den KUNDEN.

Das kann es doch nicht sein...... Wie macht ihr das denn?
Gibt es da einen VBA Code, den man nur noch anpassen muss?

Das muss irgendwie gehen.
Ich weiß nicht wie das in den großen Datenbanken SAP, oder welche auch immer ist,
aber da scheint es zu funktionieren.
Titel: Re: Grundsätzliche Frage zur SUCHE
Beitrag von: Beaker s.a. am November 07, 2012, 23:13:42
Hallo Achim,
ZitatDas kann es doch nicht sein...... Wie macht ihr das denn?
Ich mache das mit einem ungebundenem Kombi im HFo.
Datensatzherkunft: tblKunden bzw.
SELECT KNR, KName FROM tblKunden
Spalten: mind. zwei (KNR, Name);- falls Du mehr willst, entsprechend ergänzen
gebundene Spalte: 1
Spaltenbreiten: 0cm;5cm (weitere s.o.)
Ereignishandler: AfterUpdate
Private Sub cboSuche_AfterUpdate()
    Dim rst As DAO.Recordset
    Set rst = Me.RecordsetClone
    rst.FindFirst "KNR = " & Me!cboSuche
    Me.Bookmark = rst.Bookmark

    rst.Close
    Set rst = Nothing
End Sub

hth
gruss ekkehard
Titel: Re: Grundsätzliche Frage zur SUCHE
Beitrag von: accessy am November 08, 2012, 09:28:03
Hallo Ekkehard,

erst einmal vielen Dank für die Info zu meinem Anliegen.
Bisher habe ich es noch nicht zum Laufen gebracht.

Also,
ich habe den Code so ins After_Update Ereignis geschrieben.
Anschließend habe ich die ComBo aufgezogen und den Assistenten ausgeschaltet.
So, nun habe ich eine ungebundene Combo
In den Eigenschaften steht
Steuerelementeinhalt  LEER
Herkunftstyp Tabelle/Abfrage
Gebundene Spalte 1
Datensatzherkunft Tabelle PARTNER
Formateinstellungen
Spaltenanzahl 3 (Nachname steht in der Tabelle in der 3. Spalte)

Okay, ich starte die DB
Nach Auswahl eines Partners in der ComBo kommt es zur Fehlermeldung
"Fehler beim Kompilieren"
Benutzerdefinierter Typ nicht definiert.
Und im VBA Code wird
"Dim rst as dao.recordset" markiert.

Wo ist der Fehler?

Titel: Re: Grundsätzliche Frage zur SUCHE
Beitrag von: Beaker s.a. am November 08, 2012, 10:52:25
Hallo Achim,
Zitat"Fehler beim Kompilieren"
Benutzerdefinierter Typ nicht definiert.
Und im VBA Code wird
"Dim rst as dao.recordset" markiert.
Dann fehlt der Verweis auf die DAO-Bibliothek,
schaust Du hier: http://www.donkarl.com?FAQ7.1 (http://www.donkarl.com?FAQ7.1)

ZitatGebundene Spalte 1
Datensatzherkunft Tabelle PARTNER
Wenn Du über einen Partner den Kunden finden
willst, musst Du den Fremdschlüssel aus tblPartner
mit in die DS-Herkunft des Kombis nehmen, und
damit das .FindFirst füttern
rst.FindFirst "KNR = " & Me!cboSuche.Column(n)
n = Spalte mit Fremdschlüssel (gezählt ab 0).
hth
gruss ekkehard
Titel: Re: Grundsätzliche Frage zur SUCHE
Beitrag von: accessy am November 08, 2012, 16:21:31
Hallo Ekkehard,

also den fehlenden Verweis auf die Bibliothek habe ich korrigiert.
Das geht schon mal.
Jetzt habe ich die ComBo mit der Datenherkunft meiner Abfrage erstellt.
Der Name der Abfrage lautet "Partner Sortiert Name".

Diese Abfrage holt sich die Daten aus der Tabelle PARTNER.
In der Abfrage ist die Kundennummer KNR die 2. Spalte, also column(1)

Die Combo liest jetzt 4 Spalten ein.
1. Spalte die ID - Breite 0 - also nicht sichtbar
2. Spalte die KNR - Breite 0 - also nicht sichtbar
3. Spalte der Name - Breite 3 - also sichtbar
4. Spalte die Vorname - Breite 3 - also sichtbar

Öffne ich die Combo und wähle einen Namen
bekomme ich einen Laufzeitfehler 3464
"Datentypen im Kriterienausdruck unverträglich"

In der Tabelle PARTNER ist das Feld KNR als TEXT definiert
In der Tabelle KUNDEN ist das Feld KNR auch als TEXT definiert

Im VBA Code ist die Zeile
rst.findfirst "KNR =" & Me!Kunde_Partner.column(1)
als fehlerhaft selektiert.

Private Sub Kunde_Partner_AfterUpdate() 'Kombinationsfeld um Partner zu suchen zum Kunden
  Dim rst As DAO.Recordset
  Set rst = Me.RecordsetClone
  rst.findfirst "KNR = " & Me!Kunde_Partner.Column(1)
  Me.Bookmark = rst.Bookmark
  rst.Close
  Set rst = Nothing
End Sub

Die Combo hat den Namen "Kunde_Partner".
Und wie schon erwähnt ist die Spalte Nr.2 die KNR, also column(1)

Was ist nun noch falsch?
Titel: Re: Grundsätzliche Frage zur SUCHE
Beitrag von: Beaker s.a. am November 08, 2012, 18:33:53
Hallo Achim,
O.K., bei Nummern gehe ich von Zahlen aus.
Wenn's Text ist müssen da " ' " umzu.
rst.findfirst "KNR = '" & Me!Kunde_Partner.column(1) & "'"

gruss ekkehard
Titel: Re: Grundsätzliche Frage zur SUCHE
Beitrag von: accessy am November 08, 2012, 20:31:25
Hallo Ekkehard,

es ist einfach nicht zu fassen.
Das funktioniert, und zwar richtig gut......

Aber ich ärgere mich schon wieder über mich selbst.
Ich habe hier schon einige Fragen in den verschiedensten Forumsteilen von Access gehabt,
und in einigen gab es den Hinweis mit den Hochkommas.
Darauf hätte ich nun wirklich selbst kommen können. :-\

Ich danke dir vielmals für deine Unterstützung dazu.
Schönen Abend noch....