Select / Union - Problem

13/08/2008 - 22:02 von Lothar Geyer | Report spam
Ich habe mal wieder ein Problem, dem ich nicht auf die Sprünge komme. Es
geht um drei Select-Statements, die mit UNION verknüpft werden. Die
einzelnen Statements laufen ohne Probleme. Es ist auch alles Bestens,
wenn ich zwei davon - egal welche - per UNION verknüpfe. Sobald ich aber
alle drei verknüpfe, bekomme ich die Meldung "Datentypen in
Kriterienausdruck unvertràglich.". Das kommt mit doch sehr unlogisch
vor. Der Fehler liegt aber sicher bei mir - nur ich finde ihn nicht.
Könnt ihr mir bitte helfen?

Hier der Source:

' record set aufbauen
sql = ""
IsUnion = False
If chkAuftraege = vbChecked Then
sql = "Select " & lteAuftrag & " As LeistungTyp" _
& ", a.AuftragsID as VorgangID, a.NummerInt as VorgangNr,
ap.NummerExt as VorgPos, ap.Kurztext" _
& ", f.Firmen_Name, n.PLZ_Strasse, n.Ort, p.Partner_Nr" _
& ", Null As LSID, '' As LSNummer, '' as LSDatum, '' As PosNr" _
& " From ((((Auftraege a INNER JOIN AuftragsPositionen ap ON
a.AuftragsID = ap.VorgangID)" _
& " INNER JOIN Partner p ON p.Partner_Nr=a.PartnerID)" _
& " INNER JOIN Firmen f ON f.Firmen_Nr=p.Firmen_Nr)" _
& " INNER JOIN Niederlassungen n On n.Firmen_Nr=p.Firmen_Nr And
n.Niederlassungs_Nr=p.Niederlassungs_Nr)" _
& " Where a.Status<" & atrVerrechnet _
& " And Not Exists (Select LSID From Lieferpositionen lp Where
lp.LSAuftPos=ap.PosID)"
End If

If chkLieferscheine = vbChecked Then
If sql <> "" Then
sql = sql & " UNION "
IsUnion = True
End If
sql = sql & "Select " & lteLieferschein & " As LeistungTyp" _
& ", a.AuftragsID as VorgangID, a.NummerInt as VorgangNr,
ap.NummerExt as VorgPos, ap.Kurztext" _
& ", f.Firmen_Name, n.PLZ_Strasse, n.Ort, p.Partner_Nr" _
& ", l.LSID, l.LSNummer, l.Datum as LSDatum, lp.PosNr" _
& " From ((((((Auftraege a INNER JOIN AuftragsPositionen ap ON
a.AuftragsID = ap.VorgangID)" _
& " INNER JOIN Partner p ON p.Partner_Nr=a.PartnerID)" _
& " INNER JOIN Firmen f ON f.Firmen_Nr=p.Firmen_Nr)" _
& " INNER JOIN Niederlassungen n On n.Firmen_Nr=p.Firmen_Nr And
n.Niederlassungs_Nr=p.Niederlassungs_Nr)" _
& " LEFT JOIN LieferPositionen lp ON ap.PosID = lp.LSAuftPos)" _
& " LEFT JOIN Lieferscheine l on l.LSID = lp.LSID)" _
& " Where a.Status>" & atrInArbeit & " And a.Status<" &
atrVerrechnet _
& " And l.Status=" & lssGeliefert _
& " And lp.LSFaktPosID Is Null"
End If

If chkRechnungen = vbChecked Then
If sql <> "" Then
sql = sql & " UNION "
IsUnion = True
End If
sql = sql & "Select " & lteRechnung & " As LeistungTyp" _
& ", r.FakturaID as VorgangID, r.FakturaNr as VorgangNr,
rp.NummerInt as VorgPos, rp.Kurztext" _
& ", f.Firmen_Name, n.PLZ_Strasse, n.Ort, p.Partner_Nr" _
& ", l.LSID, l.LSNummer, l.Datum as LSDatum, lp.PosNr" _
& " From ((((((Fakturen r INNER JOIN FakturenPositionen rp ON
r.FakturaID = rp.VorgangID)" _
& " INNER JOIN Partner p ON p.Partner_Nr=r.PartnerID)" _
& " INNER JOIN Firmen f ON f.Firmen_Nr=p.Firmen_Nr)" _
& " INNER JOIN Niederlassungen n On n.Firmen_Nr=p.Firmen_Nr And
n.Niederlassungs_Nr=p.Niederlassungs_Nr)" _
& " LEFT JOIN LieferPositionen lp ON lp.LSFaktPosID = rp.PosID)" _
& " LEFT JOIN Lieferscheine l on l.LSID = lp.LSID)" _
& " Where r.Status=" & fakInArbeit _
& "" _
& ""
End If

Die lte...-, atr...- usw. -Variablen kommen aus Enumerationen.

Falls noch irgendwelche Infos notwendig sind - ich bin morgen leider auf
Dienstreise, kann also erst am Freitag antworten.

Lothar Geyer
 

Lesen sie die antworten

#1 Peter Fleischer
15/08/2008 - 08:08 | Warnen spam
"Lothar Geyer" schrieb im Newsbeitrag
news:
Ich habe mal wieder ein Problem, dem ich nicht auf die Sprünge komme. Es
geht um drei Select-Statements, die mit UNION verknüpft werden. Die
einzelnen Statements laufen ohne Probleme. Es ist auch alles Bestens, wenn
ich zwei davon - egal welche - per UNION verknüpfe. Sobald ich aber alle
drei verknüpfe, bekomme ich die Meldung "Datentypen in Kriterienausdruck
unvertràglich.". Das kommt mit doch sehr unlogisch vor. Der Fehler liegt
aber sicher bei mir - nur ich finde ihn nicht. Könnt ihr mir bitte helfen?



Hi Lothar,
da bleibt nichts anderes übrig, als alle Felder bezüglich Typ, Zulàssigkeit
von DBNull und Lànge=0 zu prüfen, insbesondere die Inhalte von lteAuftrag,
lteLieferschein, lteRechnung, die konkrete Feldnamen enthalten:

Auftraege a:
a.AuftragsID as VorgangID, a.NummerInt as VorgangNr,
ap.NummerExt as VorgPos, ap.Kurztext, f.Firmen_Name,
n.PLZ_Strasse, n.Ort, p.Partner_Nr,
Null As LSID, '' As LSNummer, '' as LSDatum, '' As PosNr

Auftraege a:
a.AuftragsID as VorgangID, a.NummerInt as VorgangNr,
ap.NummerExt as VorgPos, ap.Kurztext, f.Firmen_Name,
n.PLZ_Strasse, n.Ort, p.Partner_Nr,
l.LSID, l.LSNummer, l.Datum as LSDatum, lp.PosNr

Fakturen r:
r.FakturaID as VorgangID, r.FakturaNr as VorgangNr,
rp.NummerInt as VorgPos, rp.Kurztext, f.Firmen_Name,
n.PLZ_Strasse, n.Ort, p.Partner_Nr,
l.LSID, l.LSNummer, l.Datum as LSDatum, lp.PosNr


Viele Grüsse
Peter

Ähnliche fragen