sawMedlem sedan mars 20011 880 inlägg Jag försöker att hitta ett fel i en uppdate.
Så här ser request form ut:
Form: Id=15&
Namn=Horst+Eckhardt&
Adress=Middagsv%E4gen+10&
Ort=352+61+V%E4xj%F6&
Tel=0470+-+633+19&
Epost=horst.eckhardt@sorman.com&
Hsida=hemsidor.torget.se%2Fusers%2Fh%2Fhdec%2F&
teknik=Akvarell%2C+Grafik%
&medBild=HE_B%E5tbrygga.jpg&
medBild=HE_Gotlandshus.jpg&
medBild=HE_P%E5_v%E4g.jpg&
medBild=HE_Vinterlandskap.jpg&
medBild=HE_ytter%F6n.jpg&
btnsubmit=Uppdatera
'SQL:en
Update t_medlem
Set Namn ='Horst Eckhardt',
Adress ='Middagsvägen 10',
Ort ='352 61 Växjö',
Epost ='horst.eckhardt@sorman.com',
Tel ='0470 - 633 19' ,
Hemsida ='hemsidor.torget.se/users/h/hdec/',
Teknik ='Akvarell, Grafik ' WHERE ID =15
'och jag får detta error
VBScript Errors Occured:
Error Number=424
Error Descr.=Objekt krävs.
Source=Körningsfel i Microsoft VBScript
Om jag avmarkera min uppdate, så försvinner felet, men jag
är inte f-n till att finna felet.
Kan ni???
:q
LarsGMedlem sedan dec. 200012 464 inlägg Då det är ett VB-fel så har det egentligen inget med din update att göra.
Ett fel som
Error Descr.=Objekt krävs
tyder på att du anger ett ogiltigt command eller connection objekt i ditt executeanrop.
sawMedlem sedan mars 20011 880 inlägg Det som är lustigt är ju att den uppdatera, men jag tycker
inte om att ha ett error.
sawMedlem sedan mars 20011 880 inlägg Det finns ingen On Error...
Här kommer kod:
Case "Uppdatera"
SQL = "Update t_medlem Set Namn ='" & sNamn & "',
Adress ='" & sAdress & "',Ort ='" & sOrt & "',
Epost ='" & sEpost & "',Tel ='" & ValidTel(sTel) & "' ,
Hemsida ='" & sHsida & "',Teknik ='" & TRIM(sTekn) & "'
WHERE ID ="& Request("Id") & ""
Connection.Execute(SQL)
if LEN(Request("Id"))>0 then
Connection.Execute("DELETE FROM t_medBild WHERE Id ="& Request("Id"))
sNmedBild = split(smedBild, ",", -1, 1)
For i = 0 to ubound(sNmedBild)
SQL = ("Insert INTO t_medBild(Id,Bild)VALUES( " & Request("Id") & ",'" & TRIM(sNmedBild(i)) & "' )")
Connection.Execute(SQL)
If err.number <> 0 Then
'response.Clear
Response.write("<P>VBScript Errors Occured:" & "<br>")
Response.write("Error Number=" & err.number & "<br>")
Response.write("Error Descr.=" & err.description & "<br>")
Response.write("Source=" & err.source & "<br>")
err.clear
end if
Next
end if
response.write sNamn & " är nu uppdaterad i databasen"
Case "Ta bort medelandet"
@ndersMedlem sedan juni 200032 969 inlägg Fel:
SQL = "Update t_medlem Set Namn ='" & sNamn & "',
Adress ='" & sAdress & "',Ort ='" & sOrt & "',
Epost ='" & sEpost & "',Tel ='" & ValidTel(sTel) & "' ,
Hemsida ='" & sHsida & "',Teknik ='" & TRIM(sTekn) & "'
WHERE ID ="& Request("Id") & ""
Connection.Execute(SQL)
Rätt:
SQL = "Update t_medlem Set Namn ='" & sNamn & "', " & _
"Adress ='" & sAdress & "',Ort ='" & sOrt & "', " & _
"Epost ='" & sEpost & "',Tel ='" & ValidTel(sTel) & "' , " & _
"Hemsida ='" & sHsida & "',Teknik ='" & TRIM(sTekn) & "' " & _
"WHERE ID ="& Request("Id")
Connection.Execute(SQL)
Om du inte har någon on error resume next förstår jag inte varför du har ett block där du skriver ut information om error-objektet. Du borde visserligen inte heller få någon utskrift från den koddelen, mså det kan vara någon annan kod ovanför detta som också är fiskig. Jag förstår inte heller hur det uppdateras i databasen, eftersom ASP-koden där du skapar SQL-frågan är helt felaktig...
Mvh
Du måste ju ha en On Error Resume Next, hur fångar du annars felen med If err.number <> 0 Then.
Har du On Error Resume Next så är det inte säkert att du får det rätta felet utan du får se ett fel som kommit senare som en bieffekt av det första felet.
Sen så behöver man se vilken rad det riktiga felet kom på.
Ett tips är dessutom att läsa på lite om SQL-injection. Din kod är inte särskilt säker som den är nu.
sawMedlem sedan mars 20011 880 inlägg Erik
Den koden ligger högre upp:
Dim sNamn,sAdress,sOrt,sEpost,sTel,smedBild,sNmedBild,SQL,sHsida
sNamn = FixaTecken(Request.Form("Namn"))
sAdress = FixaTecken(Request.Form("Adress"))
sOrt = FixaTecken(Request.Form("Ort"))
if LEN(Request.Form("Tel"))> 5 then
sTel = FixaTecken(Request.Form("Tel"))
end if
'i functionen
IF isNull(strText)Then
FixaTecken = strText
Else
strText = Replace(strText,"'","''")
strText = Replace(strText,"´","´´")
strText = Replace(strText,"|","|")
FixaTecken = strText
End if
Detta borde väll räcka?
@nders.
Jag la till err.objecter därför att jag fick något mysko fel, som jag
ännu inte har hittat.
Du tycker att jag har lagt upp min ASP-kod felaktig, vad är då felet
och hur bör jag ändra?
PS
När jag la in din SQL (av någon anledning så fick jag in två fnuttar
där), så fick jag bort felmedelandet.
Klart mitt fel.
Jag är väldigt tacksam för att ni försöker att hjälpa mig här.
@ndersMedlem sedan juni 200032 969 inlägg
Du tycker att jag har lagt upp min ASP-kod felaktig, vad är då felet
och hur bör jag ändra?
Det var ju precis det jag visade i mitt inlägg?
sawMedlem sedan mars 20011 880 inlägg Det var alltso SQL:en du menade, inte det andra?
@ndersMedlem sedan juni 200032 969 inlägg "Nja"
Jag menade ASP-koden som skapar SQL-frågan.
Man kan inte bara radbryta i strängar hur som helst, utan man måste avsluta och meddela att man ska fortsätta på nästa rad.
sawMedlem sedan mars 20011 880 inlägg OK, men det var faktiskt på det viset, för att kunna visa det här,
så gick jag in och manuellt radbröt för att sidan inte skulle vara
för bred (jag hatar det).
Så i min iver att försöka visa min kod snyggt, så bidde de lite
galet ;-)
saw skrev:
Detta borde väll räcka?
"WHERE ID ="& Request("Id")
Här kan man mata in lite vad man vill. Gäller även i dina inserts...
sawMedlem sedan mars 20011 880 inlägg Tack för att ni tog er tid att hjälpa mig