"Diese Zeile gehört bereits zu einer anderen Tabelle"

05/06/2010 - 09:23 von Michael Kolowicz | Report spam
Die Aussage ist zwar verstàndlich, aber ich kann sie nicht nachvollziehen
und bitte daher um Mithilfe.

Ich habe ein Steuerelement das als Masseneingabeformular dienen soll. beim
öffnen des Formulars erzeuge ich mit folgender Methode ein DataRow-Objekt:

Public Function CreateEmptyData() As dsReports.ReportsRow
Dim _dtReports As New dsReports.ReportsDataTable
Dim _row As dsReports.ReportsRow

_row = _dtReports.NewReportsRow

With _row
.ReportGUID = ReturnGUID()
.ReportStatus = ReturnReportStatus()

.Created = Now
.CreatorGUID = ReturnNullGUID()
.LastModified = Now
.ModifierGUID = ReturnNullGUID()

.IsNotVisible = False
.CanNotDelete = False

End With

Return _row

End Function

Wenn der Anwender dann auf die Schatflàche SAVE drückt bzw. die
Enter-Taste betàtigt, dann werden die Werte, die in Textboxen und
Comboboxen gewàhlt werden konnten ausgelsen und angepasst und in das
dataRowObjekt geschrieben

Private Sub GetFormularData()

With ReportDataRow
.ReportDay = CDate(ReportsLogicCtl.CalculateLastDayOfMonth(txtReportMonth.Text, txtReportYear.Text) + "." + txtReportMonth.Text + "." + txtReportYear.Text)
.ReportStatus = cboStatus.SelectedValue.ToString

...
.ModifierGUID = CurrentUser.UserGUID
.LastModified = Now
.CreatorGUID = CurrentUser.UserGUID

End With

End Sub

Jetzt möchte ich gerne die Daten in die Datenbank schreiben. Wenn ich nun
folgenden Weg gehe, dann kommt der besagte Fehler, dass die Zeile schon zu
einer anderen Tabelle gehört:

Public Function AddReport(ByVal NewReport As dsReports.ReportsRow)
Dim Success As DBErrorTypes = DBErrorTypes.FAIL
Dim _adServiceReports As New dsReportsTableAdapters.ReportsTableAdapter
Dim _dtServiceReports As New dsReports.ReportsDataTable
Dim _rowCount As Integer = 0

Try
With _adServiceReports
.Connection.ConnectionString = Me.GetConnectionString
_dtReports.AddReportsRow(NewReport)
_rowCount = _adReports.Update(_dtReports)
Success = DBErrorTypes.OK
End With

Catch ex As Exception
Throw ex
End Try

Return Success
End Function

Meine Frage daher: Was ist der Grund des Fehlers und wie könnte man das
Problem lösen?
 

Lesen sie die antworten

#1 Elmar Boye
05/06/2010 - 10:51 | Warnen spam
Hallo Michael,

Michael Kolowicz schrieb:
Die Aussage ist zwar verstàndlich, aber ich kann sie nicht nachvollziehen
und bitte daher um Mithilfe.

Ich habe ein Steuerelement das als Masseneingabeformular dienen soll. beim
öffnen des Formulars erzeuge ich mit folgender Methode ein DataRow-Objekt:

Public Function CreateEmptyData() As dsReports.ReportsRow
Dim _dtReports As New dsReports.ReportsDataTable
Dim _row As dsReports.ReportsRow

_row = _dtReports.NewReportsRow




Hiermit gehört die _row zur _dtReports Instanz, auch wenn Du
den Verweis nicht zurückgibst.
Ein Wechsel des Besitzers (DataTable) ist spàter nicht möglich.

Jetzt möchte ich gerne die Daten in die Datenbank schreiben. Wenn ich nun
folgenden Weg gehe, dann kommt der besagte Fehler, dass die Zeile schon zu
einer anderen Tabelle gehört:

Public Function AddReport(ByVal NewReport As dsReports.ReportsRow)
Dim Success As DBErrorTypes = DBErrorTypes.FAIL
Dim _adServiceReports As New dsReportsTableAdapters.ReportsTableAdapter
Dim _dtServiceReports As New dsReports.ReportsDataTable
Dim _rowCount As Integer = 0

Try
With _adServiceReports
.Connection.ConnectionString = Me.GetConnectionString
_dtReports.AddReportsRow(NewReport)
_rowCount = _adReports.Update(_dtReports)
Success = DBErrorTypes.OK
End With



Sinnvoller wàre, eine Instanz-Variable von ReportsDataTable zu erstellen,
und diese weiter in AddReport zu verwenden und newReport gleichfalls als
Instanz-Variable zu deklarieren.

Gruß Elmar

Ähnliche fragen