webForumDet fria alternativet

recset.open och apache,chili,mysql

6 svar · 341 visningar · startad av qlz

qlzMedlem sedan feb. 20033 inlägg
#1

Jag kör en windowsburk med apache, chili!asp och mysql på och när jag försöker uppdatera poster i databasen så säger den följande:

Microsoft OLE DB Provider for ODBC Drivers error '80040e21'

Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.

/phetlan/eusr.asp, line 406

och line 406 ser ut såhär:
rsU("i_rname") = srname

80040e21 handlar om att fältet(kolumnen) inte klarar av så stora värden som användaren försöker mata in, men det är inte det felet ligger i för jag får samma fel om jag tar bort en bokstav ur en sträng.
Vilken line felet ligger på varierar beroende på vilket fält jag försöker uppdatera... dom fält som man ändrar eller försöker ändra får detta fel medan dom fält som redan har samma värde som i databasen går.

Det hela får mig att tro att det har något med syntaxen att göra. att det inte funkar med rs.open eftersom det funkar med rena sql satser.

Hela koden:
'Recordset setup
Set rsU = server.createobject("adodb.recordset")
sql = "Select * from usr where u_id='" & iid & "'"
rsU.open sql, cn, adopenstatic, adlockoptimistic

if cusr = "true" then
rsU("u_usr") = susr
end if
if len(spwd) > 0 then
rsU("u_pwd") = spwd
end if
rsU("u_acp") = cacp
rsU("c_email") = semail
rsU("u_clan") = sclan
rsU("u_clanurl") = sclanurl
rsU("i_rname") = srname
rsU("i_loc") = sloc
rsU("f_sig") = fsig
rsU("pl_payd") = payd
if len(del) > 0 then
rsU("del") = "true"
end if
rsU.update
close(rsU)

ngn som har någon lösning, och jag vet inte riktigt hur man ska göra annars för som ni ser har jag if satser för att inte uppdatera alla columner då det kan variera från post till post.

PatrikBMedlem sedan mars 20002 836 inlägg
#2

du får nog lov att sätta rsU.CursorLocation = 3 innan du öppnar rs'et

cya,
PatrikB

qlzMedlem sedan feb. 20033 inlägg
#3

hjälpte tyvärr inte... :/

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Varför använder du inte sql då? Det finns ingen anledning att harva med recordsets i detta fall.

Denniz PoPMedlem sedan aug. 2002207 inlägg
#5

Får jag bara fråga en grej, varför kör du apache om du använder windows?

Engine^Medlem sedan dec. 20003 887 inlägg
#6
Dim strUsrSQL As String, strPwdSQL As String, strDelSQL As String
strUsrSQL = vbNullString
strPwdSQL = vbNullString
strDelSQL = vbNullString

If cusr = True Then strUsrSQL = "u_usr = '" & susr & "', "
If Len(spwd) > 0 Then strPwdSQL = "u_pwd = '" & spwd & "', "
If Len(del) > 0 Then strDelSQL = "del = 'true'"

strSQL = "UPDATE usr SET " & strUsrSQL & strPwdSQL & "u_acp = " & cacp & _
    ", c_email = '" & semail & "', u_clan = '" & sclan & "', u_clanurl = '" & _
    sclanurl & "', i_rname = '" & srname & "', i_loc = '" & sloc & "', f_sig = '" & _
    fsig & "', pl_payd = " & payd & strDelSQL & _
    " WHERE u_id = " & iid & ";"

cn.Execute strSQL, , adExecuteNoRecords

Borde väl göra det du vill...

qlzMedlem sedan feb. 20033 inlägg
#7

Engine tack jag löste det själv på precis samma sätt.

Denniz: för att jag inte är så bra på linux samt att mitt webhotell kör linux+apache+chiliasp ...och det är inte 100% kompatibelt med IIS.

Även det att IIS inte är så säkert heller.

248 ms totalt · 3 externa anrop · v20260731065814-full.30151723
131 ms — hämta forumlista (db)
115 ms — hämta statistik (db)
124 ms — hämta tråd, inlägg och bilagor (db)