Formulare:Textfelder 'verbinden'?

Hi,
habe folgendes Problem:

Habe eine Kombi-Feld erstellt, in dem ich die Namen meiner Kunden auswählen kann.

Jetzt befinden sich darunter passende Felder für die Kundendaten (Str, Ort, Landkreis…), die sich beim auswählen des Kundennamens mit den dazu passenden Kundendaten „füllen“ sollen.

Ich habe schon lange herumprobiert aber es hatte leider nicht geklappt. Ist das denn nicht möglich?

Liebe Grüsse
Kassi

Moin,

für dein Problem gibt es mehrere Lösungsansätze, hier mal die zwei gebrächlichsten:

  1. Hauptformular/Unterformular

Die Daten zu deinen Kunden stehen im Unterformular. Im Hauptformular wird nur ein ungebundenes Dropdownfeld angelegt, das die Liste der Kundennamen enthält.
Das Unterformular wird jetzt an dieses Dropdownfeld gebunden (Namen des Dropdownfelds im „Verknüpen nach“ angeben).

  1. Auswahl aufgrund Inhalt

Die Daten befinden sich mit dem Dropdownfeld zusammen im Hauptformular. Das AfterUpdate wird wie folgt belegt:

Private Sub Kombinationsfeld2\_AfterUpdate()
 ' Den mit dem Steuerelement übereinstimmenden Datensatz suchen.
 Dim rs As Object

 Set rs = Me.Recordset.Clone
 rs.FindFirst "[strName] = '" & Me![Kombinationsfeld2] & "'"
 If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub

Hab ich übrigens nur aus dem mit Assistenten erstellten Dropdownfeld herauskopiert - entsprechende Anpassungen an deine gegebenen Verhältnisse müssen dann entsprechend noch gemacht werden

Gruß
Daniel Scholdei

Hallo Wirgina
ein ähnliches Problem hatte ich wie folgt mit VBA gelöst:

  • Zuerst weise ich die Daten von einem Formular, welches ungebunden ist einem Aray zu. Ich kann somit nur nach einem, oder nach mehreren Angaben suchen. Primär suche ich immer nach der Firma und wenn diese nicht vorhanden ist, nach dem namen.
    Wurde ein Feld mit gleichem Inhalt entdekt, so vergleiche ich noch die restlichen angaben miteinander.

Das Kernstück dieser Abfrage in Access sind zwei code.

  1. die OpenRecordset Funktion
  2. die FindFirst / Find Next Funktion

Ein beispiel:

Public Sub Kunden() 'Durchsucht Tabelle, nach Vorhandenem Kunden

'Deklarationen
Dim rs As Variant
Dim i As Integer

'Abfrage nach Kundendaten öffnen.
Set rs = CurrentDb.OpenRecordset("SELECT Kunden_Nummer, Name, Firma, Strasse, Nummer, PLZ, Ort, Tel, Land " & „FROM Auftrag_Kunden ORDER BY Kunden_Nummer“) 'Öffnet die angegebene Datenbank

'Wichtig ist hierbei die Select anweisung. Ich wähle zuerst das Primärschlüsselfeld Kunden_Nummer aus. Danach sage ich dieser Anweisung, dass ich auch das Feld Namen, Firma, Strasse etc. auswählen möchte. (FROM) Von Wo sollen die Daten bezogen werden, aus welcher Tabelle? Order By = Nach welchem Feld soll die Abfrage sortiert werden, da sortiere ich logischerweise nach der KundenNummer. Weise das ganze einer Variable mit Set zu, damit Du später die With Schlaufe anwenden kannst. Jetzt weiter im Code:

Dim fFirst As Boolean 'fFirst = True FindFirst, else FindNext
fFirst = True
Do While True
With rs
If fFirst = True Then
.FindFirst ("" & Suchfeld(0) & " = ‚" & Angabe(0) & "‘")
'rs.FindFirst sucht den ersten Eintrag im Suchfeld(0) mit der Angabe(0). Suchfeld und angabe sind Aray Parameter, die Du in einem Modul wie folgst deklarierst: Beispiel: Public Suchfeld(10) As String. Analoges gilt für die Angabe(0). In dieser Beispieldeklaration stehen Dir 10 arrays zur verfügung, Suchfeld(0), suchfeld(1), Suchfeld(2)… Weiter im Code
fFirst = False
Else
.FindNext ("" & Suchfeld(0) & " = ‚" & Angabe(0) & "‘")
End If

If .NoMatch Then 'Beendet Loop-Schleife, wenn keine weiteren daten in der Tabelle gefunden werden
Form_Auftrag_Erfassung.lboxSuchresultat.AddItem („Keine weiteren Daten gefunden!“)
Exit Sub
Else

'Überprüft erstes Suchresultat nach Richtigkeit
Text2 = .Fields(Suchfeld(0)).Value
For i = 1 To Zahl
If Suchfeld(i) „“ Then Text2 = Text2 & „,“ & .Fields(Suchfeld(i))
Next i

'Weist erstes Resultat der lbox in FORM_Auftrag_Erfassung zu.
If Text1 = Text2 Then
Text2 = „“
Text2 = .Fields(„Kunden_Nummer“) & ", "
Text2 = Text2 & .Fields(„Firma“) & ", "
Text2 = Text2 & .Fields(„Name“) & ", "
Text2 = Text2 & .Fields(„Strasse“) & " "
Text2 = Text2 & .Fields(„Nummer“) & ", "
Text2 = Text2 & .Fields(„PLZ“) & ", "
Text2 = Text2 & .Fields(„Ort“) & ", "
Text2 = Text2 & .Fields(„Land“) & ", "
Text2 = Text2 & .Fields(„Tel“)
Form_Auftrag_Erfassung.lboxSuchresultat.AddItem (Text2)
End If
End If
End With
Loop
rs.Close
End Sub

'mit .Fields, lese oder weise Ich Daten einem Feld in einer Tabelle zu

MFG
Sebastian