Moin,
Ich muss ein kleines Programm schreiben, in dem Daten von einer Form für einen Roboter abgespeichert werden, je nach Produkt sende ich dem die Daten dann. (Das nur am Rande)
Dazu habe ich mir ein Dataset und eine Accessdatenbank angelegt. Ich hab das kleine Dataset aus VisualStudio und aus Acces angehängt als Bild
Als ich nur mit dem Dataset gearbeitet habe, hatte ich noch keine Probleme, jetzt wo ich die Acces angehängt habe, bekomme ich den Fehler:
"System.Data.OleDb.OleDbException: "Der Datensatz kann nicht hinzugefügt oder geändert werden, da ein Datensatz in der Tabelle 'Form' mit diesem Datensatz in Beziehung stehen muss."
Und ich weiß leider nicht weiter wo ich den Fehler suchen muss.
Wenn ich mir das Dataset während der Laufzeit ansehe, schreibt er die richtigen IDs in die Tabelle.
Kann mir eventuell jemand einen Hinweis geben?
Mit der Methode fülle ich das Dataset:
Hier tritt der Fehler auf, wenn ich in die Acces schreiben will.
So speichere ich in die Accesdatei:
Viele Grüße
Ich muss ein kleines Programm schreiben, in dem Daten von einer Form für einen Roboter abgespeichert werden, je nach Produkt sende ich dem die Daten dann. (Das nur am Rande)
Dazu habe ich mir ein Dataset und eine Accessdatenbank angelegt. Ich hab das kleine Dataset aus VisualStudio und aus Acces angehängt als Bild
Als ich nur mit dem Dataset gearbeitet habe, hatte ich noch keine Probleme, jetzt wo ich die Acces angehängt habe, bekomme ich den Fehler:
"System.Data.OleDb.OleDbException: "Der Datensatz kann nicht hinzugefügt oder geändert werden, da ein Datensatz in der Tabelle 'Form' mit diesem Datensatz in Beziehung stehen muss."
Und ich weiß leider nicht weiter wo ich den Fehler suchen muss.
Wenn ich mir das Dataset während der Laufzeit ansehe, schreibt er die richtigen IDs in die Tabelle.
Kann mir eventuell jemand einen Hinweis geben?
Mit der Methode fülle ich das Dataset:
VB.NET-Quellcode
- Sub savetoDataset()
- movelast()
- 'Zuerst die Form ...
- FormdatenDataSet.Form.AddFormRow(CInt(AnzahlSteineTextBox.Text), CInt(SteinehoeheTextBox.Text), FormnameTextBox.Text)
- 'Me.FormTableAdapter.Update(Me.FormdatenDataSet.Form)
- 'Dann die Greifer mit seinen Zonen.....
- If CbAnzahlSteintypen.SelectedItem >= 1 Then
- FormdatenDataSet.Greifer.AddGreiferRow(CInt(X_OffsetTextBox1.Text), CInt(Y_OffsetTextBox1.Text), CInt(Z_OffsetTextBox1.Text), 1, Zone1CheckBox1.CheckState, Zone2CheckBox1.CheckState, Zone3CheckBox1.CheckState, Zone4CheckBox1.CheckState,
- Zone5CheckBox1.CheckState, Zone6CheckBox1.CheckState, Zone7CheckBox1.CheckState, Zone8CheckBox1.CheckState, Zone9CheckBox1.CheckState,
- Zone10CheckBox1.CheckState, Zone11CheckBox1.CheckState, Zone12CheckBox1.CheckState)
- ' Me.GreiferTableAdapter.Update(Me.FormdatenDataSet.Greifer)
- End If
- If CbAnzahlSteintypen.SelectedItem >= 2 Then
- FormdatenDataSet.Greifer.AddGreiferRow(CInt(X_OffsetTextBox2.Text), CInt(Y_OffsetTextBox2.Text), CInt(Z_OffsetTextBox2.Text), 2, Zone2CheckBox2.CheckState, Zone2CheckBox2.CheckState, Zone3CheckBox2.CheckState, Zone4CheckBox2.CheckState,
- Zone5CheckBox2.CheckState, Zone6CheckBox2.CheckState, Zone7CheckBox2.CheckState, Zone8CheckBox2.CheckState, Zone9CheckBox2.CheckState,
- Zone10CheckBox2.CheckState, Zone11CheckBox2.CheckState, Zone12CheckBox2.CheckState)
- ' Me.GreiferTableAdapter.Update(Me.FormdatenDataSet.Greifer)
- End If
- If CbAnzahlSteintypen.SelectedItem >= 3 Then
- Me.GreiferBindingSource.MoveLast()
- FormdatenDataSet.Greifer.AddGreiferRow(CInt(X_OffsetTextBox3.Text), CInt(Y_OffsetTextBox3.Text), CInt(Z_OffsetTextBox3.Text), 3, Zone1CheckBox3.CheckState, Zone2CheckBox3.CheckState, Zone3CheckBox3.CheckState, Zone4CheckBox3.CheckState,
- Zone5CheckBox3.CheckState, Zone6CheckBox3.CheckState, Zone7CheckBox3.CheckState, Zone8CheckBox3.CheckState, Zone9CheckBox3.CheckState,
- Zone10CheckBox3.CheckState, Zone11CheckBox3.CheckState, Zone12CheckBox3.CheckState)
- ' Me.GreiferTableAdapter.Update(Me.FormdatenDataSet.Greifer)
- End If
- If CbAnzahlSteintypen.SelectedItem >= 4 Then
- Me.GreiferBindingSource.MoveLast()
- FormdatenDataSet.Greifer.AddGreiferRow(CInt(X_OffsetTextBox4.Text), CInt(Y_OffsetTextBox4.Text), CInt(Z_OffsetTextBox4.Text), 4, Zone1CheckBox4.CheckState, Zone2CheckBox4.CheckState, Zone3CheckBox4.CheckState, Zone4CheckBox4.CheckState,
- Zone5CheckBox4.CheckState, Zone6CheckBox4.CheckState, Zone7CheckBox4.CheckState, Zone8CheckBox4.CheckState, Zone9CheckBox4.CheckState,
- Zone10CheckBox4.CheckState, Zone11CheckBox4.CheckState, Zone12CheckBox4.CheckState)
- ' Me.GreiferTableAdapter.Update(Me.FormdatenDataSet.Greifer)
- End If
- 'Und dann noch die steine..
- For Each row As DataGridViewRow In DgvSteine.Rows
- FormdatenDataSet.Stein.AddSteinRow(row.Cells(1).Value, row.Cells(2).Value, row.Cells(0).Value, 1,
- DirectCast(DirectCast(Me.FormBindingSource.Current, DataRowView).Row, FormdatenDataSet.FormRow),
- DirectCast(DirectCast(Me.GreiferBindingSource.Current, DataRowView).Row, FormdatenDataSet.GreiferRow))
- 'Me.SteinTableAdapter.Update(Me.FormdatenDataSet.Stein)
- Next
- Me.TabControlEX1.SelectedIndex = 3
- End Sub
Hier tritt der Fehler auf, wenn ich in die Acces schreiben will.
So speichere ich in die Accesdatei:
Viele Grüße