Supportnet / Forum / Datenbanken
Kunden mit mehreren Adressen über 2Kombifelder auslesen
Frage
Hallo Forum,
ich habe eine Tabelle mit den Spalten ID; Kunde; Kunde_Ort.
Ein Kunde hat aber mehrere Adressen und diese sollten in einem zweiten Kombifeld angezeigt bzw. ausgesucht werden können.
Im ersten Kombifeld soll jeder Kunde nur einmal vorkommen!
Die Spalte ID ist die eindeutige Identifizierung des Kunden!
Antwort 1 von Teddy7
und ??
Antwort 2 von Bully
Ja, die Frage fehlte ja.
Wie realisier ich das?
Das erste Kombifeld zeigt mir alle Kunden an&so richtig weiß ich nicht, wie ich es dem Feld beibringen kann, dass er die doppelten ausblendet.
Wie realisier ich das?
Das erste Kombifeld zeigt mir alle Kunden an&so richtig weiß ich nicht, wie ich es dem Feld beibringen kann, dass er die doppelten ausblendet.
Antwort 3 von Bully
Ja, die Frage fehlte ja.
Wie realisier ich das?
Das erste Kombifeld zeigt mir alle Kunden an&so richtig weiß ich nicht, wie ich es dem Feld beibringen kann, dass er die doppelten ausblendet.
Wie realisier ich das?
Das erste Kombifeld zeigt mir alle Kunden an&so richtig weiß ich nicht, wie ich es dem Feld beibringen kann, dass er die doppelten ausblendet.
Antwort 4 von Marie
in der Abfrage gruppieren
Gruß Marie
Gruß Marie
Antwort 5 von Bully
Hallo Marie,
in der Abfrage kommt die Fehlermeldung
"zu viele Felder definiert"
Die Kundendaten sind mit anderen Daten in einer großen Abfrage (ca.50 Spalten) zusammengefasst.
Geht die Gruppierung auch vom Kombifeld über VBA
oder von der Tabelle Kundenliste direkt aus??
Das wäre am leichtesten oder muss ich jetzt die Tabelle Kundenliste mit der Tabelle Komplett verknüpfen??
in der Abfrage kommt die Fehlermeldung
"zu viele Felder definiert"
Die Kundendaten sind mit anderen Daten in einer großen Abfrage (ca.50 Spalten) zusammengefasst.
Geht die Gruppierung auch vom Kombifeld über VBA
oder von der Tabelle Kundenliste direkt aus??
Das wäre am leichtesten oder muss ich jetzt die Tabelle Kundenliste mit der Tabelle Komplett verknüpfen??
Antwort 6 von Marie
Du sollst nur nacch dem einen Feld gruppieren, wo die id drinsteht, das Feld was nicht doppelt vorkommen darf und ansosten eindeutig ist.
Gruß marie
Gruß marie
Antwort 7 von Marie
Sorry für die Schreibfehler, meine Tastatur ist kaputt.
Antwort 8 von Bully
Hallo Marie,
in der Abfrage kommt die Fehlermeldung
"zu viele Felder definiert"
Die Kundendaten sind mit anderen Daten in einer großen Abfrage (ca.50 Spalten) zusammengefasst.
Geht die Gruppierung auch vom Kombifeld über VBA
oder von der Tabelle Kundenliste direkt aus??
Das wäre am leichtesten oder muss ich jetzt die Tabelle Kundenliste mit der Tabelle Komplett verknüpfen??
in der Abfrage kommt die Fehlermeldung
"zu viele Felder definiert"
Die Kundendaten sind mit anderen Daten in einer großen Abfrage (ca.50 Spalten) zusammengefasst.
Geht die Gruppierung auch vom Kombifeld über VBA
oder von der Tabelle Kundenliste direkt aus??
Das wäre am leichtesten oder muss ich jetzt die Tabelle Kundenliste mit der Tabelle Komplett verknüpfen??
Antwort 9 von Marie
Upps, was schaffst Du denn?? Du hast doch nach dem Kombifeld gefragt, wo der Kunde nur einmal vorkommen darf??
Alleine auf diese Frage hab ich Dir geantwortet:
In dem Kombifeld hast Du doch als Datenquelle eine Abfrage, und da brauchst Du doch nur so viele Spalten, dass man den Kunden eindeutig auswählen kann?? Und das sind keine 50. Die gebundene Spalte ist die mit der ID und die Spalte gruppierst Du in Deiner Abfrage. Ja, geht auch per VBA. Soll ich Dir den Code posten? Oder probierst Du nochmal selbst ohne VBA?
Gruß Marie
Alleine auf diese Frage hab ich Dir geantwortet:
Zitat:
Das erste Kombifeld zeigt mir alle Kunden an&so richtig weiß ich nicht, wie ich es dem Feld beibringen kann, dass er die doppelten ausblendet.
Das erste Kombifeld zeigt mir alle Kunden an&so richtig weiß ich nicht, wie ich es dem Feld beibringen kann, dass er die doppelten ausblendet.
In dem Kombifeld hast Du doch als Datenquelle eine Abfrage, und da brauchst Du doch nur so viele Spalten, dass man den Kunden eindeutig auswählen kann?? Und das sind keine 50. Die gebundene Spalte ist die mit der ID und die Spalte gruppierst Du in Deiner Abfrage. Ja, geht auch per VBA. Soll ich Dir den Code posten? Oder probierst Du nochmal selbst ohne VBA?
Gruß Marie
Antwort 10 von Bully
Ich versuche nochmal mein Glück.
Bin jetzt schon so weit, dass er im ersten Kombifeld den Namen des Kunden nur einmal ausgibt.
SELECT distinct
ist die Lösung.
Jetzt kommt zwar die Fehlermeldung mit dem
"Sie haben einen Wert eingegeben, der für dieses Feld nicht zulässig ist..." aber das werde ich hoffentlich auch noch in den Griff bekommen :-))
Danke dir und falls noch Fragen sein sollte werde ich sie stellen...
Bin jetzt schon so weit, dass er im ersten Kombifeld den Namen des Kunden nur einmal ausgibt.
SELECT distinct
ist die Lösung.
Jetzt kommt zwar die Fehlermeldung mit dem
"Sie haben einen Wert eingegeben, der für dieses Feld nicht zulässig ist..." aber das werde ich hoffentlich auch noch in den Griff bekommen :-))
Danke dir und falls noch Fragen sein sollte werde ich sie stellen...
Antwort 11 von Bully
Danke für die Hilfe,
Bei mir ist leider alles in einer Tabelle und da liegt ja der Hacken. Die Tabelle wird ständig aktualisiert.
Es werden aber bloß bestimmte Spalten in meinem Formular abgefragt .
Über den Befehl
kann ich einer Spalte wo mehrere Kunden stehen, ihn anweisen, dass er nur einmal steht. Das habe ich in die Datenherkunft geschrieben, aber dann funktioniert das zweite Kombifeld nicht mehr. Da ist alles weis.
meine zweite Idee war über VBA alles zu machen, aber da weis ich nicht wo der Distinct-Befehl hinkommt.
F2-Kundennummer (eindeutig)
F7-Kundenname
F13-Ort
F17-Strasse
Ich hofffe, du kannst damit was anfangen
Bei mir ist leider alles in einer Tabelle und da liegt ja der Hacken. Die Tabelle wird ständig aktualisiert.
Es werden aber bloß bestimmte Spalten in meinem Formular abgefragt .
Über den Befehl
Select Distinctkann ich einer Spalte wo mehrere Kunden stehen, ihn anweisen, dass er nur einmal steht. Das habe ich in die Datenherkunft geschrieben, aber dann funktioniert das zweite Kombifeld nicht mehr. Da ist alles weis.
meine zweite Idee war über VBA alles zu machen, aber da weis ich nicht wo der Distinct-Befehl hinkommt.
Private Sub Kunde_AfterUpdate()
Me!Ort.RowSource = "Select F7, F13, F17 " & _
"From Kundenliste " & _
"Where F2 = " & Me!Kunde
Me!Ort = Me!Ort.Column(0, 0)
Ort_AfterUpdate
End Sub
Private Sub Ort_AfterUpdate()
Me!Strasse.RowSource = "Select F2, F7, F13, F17 " & _
"From Kundenliste " & _
"Where F13 = " & Me!Ort
Me!Strasse = Me!Strasse.Column(0, 0)
End SubF2-Kundennummer (eindeutig)
F7-Kundenname
F13-Ort
F17-Strasse
Ich hofffe, du kannst damit was anfangen
Antwort 12 von Marie
äh,ich versteh nicht recht, wie heissen Deine beiden Kombifelder?? Kunde und Ort???
Was in Deiner Tabelle alles drinsteht interessiert uns doch gar nicht für das Kombifeld.
Aber in allen doppelten Datensätzen sind auch die Inhalte von F7, F13 und F17 identisch und alles soll im Kombi angezeigt werden??
SELECT DISTINCTROW NameDeinerTabelle.F2, NameDeinerTabelle.F7, NameDeinerTabelle.F13, NameDeinerTabelle.F17
FROM NameDeinerTabelle
GROUP BY NameDeinerTabelle.F2, NameDeinerTabelle.F7, NameDeinerTabelle.F13, NameDeinerTabelle.F17;
Das ist jetzt mal die Datensatzherkunft Deines Kombifeldes 1, bei mir namens cboKunde, wo die doppelten ausgeblendet sind, wenn F2 die doppelten enthält. Dies machst Du nicht in vba, sondern im Entwurf des Formulars klickst du auf Ansicht Eigenschaften, dort auf Daten und kopierst die Selectanweisung in Datensatzherkunft.
Spaltenanzahl 4
gebundene Spalte 1
Spaltenbreiten 0cm;2,54cm;2,54cm;2,54cm
oder wie Du willst, aber die erste Spalte mit Breite 0 damit sie ausgeblendet ist.
Dasselbe machst Du in Deinem zweiten Kombifeld bei mir heisst das: "cboOrt", also alle Datensätze, uneingeschränkt, davon die Spalten, die Du sehen willst und die erste Spalte ausgeblendet die Spalte F2.
Und jetzt schreibst Du als Code:
Private Sub cboKunde_AfterUpdate()
Dim strCboRowSource As String
' in strCboRowSource eintragen was du in cboOrt sehen willst
strCboRowSource = " SELECT DISTINCTROW NameDeinerTabelle.F2, NameDeinerTabelle.F7, NameDeinerTabelle.F13, Artikel.F17 FROM NameDeinerTabelle"
strCboRowSource = strCboRowSource & " WHERE [ID] = " & Me![cboKunde] & ";"
Me.cboOrt.RowSource = strCboRowSource
End Sub
Hoffe Du kommst klar
gruß Marie
Was in Deiner Tabelle alles drinsteht interessiert uns doch gar nicht für das Kombifeld.
Zitat:
Das erste Kombifeld zeigt mir alle Kunden an&so richtig weiß ich nicht, wie ich es dem Feld beibringen kann, dass er die doppelten ausblendet.
Das erste Kombifeld zeigt mir alle Kunden an&so richtig weiß ich nicht, wie ich es dem Feld beibringen kann, dass er die doppelten ausblendet.
Zitat:
F2-Kundennummer (eindeutig)
F7-Kundenname
F13-Ort
F17-Strasse
F2-Kundennummer (eindeutig)
F7-Kundenname
F13-Ort
F17-Strasse
Aber in allen doppelten Datensätzen sind auch die Inhalte von F7, F13 und F17 identisch und alles soll im Kombi angezeigt werden??
SELECT DISTINCTROW NameDeinerTabelle.F2, NameDeinerTabelle.F7, NameDeinerTabelle.F13, NameDeinerTabelle.F17
FROM NameDeinerTabelle
GROUP BY NameDeinerTabelle.F2, NameDeinerTabelle.F7, NameDeinerTabelle.F13, NameDeinerTabelle.F17;
Das ist jetzt mal die Datensatzherkunft Deines Kombifeldes 1, bei mir namens cboKunde, wo die doppelten ausgeblendet sind, wenn F2 die doppelten enthält. Dies machst Du nicht in vba, sondern im Entwurf des Formulars klickst du auf Ansicht Eigenschaften, dort auf Daten und kopierst die Selectanweisung in Datensatzherkunft.
Spaltenanzahl 4
gebundene Spalte 1
Spaltenbreiten 0cm;2,54cm;2,54cm;2,54cm
oder wie Du willst, aber die erste Spalte mit Breite 0 damit sie ausgeblendet ist.
Dasselbe machst Du in Deinem zweiten Kombifeld bei mir heisst das: "cboOrt", also alle Datensätze, uneingeschränkt, davon die Spalten, die Du sehen willst und die erste Spalte ausgeblendet die Spalte F2.
Und jetzt schreibst Du als Code:
Private Sub cboKunde_AfterUpdate()
Dim strCboRowSource As String
' in strCboRowSource eintragen was du in cboOrt sehen willst
strCboRowSource = " SELECT DISTINCTROW NameDeinerTabelle.F2, NameDeinerTabelle.F7, NameDeinerTabelle.F13, Artikel.F17 FROM NameDeinerTabelle"
strCboRowSource = strCboRowSource & " WHERE [ID] = " & Me![cboKunde] & ";"
Me.cboOrt.RowSource = strCboRowSource
End Sub
Hoffe Du kommst klar
gruß Marie
Antwort 13 von Marie
Upps, 2 Fehler entdeckt
Private Sub cboKunde_AfterUpdate()
Dim strCboRowSource As String
' in strCboRowSource eintragen was du in cboOrt sehen willst
strCboRowSource = " SELECT DISTINCTROW NameDeinerTabelle.F2, NameDeinerTabelle.F7, NameDeinerTabelle.F13, NameDeinerTabelle.F17 FROM NameDeinerTabelle"
strCboRowSource = strCboRowSource & " WHERE [F2] = " & Me![cboKunde] & ";"
Me.cboOrt.RowSource = strCboRowSource
End Sub
Private Sub cboKunde_AfterUpdate()
Dim strCboRowSource As String
' in strCboRowSource eintragen was du in cboOrt sehen willst
strCboRowSource = " SELECT DISTINCTROW NameDeinerTabelle.F2, NameDeinerTabelle.F7, NameDeinerTabelle.F13, NameDeinerTabelle.F17 FROM NameDeinerTabelle"
strCboRowSource = strCboRowSource & " WHERE [F2] = " & Me![cboKunde] & ";"
Me.cboOrt.RowSource = strCboRowSource
End Sub
Antwort 14 von Bully
Danke Marie für deine Hilfe,
aber folgendes trifft eben NICHT zu: :-))
ich versuch mich mal als Leonardo:
Tabelle Kundenliste:
------------F2 -------------F7---------- F13------------ F17
Kundennummer Kundenname Ort Strasse
(eindeutig)
1............................Edeka................Hamburg.....bergstrasse
2............................Rewe................Hamburg......Torstrasse
3............................Rewe................Berlin............Alleestrasse
4.............................Aldi...................Köln...............Bahnstrasse
Im ersten Kombifeld(kunde) sollen jetzt nur 3 Kunden drin stehen, da ja Rewe 2x vorkommt.
Im zweiten Kombifeld(ort), soll nachdem ich z.B. rewe ausgewählt habe, die beiden Orte mir angezeigt werden.
aber folgendes trifft eben NICHT zu: :-))
Zitat:
Aber in allen doppelten Datensätzen sind auch die Inhalte von F7, F13 und F17 identisch und alles soll im Kombi angezeigt werden??
Aber in allen doppelten Datensätzen sind auch die Inhalte von F7, F13 und F17 identisch und alles soll im Kombi angezeigt werden??
ich versuch mich mal als Leonardo:
Tabelle Kundenliste:
------------F2 -------------F7---------- F13------------ F17
Kundennummer Kundenname Ort Strasse
(eindeutig)
1............................Edeka................Hamburg.....bergstrasse
2............................Rewe................Hamburg......Torstrasse
3............................Rewe................Berlin............Alleestrasse
4.............................Aldi...................Köln...............Bahnstrasse
Im ersten Kombifeld(kunde) sollen jetzt nur 3 Kunden drin stehen, da ja Rewe 2x vorkommt.
Im zweiten Kombifeld(ort), soll nachdem ich z.B. rewe ausgewählt habe, die beiden Orte mir angezeigt werden.
Antwort 15 von Bully
Habe es gelöst.
Das Zeichen ' , zwischen den Anführungszeichen hat gefehlt und die Datensatzherkunft habe ich geändert in nur die Spalten, die wirklich benötigt werden. Jetzt habe ich auch das System verstanden.
Boa war das einfach. Aber den Fehler zu finden war schwer!
Der Code
war nicht nötig gewesen.
Danke Marie :-)
Private Sub Kunde_AfterUpdate()
Me!Ort.RowSource = "Select Kundenliste.F7, Kundenliste.F13 " & _
"From Kundenliste " & _
"Where Kundenliste.F7 = '" & Me!Kunde & "';"
End SubDas Zeichen ' , zwischen den Anführungszeichen hat gefehlt und die Datensatzherkunft habe ich geändert in nur die Spalten, die wirklich benötigt werden. Jetzt habe ich auch das System verstanden.
Boa war das einfach. Aber den Fehler zu finden war schwer!
Der Code
Private Sub Ort_AfterUpdate()war nicht nötig gewesen.
Danke Marie :-)

