Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Update - Berechnete Spalte

4 views
Skip to first unread message

Josef Morlo

unread,
Apr 7, 2012, 6:51:56 AM4/7/12
to
Hallo,

Ausangssituation:
Jet, Dataset mit Relationen, Form, zwei DataGridViews, m:n Relation mit
Vermittlungstabelle, zwei Bindingsources.

Funktioniert wie gewünscht (anzeigen, ändern, hinzufügen, löschen,
speichern).

Mit einer ComboBox hole ich den Klartext eines der Fremdschlüssel in das
zweite Grid.

Funktioniert auch wie gewünscht

Wenn ich nun eine berechnete Spalte hinzufüge

Dim dt As DataTable = mDtSet.Tables("Vermittlungstabelle")
dt.Columns.Add("Name", System.Type.GetType("System.String"), _
"Parent(RelN).Nachname" & _
" + ', ' + Parent(RelN).Anrede + ' ' + Parent(RelN).Vorname")

so funktioniert nur die Anzeige.

Wenn ich speichern will
Dim cb As New OleDbCommandBuilder(mDtAdapterVermittlungstabelle)
Dim tbl As DataTable = ds.Tables("Vermittlungstabelle").GetChanges
If tbl IsNot Nothing Then mDtAdapterVermittlungstabelle.Update(tbl)

meldet das Programm beim Erstellen der tbl eine ‚EvaluateException’:

„Die übergeordnete Beziehung 'RelN' kann nicht gefunden werden“.

Bin ratlos.

Danke für Hilfe und Gruß
Josef Morlo

Peter Fleischer

unread,
Apr 8, 2012, 3:30:21 AM4/8/12
to
Hi Josef,
mit GetChanges holst Du Dir eine Tabelle außerhalb des DataSets ohne
Beziehungen. Eine selbständige Tabelle kann keine Beziehungen zu anderen
Tabellen haben. Das funktioniert nur in einem DataSet.

Anstelle eine neue DataTable mit GetChanges zu erstellen, solltest Du Dir
nur ein Array der gewünschten DataRows holen. Wenn Du aber nur das Update
ausführen willst, brauchst Du nicht die zu aktualisierenden Datensätze
herausfiltern. Update macht das selbständig anhand der RowStates.

--
Viele Gruesse
Peter

Josef Morlo

unread,
Apr 8, 2012, 5:53:43 AM4/8/12
to
Hallo Peter,

> mit GetChanges holst Du Dir eine Tabelle außerhalb des DataSets ohne
> Beziehungen.

Der Hinweis war wichtig für mich, es liegt zwar auf der Hand, aber ich
hatte das bislang großzügig übersehen.

> Anstelle eine neue DataTable mit GetChanges zu erstellen, solltest Du Dir
> nur ein Array der gewünschten DataRows holen. Wenn Du aber nur das Update
> ausführen willst, brauchst Du nicht die zu aktualisierenden Datensätze
> herausfiltern. Update macht das selbständig anhand der RowStates.

Mit dieser Update-Überladung (Adapter(Update(DataRow())) läufts natürlich
rund durch :-)

Wiedermal herzlichen Dank!
Gruß
Josef Morlo

0 new messages