Thompa__85Medlem sedan aug. 2002601 inlägg
Tjosan!
Tänker uppdatera i databasen..
har denna SQL sats:
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath ("databas/dagbok.mdb")
sql = "insert into anv Where id="& request.QueryString("id") (sida, sidinfo, siddatum) values(' minsida.asp?id='"&request.querystring("id")&"' ', ' Spanar in minsida ', '"& Now() &"')"
connect.execute(sql)
Men har försökt fram å tillbaka.. men får de inte att funka :(
Får detta felmeddelande:
Microsoft VBScript compilation error '800a0401'
Expected end of statement
/adde/star/2/minsida2.asp, line 44
sql = "insert into anv Where id="& request.QueryString("id") (sida, sidinfo, siddatum) values(' minsida.asp?id='"&request.querystring("id")&"' ', ' Spanar in minsida ', '"& Now() &"')"
---------------------------------------------------------------------------------------^
Någon som vet vad jag gör för fel?
Vore jätte glad om ni kunde hjälpa mig!!
// Adde
K@llenMedlem sedan mars 20032 654 inlägg
Hej,
Du kan inte ha where-klausulen i en insert, dessutom inte på den plats den befinner sig på nu.
Vad vill du göra, skicka in data i databasen eller uppdatera den samma?
m_soderlundMedlem sedan sep. 20024 733 inlägg
Testa med UPDATE i stället:
UPDATE anv SET sida = 'minsida.asp?id=" & Request.Querystring("id") & "', sidinfo = 'Spanar in min sida', Siddatum = Now() WHERE id=" & Request.Querystring("id")
Engine^Medlem sedan dec. 20002 861 inlägg
Du kan inte använda ett WHERE-uttryck i en INSERT INTO-fråga, eftersom det inte kan existera ett resultat innan du stoppat in posten. Det verkar som om du vill göra en update
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Provider = "Microsoft.Jet.OleDb.4.0"
strSQL = "UPDATE anv SET sida = 'minsida.asp?id=" & Request.QueryString("id") & ", " & _
"sidinfo = 'Spanar in minsida', " & _
"siddatum = '" & Now() & "' " & _
"WHERE id = " & Request.QueryString("id")
objConn.Open "Data Source=" & Server.MapPath("databas/dagbok.mdb")
objConn.Execute strSQL, lngRA, 128
If lngRA = 0 Then
strSQL = "INSERT INTO anv (sida, sidinfo, siddatum) VALUES (" & _
"'minsida.asp?id="& Request.QueryString("id") & "', " & _
"sidinfo = 'Spanar in minsida', " & _
"siddatum = '" & Now() & "')"
objConn.Execute strSQL, , 128
End If
objConn.Close
Set objConn = Nothing
Thompa__85Medlem sedan aug. 2002601 inlägg
Engine^ skrev:
Du kan inte använda ett WHERE-uttryck i en INSERT INTO-fråga, eftersom det inte kan existera ett resultat innan du stoppat in posten. Det verkar som om du vill göra en update
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Provider = "Microsoft.Jet.OleDb.4.0"
strSQL = "UPDATE anv SET sida = 'minsida.asp?id=" & Request.QueryString("id") & ", " & _
"sidinfo = 'Spanar in minsida', " & _
"siddatum = '" & Now() & "' " & _
"WHERE id = " & Request.QueryString("id")
objConn.Open "Data Source=" & Server.MapPath("databas/dagbok.mdb")
objConn.Execute strSQL, lngRA, 128
If lngRA = 0 Then
strSQL = "INSERT INTO anv (sida, sidinfo, siddatum) VALUES (" & _
"'minsida.asp?id="& Request.QueryString("id") & "', " & _
"sidinfo = 'Spanar in minsida', " & _
"siddatum = '" & Now() & "')"
objConn.Execute strSQL, , 128
End If
objConn.Close
Set objConn = Nothing
Får det att funka halft..
får detta felmeddelande:
Microsoft JET Database Engine error '80040e14'
Syntax error (missing operator) in query expression ''minsida.asp?id={33BD0255-46BC-4E2C-82EC-20E8DE9DDFF6}, sidinfo = 'Spanar in minsida', siddatum = '2003-11-14 14:13:53' WHERE id = {33BD0255-46BC-4E2C-82EC-20E8DE9DDFF6}'.
/adde/star/2/minsida2.asp, line 50
och rad 50 är denna kod:
objConn.Execute strSQL, lngRA, 128
Varför?
OveRRidEMedlem sedan feb. 20018 509 inlägg
PeeerMedlem sedan mars 20025 362 inlägg
Prova
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Provider = "Microsoft.Jet.OleDb.4.0"
strSQL = "UPDATE anv SET sida = 'minsida.asp?id=" & Request.QueryString("id") & "', " & _
"sidinfo = 'Spanar in minsida', " & _
"siddatum = '" & Now() & "' " & _
"WHERE id = '" & Request.QueryString("id") &"'"
objConn.Open "Data Source=" & Server.MapPath("databas/dagbok.mdb")
objConn.Execute strSQL, lngRA, 128
If lngRA = 0 Then
strSQL = "INSERT INTO anv (sida, sidinfo, siddatum) VALUES (" & _
"'minsida.asp?id="& Request.QueryString("id") & "', " & _
"'Spanar in minsida', " & _
"'" & Now() & "')"
objConn.Execute strSQL, , 128
End If
objConn.Close
Set objConn = Nothing
Om du använder access får du byta ut ' till # runt dina datum
Jesper TMedlem sedan nov. 20017 058 inlägg
Thompa__85Medlem sedan aug. 2002601 inlägg
Peeer skrev:
Prova
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Provider = "Microsoft.Jet.OleDb.4.0"
strSQL = "UPDATE anv SET sida = 'minsida.asp?id=" & Request.QueryString("id") & "', " & _
"sidinfo = 'Spanar in minsida', " & _
"siddatum = '" & Now() & "' " & _
"WHERE id = '" & Request.QueryString("id") &"'"
objConn.Open "Data Source=" & Server.MapPath("databas/dagbok.mdb")
objConn.Execute strSQL, lngRA, 128
If lngRA = 0 Then
strSQL = "INSERT INTO anv (sida, sidinfo, siddatum) VALUES (" & _
"'minsida.asp?id="& Request.QueryString("id") & "', " & _
"'Spanar in minsida', " & _
"'" & Now() & "')"
objConn.Execute strSQL, , 128
End If
objConn.Close
Set objConn = Nothing
Om du använder access får du byta ut ' till # runt dina datum
Får detta felmeddelande:
Microsoft JET Database Engine error '80040e57'
The field is too small to accept the amount of data you attempted to add. Try inserting or pasting less data.
/adde/star/2/minsida2.asp, line 50
rad 50:
objConn.Execute strSQL, lngRA, 128
@ndersMedlem sedan juni 200026 914 inlägg
Har du kollat så texten du försöker lägga in verkligen får plats i fälten? Det verkar ju onekligen som om något av textfälten är för litet?
Thompa__85Medlem sedan aug. 2002601 inlägg
men vilket fält är det den klagar på?
@ndersMedlem sedan juni 200026 914 inlägg
Något av dem. Spelar det någon roll? Det är bara att gå igenom din tabell och tänka till.
Skriv ut den färdiga SQL-frågan så ser du ju hur mycket data du försöker stoppa in i vilket fält.
Engine^Medlem sedan dec. 20002 861 inlägg
Jesper T skrev:
Vad är "lngRA"?
En personlig förkortning på lngRecordsAffected. Man kan skicka den som argument till Connection.Execute för att få veta hur många records som påverkades av frågan.
Thompa_85: Storleken på textfältet i vilket du sparar id:t måste vara minst 38.
Peeer skrev:
Om du använder access får du byta ut ' till # runt dina datum
Nja, om du använder Access tidigare än 2002 ;)
Thompa__85Medlem sedan aug. 2002601 inlägg
Ändrade ett fält från "Text" till PM, Vilket verkar funka bra! :)
Vad är skillnaden mellan TEXT och PM?
K@llenMedlem sedan mars 20032 654 inlägg
Text klarar 255 tecken, PM klarar 64000 tecken om jag inte minns fel.
Thompa__85Medlem sedan aug. 2002601 inlägg
oj de va stor skillnad!
Ett till mini problem!
strSQL = "UPDATE anv SET sida = 'minsida.asp?id=" & Request.QueryString("id") & "', " & _
"sidinfo = 'Spanar in minsida', " & _
"siddatum = '" & Now() & "' " & _
"WHERE id = '" & Request.QueryString("id") &"'"
Där det står "Spanar in minsida".. vill jag att de ska va:
Spanar in <%=rs("anv")%>.. men det funkar inte.. :(
Engine^Medlem sedan dec. 20002 861 inlägg
strSQL = "UPDATE anv SET sida = 'minsida.asp?id=" & Request.QueryString("id") & "', " & _
"sidinfo = '" & rs("anv") & "', " & _
"siddatum = '" & Now() & "' " & _
"WHERE id = '" & Request.QueryString("id") &"'"
Jag skulle vilja säga att det inte är praktiskt att ha id-fältet som PM. Det tar onödig plats och gör datahanteringen betydligt långsammare. Använd Text istället och sätt storleken till så mycket som behövs (din id-sträng var 38 tecken om jag räknade rätt, så sätt storleken till exempelvis 40).
Thompa__85Medlem sedan aug. 2002601 inlägg
hur ändrar jag storleken?
Thompa__85Medlem sedan aug. 2002601 inlägg
hmm det är inställt på Textstorlek: 50
Engine^Medlem sedan dec. 20002 861 inlägg
I Access.
Öppna designen för tabellen.
Markera raden Id.
I nedre delen av fönstret är det ett antal rader med olika inställningar.
(Förutsatt att Id nu är av typen Text) Ändra Field Size/Fältstorlek till 40. Default är den förvisso 50 tror jag.
Nu kan du även passa på att kontrollera dina andra fälts värden. Förmodligen lär du behöva göra fältet sida större. Öka till 75 eller 100, så borde det räcka.