| |

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.315 | 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.300 | 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 Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Neu! sevCommand 4.0 
Professionelle Schaltflächen im modernen Design!
Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. 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
|
|