vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

ADO.NET / Datenbanken
Updatefunktion 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ß
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Updatefunktion mit Realtionen - Hilfe809Revo02.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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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