Neuigkeiten:

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

Mobiles Hauptmenü

Abfrage: Brauche nur einen Wert für Label

Begonnen von Bernie110, September 22, 2014, 12:09:56

⏪ vorheriges - nächstes ⏩

Bernie110

Hallo Zusammen,

Ich bastle immer noch an meiner Sendungsdatenbank.
Die Sendungstabelle heisst : DT_Erfassung
In der Tabelle DT_Kontakt_Tabelle erfasse ich alle
Kontaktpersonen/Ansprechpartner zu einer Sendung

Felder : DT_Erfassung
DT_ID = Die Sendungsnummer
Hier befinden sich noch folgende Felder
EMPF_ID / Zahl = Empfänger ID
AG_ID  / Zahl = Auftraggeber_ID
Diese beiden Felder sind die Verknüpfungen zur u.g. Tabelle

Felder: DT_Kontakt_Tabelle
LfdNr = Autowert
DT_ID = Zahl
Kontakt = Textfeld
Tel = Textfeld
Fax = Textfeld
EMPF_ID = Zahlenfeld
AG_ID = Zahlenfeld

So jetzt kann ich zu jeder einzelnen Sendung mehrere Kontaktpersonen für den Empfänger eingeben.

Jetzt möchte ich aber einen Sendungslabel erstellen, auf dem nur ein
Ansprechpartner angedruckt wird.


Der Sendungslabel wird hauptsächlich über eine Abfrage mit mehren Tabellen generiert.

Das wäre nun der SQL String der Abfrage.
Und hier bräuchte ich jetzt nur einen einzigen Wert.
Am besten diesen Wert der in jedem Fall eine Telefonnummer enthält.
Egal wieviele Ansprechpartner eingeben werden...nur  ein Wert

ZitatSELECT DT_Kontakt_Tabelle.DT_ID, DT_Kontakt_Tabelle.Kontakt, DT_Kontakt_Tabelle.Tel, DT_Kontakt_Tabelle.Fax, DT_Kontakt_Tabelle.Email, Last(DT_Kontakt_Tabelle.EMPF_ID) AS EMPF_ID
FROM DT_Kontakt_Tabelle
GROUP BY DT_Kontakt_Tabelle.DT_ID, DT_Kontakt_Tabelle.Kontakt, DT_Kontakt_Tabelle.Tel, DT_Kontakt_Tabelle.Fax, DT_Kontakt_Tabelle.Email
HAVING (((Last(DT_Kontakt_Tabelle.EMPF_ID))>0));

Kann mir jemand helfen ?

Danke für eure Antworten. Hoffe ich habe euch alle relevanten Daten geliefert.
Lg
Bernie

MaggieMay

Hi,

für eine einzelne Sendung versuche es mal hiermit:SELECT Top 1 K.DT_ID, K.Kontakt, K.Tel, K.Fax, K.Email, E.EMPF_ID, E.AG_ID
FROM DT_Kontakt_Tabelle AS K INNER JOIN DT_Erfassung AS E
ON A.DT_ID = E.DT_ID
WHERE E.DT_ID = [Sendungsnummer]
ORDER BY K.Tel Desc;

BTW:
ZitatHier befinden sich noch folgende Felder
EMPF_ID / Zahl = Empfänger ID
AG_ID  / Zahl = Auftraggeber_ID
Diese beiden Felder sind die Verknüpfungen zur u.g. Tabelle
Die Verknüpfung sollte über die DT_ID erfolgen, die beiden anderen Felder sind in der Detailtabelle überflüssig.
Freundliche Grüße
MaggieMay

Bernie110

Hi Maggie,
danke für deine Antwort, das Ganze geht schon mal in die Richtung
die ich mir vorstelle.

Allerdings brauch ich für jeden DT_Erfassungs Datensatz
einen Kontakt ( nur einen einzigen )

Soll in etwa so ausehen :

Sendung :
DT_NR = 1
Von      = Hamburg
nach     = Madrid
EMPF_ID = 14

Tabelle Kontakte
ZitatKontakt_ID = 215
DT_ID = 1
Kontakt = Hr Müller
Tel = 0815

ZitatKontakt_ID = 216
DT_ID = 1
Kontakt = Hr Bauer
Tel =

So und ich brauche jetzt die Daten von Herrn Müller, weil dort eine Tel angeben ist.

Die Abfrage soll dann folgendes Ergebnis liefern :

DT_NR ( Sendung )   Kontakt      Tel
1                             Hr.Müller     0815
2                             Hr. XY         0814
3                             "leer"          "leer"       ( leer da kein einziger eingetragen)

Diese Abfrage möchte ich dann mit einer TBL Packstücke via DT_ID verbinden
Wenn ich keinen einzeln Wert aus den Kontakten bekomme, dann
hab ich in der Abfrage mit den Packstücken Doppelte DS und das soll nicht so sein.
Ich hab den Abfrageaufbau der Abfrage , in der ich auch den Einzelnen Konakt einer Sendung einfügen möchte mal angehängt

Ist das überhaupt der richtige Weg ?

Lg
Bernie                                                     

Bernie110


MaggieMay

Wie du den ersten Kontakt mit Telefon-Nr. zu einer Sendung erhältst hatte ich dir gezeigt.
Diese Abfrage kannst du dann mit anderen Tabellen und Abfragen verknüpfen.
Was genau ist jetzt noch dein Problem?
Freundliche Grüße
MaggieMay

Bernie110

Hallo Maggy,

das Problem ist, dass nach dieser Abfrage nur der letzte Wert aus der DT_Kontakt_Tabelle angezeigt wird.
Ich brauch das aber für jede Sendung separat.

So sieht sie jetzt aus.
ZitatSELECT TOP 1 K.DT_ID, K.Kontakt, K.Tel, K.Fax, K.Email, K.EMPF_ID, E.EMPF_ID
FROM DT_MA_TABELLE AS E INNER JOIN DT_Kontakt_Tabelle AS K ON (E.DT_NR = K.DT_ID) AND (E.EMPF_ID = K.EMPF_ID)
WHERE (((E.DT_NR)=[K.DT_ID]))
ORDER BY K.Tel DESC;

Wenn ich sie nun mit den Anderen verknüpfe ist zwar ein Wert in genau dieser Sendung , in der als letzter ein Empfänger Konakt erfasst wurde,
Aber in allen anderen nicht.

Ober hab ich was falsch gemacht ???

Danke für deine Mühe
Lg Bernie

MaggieMay

Woher kommt jetzt die DT_MA_Tablle und die DT_NR? Du solltest die Abfrage so wie ich sie gezeigt hatte als Unterabfrage einsetzen, nicht als Verknüpfung.

Zeig mal den SQL-Code der ursprünglichen Abfrage, dann sehen wir weiter.

BTW:
Warum hast du immer noch doppelte Datenfelder (bspw. EMPF_ID) in den Tabellen?
Freundliche Grüße
MaggieMay

Bernie110

Hallo,

DT_MA_Tabelle = DT_ERFASSUNG
DT_NR = Autowert der DT_MA_Tabelle

Hier der SQL String der Abfrage wo alles rein soll

Name dieser Abfrage : qyr_LABEL_BARCODE

ZitatSELECT STAMM_BarcodeNr.DT_Nr, STAMM_BarcodeNr.BarcodeNr, STAMM_BarcodeNr.LA_ID, STAMM_BarcodeNr.PackstückNr, STAMM_BarcodeNr.BC_LfdNr, LA_MA_TABELLE.LS_NR, LA_MA_TABELLE.AuftragsNr, qyr_DT_ADRESSE_EMPF_ABS.ABS_FirmenName1, qyr_DT_ADRESSE_EMPF_ABS.ABS_FirmenName2, qyr_DT_ADRESSE_EMPF_ABS.ABS_Strasse1, qyr_DT_ADRESSE_EMPF_ABS.ABS_Strasse2, qyr_DT_ADRESSE_EMPF_ABS.ABS_Land, qyr_DT_ADRESSE_EMPF_ABS.ABS_PLZ, qyr_DT_ADRESSE_EMPF_ABS.ABS_ORT, qyr_DT_ADRESSE_EMPF_ABS.ABS_TEL, qyr_DT_ADRESSE_EMPF_ABS.ABS_ORT_LAND, qyr_DT_ADRESSE_EMPF_ABS.EMPF_FirmenName1, qyr_DT_ADRESSE_EMPF_ABS.EMPF_FirmenName2, qyr_DT_ADRESSE_EMPF_ABS.EMPF_Strasse1, qyr_DT_ADRESSE_EMPF_ABS.EMPF_Strasse2, qyr_DT_ADRESSE_EMPF_ABS.EMPF_Land, qyr_DT_ADRESSE_EMPF_ABS.EMPF_Plz, qyr_DT_ADRESSE_EMPF_ABS.EMPF_Ort, qyr_DT_ADRESSE_EMPF_ABS.EMPF_ORT_LANG, qyr_LA_SUMME_ALLE_PACK.Colli AS SNDG_Colli, qyr_LA_SUMME_ALLE_PACK.KG AS SNDG_Kg, qyr_LA_SUM_PA_KA_RO.Packstücke, qyr_LA_SUM_PA_KA_RO.KANAL, qyr_LA_SUM_PA_KA_RO.Rohre, qyr_DT_ADRESSE_EMPF_ABS.Ladedatum, qyr_DT_ADRESSE_EMPF_ABS.Entladedatum, qyr_DT_ADRESSE_EMPF_ABS.Entladezeit, LA_MASSE_Tabelle.Länge_cm AS LA_MASSE_Länge_cm, LA_MASSE_Tabelle.Breite_cm AS LA_MASSE_Breite_cm, LA_MASSE_Tabelle.Höhe_cm AS LA_MASSE_Höhe_cm, LA_MASSE_Tabelle.VP_ART_TXT_KURZ AS LA_MASSE_VP_ART_TXT_KURZ, LA_MASSE_Tabelle.VP_ART_TXT_LANG AS LA_MASSE_VP_ART_TXT_LANG, STAMM_BarcodeNr.Colli AS BAR_COLLI
FROM ((qyr_LA_SUMME_ALLE_PACK INNER JOIN ((STAMM_BarcodeNr INNER JOIN LA_MA_TABELLE ON STAMM_BarcodeNr.LA_ID = LA_MA_TABELLE.LA_ID) INNER JOIN qyr_DT_ADRESSE_EMPF_ABS ON STAMM_BarcodeNr.DT_Nr = qyr_DT_ADRESSE_EMPF_ABS.DT_NR) ON qyr_LA_SUMME_ALLE_PACK.LA_ID = STAMM_BarcodeNr.LA_ID) INNER JOIN qyr_LA_SUM_PA_KA_RO ON STAMM_BarcodeNr.LA_ID = qyr_LA_SUM_PA_KA_RO.LA_ID) INNER JOIN LA_MASSE_Tabelle ON STAMM_BarcodeNr.PackstückNr = LA_MASSE_Tabelle.LfdNr;

Als Unterabfrage ??
wie meinst du das ?
Lg Bernie

MaggieMay

#8
ZitatDT_MA_Tabelle = DT_ERFASSUNG
DT_NR = Autowert der DT_MA_Tabelle
Du solltest bei den einmal abgegebenen Beschreibungen bleiben bzw. von vornherein die korrekten Bezeichnungen nennen. So erspart man sich unnötige Verwirrungen und Verwdchslungen.

Ist die Tabelle "DT_Kontakt_Tabelle" in der Abfrage noch nicht drin oder versteckt sie sich in der Abfrage "qyr_DT_ADRESSE_EMPF_ABS"?

Mit Unterabfrage meinte ich so etwas:Select ..., sub.tel
From ...
Inner Join (SELECT Top 1 K.DT_ID, K.Kontakt, K.Tel, K.Fax, K.Email
FROM DT_Kontakt_Tabelle AS K
WHERE K.DT_ID = STAMM_BarcodeNr.DT_Nr
ORDER BY K.Tel Desc) AS sub


PS:
Zitat- und Code-Tags sind nicht dasselbe. Bei Code-Tags gibt es zusätzlich noch die praktische Markierfunktion zum schnellen Kopieren.
Freundliche Grüße
MaggieMay

Bernie110

Hallo,
ZitatDu solltest bei den einmal abgegebenen Beschreibungen bleiben bzw. von vornherein die korrekten Bezeichnungen nennen. So erspart man sich unnötige Verwirrungen und Verwdchslungen.
sorry, ja mein Fehler   :-[

ZitatIst die Tabelle "DT_Kontakt_Tabelle" in der Abfrage noch nicht drin oder versteckt sie sich in der Abfrage "qyr_DT_ADRESSE_EMPF_ABS"?

Nein ist noch nicht mit drin.

Select ..., sub.tel
From ...
Inner Join (SELECT Top 1 K.DT_ID, K.Kontakt, K.Tel, K.Fax, K.Email
FROM DT_Kontakt_Tabelle AS K
WHERE K.DT_ID = STAMM_BarcodeNr.DT_Nr
ORDER BY K.Tel Desc) AS sub


Ok, jetzt versteh ich nur noch Bahnhof ???
Ich versuch mal wiederzugeben was ich meine verstanden zuhaben.

Im SQL String der Abfrage qyr_LABEL_BARCODE hängt man das noch dran ?
Wenn dem so ist, bitte ich dich mir nochmals zu helfen wie das wirklich aussehn muss.

Danke im Voraus
Lg Bernie