skriver en gäst bok och förstår inte hur jag ska göra för att selecta en rad i databasen...
<%
set mincon =Server.CreateObject("ADODB.Connection")
set rs = server.createobject("ADODB.Recordset")
mincon.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\kalasmannen\db\db_guestbook.mdb")
SQL = "SELECT * from guestbook WHERE ID = '" & Request.Querystring("id") & "'"
rs.Open SQL, mincon
%>
och fel koden blir:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
/kalasmannen/msgnfo.asp, line
tror att det är nått fel på denna rad:
SQL = "SELECT * from guestbook WHERE ID = '" & Request.Querystring("id") & "'"
ADODB.Recordset error '800a0cb3'
Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype.
/kalasmannen/write.asp, line 47
<%
set mincon = Server.CreateObject("ADODB.Connection")
mincon.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\kalasmannen\db\db_guestbook.mdb")
msg = request.Form("msg")
name = request.Form("name")
mail = request.Form("mail")
webpage = request.Form("webpage")
icq = request.Form("icq")
query = "insert into t(msg,name,mail,webpage,icq,ip,date,time) values('" & msg & "','" & name &"','" & mail & "','" & webpage & "','" & icq & "','" & ip & "','" & date & "','" & time & "')"
mincon.execute query,,128
mincon.close
%>
men den tycks inte fungera...
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement.
/kalasmannen/write.asp, line 45
får jag som fel meddelande...
line 45 är:
mincon.execute query,,128
vad är fel på den då?
och jag har date och time i oloika för att de ska visas i olika rutor och jag tyckte att det blev enklast så
Jag undvek några problem som kan uppstå om man använder SQL.
Det första är reserverade ord. Om du använder date eller time t.ex. som kolumnnamn så blir det en konflikt då det är namnet på en funktion. För att undvika det så kan man antingen byta namn på kolumnen (rekommenderas) eller så får man skriva
query = "insert into t(msg,name,mail,webpage,icq,ip,[date],[time]) values('" & msg & "','" & name &"','" & mail & "','" & webpage & "','" & icq & "','" & ip & "','" & date & "','" & time & "')"
mincon.execute query,,128
Det blir samma problem om du skriver en select-sats så det är inget man kommer undan.
Det andra problemet är att man måste vara mer noga med vilken typ en kolumn är definierad som. Det påverkar hur man anger värdet i insert.
Följande gäller för Access
Text --> värdet anges inom '
datetime --> värdet anges inom #
number --> ingen avgränsare