online 1
gast (50)

/ Forum / Datenbanken

DatenbankenDatenbanken

Fragevon Bully vom 07.11.2019, 12:05 Options

Kunden mit mehreren Adressen über 2Kombifelder auslesen

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 schreiben

Antwort 1 von Teddy7 vom 07.11.2019, 13:07 Options

und ??

Antwort 2 von Bully vom 07.11.2019, 13:35 Options

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.

Antwort 3 von Bully vom 07.11.2019, 13:48 Options

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.

Antwort 4 von Marie vom 07.11.2019, 14:05 Options

in der Abfrage gruppieren

Gruß Marie

Antwort 5 von Bully vom 07.11.2019, 14:48 Options

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??

Antwort 6 von Marie vom 07.11.2019, 14:56 Options

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

Antwort 7 von Marie vom 07.11.2019, 14:57 Options

Sorry für die Schreibfehler, meine Tastatur ist kaputt.

Antwort 8 von Bully vom 07.11.2019, 15:00 Options

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??

Antwort 9 von Marie vom 07.11.2019, 15:04 Options

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:
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.


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 vom 07.11.2019, 15:42 Options

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...

Antwort 11 von Bully vom 08.11.2019, 14:22 Options

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

Select Distinct


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.


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 Sub




F2-Kundennummer (eindeutig)
F7-Kundenname
F13-Ort
F17-Strasse

Ich hofffe, du kannst damit was anfangen

Antwort 12 von Marie vom 09.11.2019, 02:54 Options

ä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.

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.



Zitat:
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 vom 09.11.2019, 02:58 Options

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

Antwort 14 von Bully vom 09.11.2019, 09:55 Options

Danke Marie für deine Hilfe,

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??


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 vom 09.11.2019, 11:09 Options

Habe es gelöst.

Private Sub Kunde_AfterUpdate()
Me!Ort.RowSource = "Select Kundenliste.F7, Kundenliste.F13 " & _
                    "From Kundenliste " & _
                    "Where Kundenliste.F7 = '" & Me!Kunde & "';"
                    
End Sub


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
Private Sub Ort_AfterUpdate()

war nicht nötig gewesen.

Danke Marie :-)

Ähnliche Themen

Neueste Inhalte aus mehreren Tabellen auslesen
Bappkopp  12.03.2007 - 145 Hits - 2 Antworten

Serien-Emails automatisch verschicken
szulc  31.03.2007 - 131 Hits - 1 Antwort

mehrere Ping per Skript ausführen
LowNoise  22.10.2007 - 88 Hits -

Suche Firmenverzeichnis mit Linuxunternehmen
Tuckz  24.01.2008 - 41 Hits - 3 Antworten

Web-Adressen
Baer-le  08.04.2008 - 87 Hits - 4 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 07:32:25 2026