Fehler in der SQL-Abfrage?
C. Elsen
- datenbank
Hallo Leute.
Ich versuche gerade einen Kalender in ASP zu realisieren. Er basiert auf dem ASP Event Calendar von http://www.asp-dev.com/calendar/
Leider funktioniert der bei mir nicht. Also habe ich angefangen den umzuschreiben, aber wenn ich folgende SQL-Abfrage ausführe
Sql ="INSERT INTO db (datum, text) values (#" & DateValue(request("datum")) & "#, '" & request("txt") & "')"
bekomme ich die Fehlermeldung
Microsoft OLE DB Provider for ODBC Drivers-Fehler '80004005'
[Microsoft][ODBC Microsoft Access Driver] Operation muss eine aktualisierbare Abfrage verwenden.
Was bedeutet das? Ich hoffe ihr könnt mir weiterhelfen.
MfG
C.Elsen
Hi,
Sql ="INSERT INTO db (datum, text) values (#" & DateValue(request("datum")) & "#, '" & request("txt") & "')"
ich bin kein SQL-Experte, aber ich würde '#" & ... & "#' in Anführungszeichen setzen.
Cheatah
Hallo,
da war mal was gepostet zum Thema "datum" als Feldname bei Access, daß man das vermeiden soll, weil es ein reservierter Begriff ist..
Ich hatte damals auch Probleme damit, die sich nach Umbenennung gegeben haben.
Versuch doch das mal!
Gruß, Regina
Hallo.
Ich hab' die Tipps ausprobiert, aber es klappt leider immer noch nicht. :-(
Weder INSERT noch UPDATE.
Ich bekomme immer die Fehlermeldung
[Microsoft][ODBC Microsoft Access Driver] Operation muss eine aktualisierbare Abfrage verwenden.
Wo ist der Fehler? Unten habe ich mal (leicht geändert) das Script gepostet. Die erste Abfrage wird noch gemacht und dann kommt der Fehler.
MfG
C. Elsen
---------------------------------------------------------------------
<%
set my_conn= Server.CreateObject("ADODB.Connection")
my_conn.Open "DRIVER={Microsoft Access-Treiber (*.mdb)}; DBQ=C:\intranet\Diary\diary.mdb"
tmpDatum = DateValue(Request("view_Date"))
tmpDatum = year(tmpDatum) & "-" & month(tmpDatum) & "-" & day(tmpDatum)
StrSql= "SELECT * FROM diary WHERE (diary.dte=#" & tmpDatum & "#)"
set rs = my_conn.Execute (StrSql)
if rs.EOF then
StrSql ="INSERT INTO diary (dte, text_field) values (#" & tmpDatum & "#, '" & request("txt") & "')"
else
StrSql = "UPDATE diary SET diary.dte = #" & tmpDatum & "#, text_field = '" & request("txt") & "' WHERE id = " & rs("id")
End If
my_conn.Execute (strSql)
my_Conn.Close
set my_conn = nothing
%>
hi,
StrSql= "SELECT * FROM diary WHERE (diary.dte=#" & tmpDatum & "#)"
set rs = my_conn.Execute (StrSql)if rs.EOF then
»» StrSql ="INSERT INTO diary (dte, text_field) values (#" & tmpDatum & "#, '" & request("txt") & "')"
else
»» StrSql = "UPDATE diary SET diary.dte = #" & tmpDatum & "#, text_field = '" & request("txt") & "' WHERE id = " & rs("id")
End If
könntest Du an dieser Stelle mal den Inhalt von "StrSql" ausgeben?
Den ganzen A$P-Kram zuvor verstehe ich nicht, aber bei einer reinen SQL-Abfrage könnte man immerhin beurteilen, ob diese syntaktisch korrekt zusammengebaut ist ...
mfG - Michael
könntest Du an dieser Stelle mal den Inhalt von "StrSql" ausgeben?
Den ganzen A$P-Kram zuvor verstehe ich nicht, aber bei einer reinen SQL-Abfrage könnte man immerhin beurteilen, ob diese syntaktisch korrekt zusammengebaut ist ...mfG - Michael
Hallo.
Die SQL-Abfragen lauten:
Sql= "SELECT * FROM diary WHERE (diary.dte=#2000-6-6#)
Das ist die die noch funktioniert und dann kommen die beiden bei denen der fehler auftritt:
Sql = INSERT INTO diary (dte, text_field) values (#2000-6-6#, 'irgendein Text')"
und
Sql = UPDATE diary SET diary.dte = #2000-6-6#, text_field = 'irgendein Text' WHERE id = 1
Ich hoffe du kannst damit was anfangen.
MfG
C. Elsen
Hallo C.Elsen
Microsoft OLE DB Provider for ODBC Drivers-Fehler '80004005'
[Microsoft][ODBC Microsoft Access Driver] Operation muss eine aktualisierbare Abfrage verwenden.
Wahrscheinlich hat die Access-DB auf dem Server zuwenig Rechte.
Die Access-DB braucht mindestens Schreibrechte, setze also mal den User "Jeder" auf "Vollzugriff" (unter WinNT mit NTFS) und prüfe ob es funktioniert.
Weiter könnte auch noch das Dateiattribut "Schreibgeschützt" gesetzt sein (Eigenschaften->Allgemein). Dieses müsste entfernt werden.
Grüsse
Tom