Hallo!
Deine Haupttabelle ist "Bestellungen". Dort willst Du �ndern bzw.
einf�gen. Also:
SELECT ...
FROM Bestellungen RIGHT JOIN Produkte ON ...
WHERE ...
... liefert auf jeden Fall alle Produktdaten, auch wenn keine
Bestelldaten vorhanden sind, oder
SELECT ...
FROM Bestellungen LEFT JOIN Produkte ON ...
WHERE ...
Liefert nur dann Produktdaten, wenn Bestelldaten vorhanden sind, sowie
bestellte Produkte, die es vielleicht gar nicht gibt. ;-) In dem Fall
w�re dann vielleicht doch ein INNER JOIN angebracht.
Mit einem ClientSide-Cursor m�sstest Du jetzt auf jeden Fall Deine
Bestelldaten einf�gen und �ndern k�nnen. Client-Side-Cursor bedeutet,
dass ADO die Kontrolle �bernimmt, also wenn die Datenbank ein Feature
nicht unterst�tzt, macht ADO einen Wordaraound. Dazu greift ADO auf
Properties zu:
Das Property "UNIQUE TABLE" wird in ADO verarbeitet und nicht in der
Datenbank. Deshalb steht auch dazu nichts in der T-SQL-Dokumentation.
Aber in der MSDN w�rdest Du eine ganze Menge dazu finden (Knowledge
Base, ...). Dort findest Du auch Informationen zum Property "UPDATE
RESYNC", was Du ggf. ben�tigst, damit ADO die Daten aus der verkn�pften
Tabelle resynchronisiert.
> EIne Frage die nun bleibt:
>
> Wie schaffe ich es, da� ich nicht nur die Tabelle Produkt angezeigt
bekomme,
> sondern z.B. die Tabelle ProduktKategorie
(ProduktKategorie.KategorieID =
> Produkt.ProduktKategorie) miteinbeziehen kann?
Bei einem weiteren JOIN m�sstest Du wahrscheinlich mit "UNIQUE TABLE"
arbeiten, aber vielleicht kannst Du ja die Felder einzeln einbauen,
indem Du anstelle eines Spaltennamens ein komplettes Sub-SELECT
einsetzt:
SELECT ...,
(SELECT ProduktKategorie.Name
FROM Produktkategorie
WHERE ...),
...
FROM Bestellungen LEFT JOIN
Produkte ON ...
Im Sub-Select kannst Du die Verkn�pfung �ber die Where-Klausel
herstellen. Das ist kein echter JOIN, aber mitunter sogar performanter.
Auf keine Fall w�rde ich eine 3-stufige Verkn�pfung mit egal welcher
Datenbank aktualisieren wollen. Ich bevorzuge da die "sichere" Methode
mit mehreren SELECTs oder mit einem hierarchischen Recordset oder mit
Stored Procedures, aber ich vermute jetzt, dass Du keine Web-Applikation
schreibst, sondern eine VB- oder VBA-Applikation, stimmst? Im Web machst
Du ja kein UPDATE direkt auf das Recordset, das Du f�r die Anzeige der
Werte ben�tigst.
Freundliche Gr��e
Joachim van de Bruck
| [aspdedatabase] als [email protected] subscribed
| http://www.aspgerman.com/archiv/aspdedatabase/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspdedatabase.asp