| |

ADO.NET / DatenbankenRecordSet, SQL, Unterabfrage (sub-select) mit mehreren Ergebnissen abfangen? | |  | Autor: ewaldvb | Datum: 17.05.11 18:47 |
| Hallo,
ich hoffe ich fliege mit einer SQL-Frage nicht gleich hier raus.
Ich habe nun das Problem, dass ich eine Abfrage aufgrund von Eingabefeldinhalten selbst zusammenstelle und dazu aufgrund verschiedener Eingabe-/Auswahlmöglichkeiten auf Select-Ebene weitere Selects einbauen muss, wo aber mehrere Ergebniszeilen zurückkommen können.
Die fertig gebastelte Abfrage sieht so aus (ist im Echtbetrieb natürlich viel umfangreicher, ca 25 Auswahlfelder/Möglichkeiten):
Select KundenNummerRechung As Rechnung_An,
(Select isnull( (Select Lieferadresse From Adressen where KundenNummerLieferung = '12345'), 'NotFound')) As Lieferung_An
From Kunden
Die Unterabfrage wird nur eingefügt, wenn der Benutzer auch das Suchkriterium "Lieferadresse" ausfüllt.
Das Problem für die Unterabfrage:
Bei "kein Datensatz gefunden" (KundenNummerLieferung '12345' gibt es nicht) wird ISNULL schlagend und es kommt "NotFound" zurück. Soweit OK.
Werden aber mehere Zeilen mit KundenNummerLieferung = '12345' gefunden, bricht SQL natürlich berechtigter Weise mit der Fehlermeldung "Die Unterabfrage gab mehr als eine Wert zurück. Das ist ungültig, wenn.....".
Eigentlich dürfte so etwas ja gar nicht passieren, aber passiert eben doch, dass eine Nummer zweimal vergeben wird(Leichen?).
So, nun hilft kein Group By, kein MAX()/MIN() usw. Es sollte auch hier ein Fehler als Ergebnis zurückkommen, z.B. "MoreThanOne".
Es hilft nichts die Abfrage einfach zu ignorieren, in solchen Fällen sollte der Fehler ja auch Erkennbar gemacht werden, um entsprechend reagieren zu können.
Viel Theorie....
aber vielleicht weiss hier doch jemand Abhilfe.
lg
Ewald |  |
 RecordSet, SQL, Unterabfrage (sub-select) mit mehreren Ergeb... | 2.314 | ewaldvb | 17.05.11 18:47 |   Re: RecordSet, SQL, Unterabfrage (sub-select) mit mehreren E... | 1.312 | Micke | 18.05.11 11:21 |   Re: RecordSet, SQL, Unterabfrage (sub-select) mit mehreren E... | 1.228 | effeff | 18.05.11 13:36 |    Re: RecordSet, SQL, Unterabfrage (sub-select) mit mehreren E... | 1.143 | ewaldvb | 19.05.11 16:34 |     Re: RecordSet, SQL, Unterabfrage (sub-select) mit mehreren E... | 1.299 | Klaus1704 | 19.05.11 16:40 |      Re: RecordSet, SQL, Unterabfrage (sub-select) mit mehreren E... | 1.103 | ewaldvb | 19.05.11 17:14 |       Re: RecordSet, SQL, Unterabfrage (sub-select) mit mehreren E... | 1.086 | Micke | 20.05.11 11:11 |   Re: RecordSet, SQL, Unterabfrage (sub-select) mit mehreren E... | 1.163 | DaveS | 18.05.11 14:02 |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevISDN 1.0 
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevEingabe 3.0 
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|