Du hast Recht und ich gelobe Besserung !
Zuerst einmal möchte ich mich für die Antwort bedanken und mich für meinen etwas rauheren Ton vorher entschuldigen. Wer kennt das nicht, wenn Du nach stundenlangen Suchen und Probieren die Lösung immer noch nicht parat hast, obwohl Du Dir alle Mühe gegeben hast. Dann kommt der Punkt der Erschöpfung und ganz sicher auch eine Folge der Überarbeitung, und dann sehe auch ich den Wald vor lauter Bäumen nicht mehr. Dann bin ich überreizt und reagiere über. Es tut mir leid.
Dieses Forum, und das muss auch einmal geschrieben werden, zählt zu den Besten, was ich in den letzten Jahren erleben durfte, ich wertschätze die Kompetenz aller, und von Dir Fzelle ganz besonders. Und ich bin immerhin seit 1980 dabei. Genau genommen sogar seit 1974, wo ich noch als Operateur mit Lochkarten arbeiten durfte, die der neueren Generation wohl nicht mehr bekannt sein dürfte.
Und ich lege auch grossen Wert darauf, das dies kein manipulatives Lob ist, weil ich nicht weiterkomme und Hilfe erwarte.
Nun zum eigentlichen Problem , ich kann nach wie vor keinen Datensatz aus einer firebird Tabelle löschen, obwohl ich der Tabelle adressen, die ich ja nur zum Testen verwende, ein Feld Nr mit einem eindeutigen Schlüssel, einen Primärindex versehen habe. Es kommt nach wie vor die gleiche Fehlermeldung.
Jetzt habe ich mich entschlossen, die einzelnen Prozeduren meines Testprogrammes für firebird mal zu Posten. Möglicherweise habe ich ich ja irgendwas Wichtiges übersehen oder auch nicht verstanden oder einen Fehler eingebaut der mir nicht bewusst ist.:
Das ist selbsterklärend, im übrigen habe ich einen entsprechenden Verweis eingefügt.
Imports System.Data
Imports FirebirdSql.Data.FirebirdClient Public Class Form1
Private DataAdapter As FbDataAdapter
Private ds As New DataSet
Private BindingSource As New BindingSourc
.....
END Class Befüllen des Dataadapters im Form.Load Ereignis:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
DataAdapter = New FbDataAdapter("SELECT * FROM adressen", GetConnection( _
))
DataAdapter.Fill(ds)
Dim cb As New FbCommandBuilder(DataAdapter)
BindingSource.DataSource = ds.Tables(0)
BindingNavigator1.BindingSource = BindingSource
DataGridView1.DataSource = BindingSource
End Sub Datensatz löschen (funktioniert nicht und bricht mit obiger bekannter Fehlermeldung ab
Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button9.Click
Dim antwort As String
ds.Tables(0).Rows(0).Delete()
If ds.HasChanges Then
' OK und Abbrechen, Stop-Symbol, Titelzeile "Test"
antwort = MsgBox("Vorsicht!", vbOKCancel + vbCritical, "Test")
If antwort = vbOK Then
' OK wurde geklickt
ds.Tables(0).Rows(0).Delete()
BindingSource.EndEdit()
DataAdapter.Update(ds.Tables(0))
Else
' Abbrechen wurde geklickt
End If
End If
End Sub Und im Form Closing Ereignis:
Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As _
System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
Dim Text As String
Dim Antwort As String
Text = "Änderungen speichern ?"
If ds.HasChanges Then
Antwort = MessageBox.Show(Text, "Achtung !", _
MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning)
If Antwort = Windows.Forms.DialogResult.Yes Then
Antwort = MessageBox.Show("Änderungen wurden erfolgreich" & _
"gespeichert!", "Hinweis", MessageBoxButtons.OK, _
MessageBoxIcon.Information)
BindingSource.EndEdit()
DataAdapter.Update(ds.Tables(0))
End If
If Antwort = Windows.Forms.DialogResult.No Then
Antwort = MessageBox.Show("Änderungen wurden nicht" & _
"gespeichert!", "Hinweis", MessageBoxButtons.OK, _
MessageBoxIcon.Information)
End If
If Antwort = Windows.Forms.DialogResult.Cancel Then
Antwort = MessageBox.Show("Vorgang wurde abgebrochen.", _
"Hinweis", MessageBoxButtons.OK, MessageBoxIcon.Information)
e.Cancel = True
End If
End If
End Sub Wie gesagt das ist ja erst ein Testprogramm, bevor ich mich an mein erstes Projekt mit Firebird Programm .
Und hier noch die Struktur meiner Testtabelle adressen:
CREATE TABLE ADRESSEN (
NR INTEGER NOT NULL,
NAME VARCHAR(20),
VORNAME VARCHAR(20)
);
ALTER TABLE ADRESSEN ADD CONSTRAINT PK_ADRESSEN PRIMARY KEY (NR);
Vielleicht erbarmt sich ja ein Experte und hilft mir aufs Pferd.
Danke!
ralli
Windows XP Home Service Pack 3 - Visual Basic 2008 Express - SQL Server 2008 Express with advance service |