vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

ADO.NET / Datenbanken
Update & Insert via TableAdapter: Beziehung als auch Fremdschlüsseleinschränkung 
Autor: VB Master
Datum: 30.09.11 13:18

Hallo zusammen,

ich habe in meinem DataSet zwei Tabellen (Order und OrderDetails).
(Beziehung als auch Fremdschlüsseleinschränkung)

Einstellungen im DataSet:
Regel aktualisieren = Cascade
Regel löschen = Cascade

Tabelle Order:
OrderID = Primärschlüssel der Order Tabelle (AutoIncrement = True)
OrderReferenz = Textspalte

Tabelle OrderDetails:
OrderDetailsID = Primärschlüssel der OrderDetails Tabelle (AutoIncrement = True)
OrderFK = Fremdschlüsselspalte in der OrderDetails Tabelle

Folgendes hat mir Visual Staudio automatisch generiert:
OrderTableAdapter
OrderDetailsTableAdapter
TableAdapterManger

Mit folgendem Code füge ich neue Datensätze in ein DataTable ein und lasse den TableAdapterManager entscheiden wie diese in meine Datenbank einfügt:

 
' Datensatz für die Order erzeugen
Dim row As DataRow
Dim table As DataTable = Me.myDataSet.Order
 
row = Me.myDataSet.Order.NewRow
row("OrderID") = 1 'Nur relevant für DataTable - wird vom DBMS später neu 
' vergeben
row("OrderReferenz") = "Parent1"
 
table.Rows.Add(row)
 
'Datensatz für OrderDetails erzeugen (verknüpft mit Orders)
Dim rowChild As DataRow
Dim tableChild As DataTable = Me.myDataSet.OrderDetails
rowChild = Me.myDataSet.OrderDetails.NewRow
 
rowChild("OrderDetailsID") = 1 'Nur relevant für DataTable - wird vom DBMS 
' später neu vergeben
rowChild("OrderFK") = 1 ' Gleicher Wert wie weiter oben für die OrderID 
' verwendet wurde
 
tableChild.Rows.Add(rowChild)
 
Me.TableAdapterManager.UpdateAll(Me.PACTBlueBoxDataSet)
Soweit so Gut. Das funktioniert prima. In meiner Datenbank werden nun neue Datensätze angelegt und die Schlüssel bzw. Werte der Fremdschlüsselspalte "OrderFK" werden vom DBMS zugewiesen.

Jetzt versuche ein Update auf bestehende Daten in meiner Datenbank zu machen.

Hintergrund:
Ich lese eine CSV Datei myOrders.cvs (mehrere tausend Datensätze). Allerdings bekomme ich nicht die OrderID übermittelt sonder nur die OrderReferenz.

Ist die OrderReferenz in der Datenbank vorhanden dann möchte ich ein Update machen. Wenn nicht dann ein Insert.

Wie mache ich das am besten?

(Im zweiten Schritt lese ich eine zweite CSV Datei OrderDetails.csv. Hier gilt genau das selbe. Entweder Update oder Insert - Insert geht natürlich nur dann wenn schon eine Order engelegt wurde!)

Bin für jeden Tipp dankbar.

Blumen sind die sch?nste Sprache der Welt!
Visual Basic ist die aller sch?nste

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Update & Insert via TableAdapter: Beziehung als auch Fremdsc...2.485VB Master30.09.11 13:18

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 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