| |

ADO.NET / DatenbankenUpdatefunktion mit Realtionen - Hilfe | |  | Autor: Revo | Datum: 02.12.07 23:38 |
| Hallo,
Es geht um folgendes: Ich Lade eine SQL Datenbank mit VB2005 und alles was ich in vb editiere wird auch gespeichert. Alles ging, bis ich eine Relation zwischen zwei scheintabellen erstellt habe. Ich kopiere einfach mal wie das abgekürzt aussieht:
Dim db As Database
Dim cmd As DbCommand
Dim ds As New DataSet
Dim sql As String
Dim dv As New DataView
db = Connection.Default_DB()
'Oberjobs
sql = "SELECT person_ID..."
sql &= "Where special_ID = 0"
cmd = db.GetSqlStringCommand(sql)
db.LoadDataSet(cmd, ds, "tab1")
'Unterjobs
sql = "SELECT person_ID..."
sql &= "Where special_ID <> 0"
cmd = db.GetSqlStringCommand(sql)
db.LoadDataSet(cmd, ds, "tab2")
ds.Relations.Add("tab1_tab2", ds.Tables(0).Columns(0), _
ds.Tables(1).Columns(12))
dv = ds.Tables(0).DefaultView
End Try
Return dv So, die "..." nach den person_ID einfach ignorieren da stand zuviel wollte nicht zuviel kopieren. Dank diese Relation, stehen alle personen die eine zahl ausser die 0 bei special_ID haben unter den personen die eine zahl als 0 haben. Also ganz leicht, alle kinder stehen unter dem vater. So, bevor ich die Relationen gemacht habe konnte man alles wunderbar updaten, aber jetzt mit den relationen werden nur die Personen mit dem special_ID 0, bzw. die nirgendwo untergeordet sind(Vater) geupdatet und die ander werden einfach ignoriert. Vllt sollte ich da einfach mal den Updatevorgang zeigen:
For Each row As DataRow In CType(Me.ListPersonen.DataSource, _
DataView).Table.Rows
If row.RowState = DataRowState.Modified Then
person_ID = CInt(row.Item("person_ID"))
... 'alle spalten die in der Tabelle noch sind
special_id = CInt(row.Item("special_id"))
Data.SavePersons(...) So, mit dem Befehl geht er einfach alle zeilen durch und schaut ob da was geändert wurde, falls JA , dann wird das in der Datenbank geupdatet. Aber irgendwie werden jetzt wiegesagt die unterzeilen ignoriert, die werden garnicht angesprochen, nur die Oberpersonen, also die mit der special_ID 0. Das liegt sicher daran, dass nur die "tab1" bzw. ds.tables(0) angesprochen wird und das andere "tab2" - ds.tables(1) ist zwar in meien vb liste aber dennoch nicht ansprechbar.
Wie löse ich jetzt das problem? Habe gehört, durch das DataView kann man nur eine Tabelle ansprechen und das wäre dann wohl nur die 0 und das andere wird nur angezigt(die unterzeilen,kinder) aber nicht angesprochen. Ich müsste irgendwie dafür sorgen dass auch die andere tabelle bzw. einfach alles was in der liste ist angesprochen wird, weil genau das passiert hier nicht.
Und wiegesagt, ohne relationen klappt alles wunderbar, also brauche ich eigentlich doch nur einen kleinen tipp(?)
Ich danke schonmal,
Gruß |  |
 Updatefunktion mit Realtionen - Hilfe | 809 | Revo | 02.12.07 23:38 |
 | 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 |
  |
|
sevAniGif (VB/VBA) 
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 EURWeitere 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
|
|