Hallo,
ich hab ein Problem, und zwar will ich neue Datensätze über eine Userform erstellen lassen, allerdingt zeigt der Compiler immer wieder an, dass die entsprechende Spalte in der Tabelle nicht existiert...
private void AddParms(System.Data.Odbc.OdbcCommand cmd, params string[] cols)
{
foreach(string column in cols)
{
cmd.Parameters.Add
("@" + column, System.Data.Odbc.OdbcType.Char, 0, column);
}
}
private void InitializeCommands()
{
string connectionString = "DSN=Microsoft Access-Datenbank;DefaultDir=C:\\;DriverId=25;DBQ=C:\\Datenbank.mdb;Ma" +
"xBufferSize=2048;FIL=MS Access;PageTimeout=5;UID=admin";
System.Data.Odbc.OdbcConnection connection = new System.Data.Odbc.OdbcConnection(connectionString);
dataadapter.InsertCommand = connection.CreateCommand();
dataadapter.InsertCommand.CommandText = "INSERT INTO mannschaft " + "(Mannschaftsbez)" +
"VALUES(@Mannschaftsbez)";
AddParms(dataadapter.InsertCommand, "Mannschaftsbez");
Hier noch die Funktion die das ganze machen soll...
private void neuButton_Click(object sender, System.EventArgs e)
{
System.Data.DataRow newRow = datatable.NewRow();
newRow["Mannschaftsbez"] = textBox3.Text;
//Fehler tritt laut Debugger in der Zeile auf, aber verstehs nicht so richtig
datatable.Rows.Add(newRow);
try
{
dataadapter.Update(dataset, "mannschaft");
dataset.AcceptChanges();
Application.DoEvents();
}
catch(System.Data.Odbc.OdbcException ex)
{
dataset.RejectChanges();
MessageBox.Show(ex.Message);
}
}
Ich hoffe es kann mir jemand weiterhelfen, der Fehler tritt während der Laufzeit auf.
VIelen Dank im Voraus!
MFG Jaden
Lass dir doch mal alle Spalten der "newRow" ausgeben, vielleicht ist es ja nur ein Tippfehler.
...
String output = "";
foreach(DataColumn myCol in newRow.Table.Columns)
{
output = output + myCol.Caption.ToString() + "\n";
}
MessageBox.Show(output);
...
Oder
...
Benutze den Index von dem Feld, und nicht den Namen. "newRow[0] = <text>"
Das ist zwar nicht so schön zum lesen aber man kann es ja dokumentieren.
Danke für die Antwort, ich werds mal versuchen, ich geb dann bescheid, ob es funktioniert hat.
Hallo nochmal,
also muss dir danken, so funktionierts 🙂
Hab allerdings ein anderes Problem, ich weiß nicht wie ich einen Autowert in Access bahandeln muss? Immer wenn ich in die die betreffende Spalte schreiben will, schickt der mir deswegen ne meldung.
Wäre dankbar für hilfe.
MFG
Jaden
einfach sturr aus dem Weg gehen
Grund für den Fehler:
das schreiben in die Spalte macht Access alleine und möchte da nicht gestört werden 😉
Lösung:
in der Table die du hälst kannst du ja durch die Spalten iterieren und dort überprüfen ob es Primary Key ist und dann die Eigenschaft Autoinremment nutzen.
Ähm, erstmal danke ich dir danken für deine so kompetente Antwort 🙂
Allerdings kapier ich das nicht so richtig, haste vielleicht ein Code Beispiel?
Grüße