verwendetes Datenbanksystem: MS Access 2003
Hallo liebe Community,
ich habe mit C# eine Anwendung geschrieben, mit der ich auf eine MS-Access 2003 mittels des OleDBConnectors und SQLbefehle zugreife.
Nun ist es so, das ich im Code folgenden Insert-Befehl zusammensetze:
INSERT INTO T_Stellenangebot (ID, Stellenangebotsnummer, Berufsbezeichnung, Gültig_bis, Begin) VALUES (6, '123', 0, '21.04.2010', '21.04.2010')
und dieses an die Datensammlung weiterleiterleite.
Mein Problem ist, das ich dann jedes mal die Meldung bekomme, das es eine fehlerhafte SQL-Anweisung ist. Wenn ich aber in die SQL-Abfrage von Access wechsle und ihn dort eintippe, wird dieser Befehl fehlerfrei ausgeführt. Andere SQL-Befehle (egal ob select, update, delete bei allen Tabellen oder insert bei anderen Tabellen) werden auch ohne Probleme ausgeführt, nur bei dieser Tabelle wird der Insertbefehl jedes mal verweigert.
Kann mir jemand einen Tipp geben, warum es so ist? oder ist das nur wieder eine Macke von MS, nach dem Motto "Neustarten und nochmal versuchen"?
und so stellt sich wieder einmal die Frage: Warum klappt das nicht gleich so gut?
Du solltest ein Schlüsselwort in [] schreiben: also [begin].
Spaltennamen mit Umlauten find ich nicht schön, aber das ist ne andere Geschichte. ^^
erstmal danke für die schnelle antwort
WO genau soll das [begin] eingefügt werden? wenn ich es vpr das Insert setzte, gibt er mir die Meldung "ungültige SQL-Anweisung"
der zugriff erfolgt über folgenden code:
OleDbConnection con = new OleDbConnection(
@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + this.pfad);
con.Open();
dt = new DataTable();
OleDbCommand cmd = new OleDbCommand(SQLStatement, con);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
try
{
da.Fill(dt);
}
catch (Exception e)
{
throw e;
}
finally
{
con.Close();
}
return this.dt;
die Umlaute ahbe cih mittlerweile auch entfernt, daran kann es auch nicht liegen
und so stellt sich wieder einmal die Frage: Warum klappt das nicht gleich so gut?
Hallo
Wenn das Datum in der Access-Datenbank ein DateTime ist, musst du das Datum in der SQl mit ## umschliessen.
Wenn du mit Variablen in C# arbeitest mach es mit Parameter.
Gruss Lothi
Die #n helfen auch nicht, bekomme immernoch die Meldung das es einen Syntaxfehler in der Insertanweisung gibt
und so stellt sich wieder einmal die Frage: Warum klappt das nicht gleich so gut?
INSERT INTO
T_Stellenangebot
(ID, Stellenangebotsnummer, Berufsbezeichnung, Gültig_bis, [Begin])
VALUES
(6, '123', 0, '21.04.2010', '21.04.2010')
sorry, war wohl nicht ganz klar
DANKE 😄
Dieses Mal hat es geklappt. Ich hab die Spalte "Begin" in "BeginStellenangebot" umgenannt. erschien mir erst einmal einfacher als abfangroutinen mit schlüsselwortsuchen einzubauen.
Noch einmal Danke
und so stellt sich wieder einmal die Frage: Warum klappt das nicht gleich so gut?
Zusätzlich zum maskieren: [Artikelserie] Parameter von SQL Befehlen