27. januar 2005 - 16:17Der er
6 kommentarer og 2 løsninger
Kan nogen se hvad fejlen er her?
Hej
Jeg har her nedenfor et ASP-script som skal ændre en værdi i nogle angivne felter. Altså alle de stedet hvor idUser er det som den har fået vir dens querystring...
<% Rfile = request.querystring("file") idUser = request.querystring("idUser") Dim rs
'Creating the Recordset Object Set rs = Server.CreateObject("ADODB.RecordSet")
'Creating a DSN-Less connection to your Database strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("../db.mdb")
if rs.EOF then response.redirect "../main.asp?idUser=" & request.querystring("idUser") & "" else Do Until rs.EOF
rs("pic") = "" & Rfile & ""
rs.MoveNext Loop rs.close set rs = Nothing response.redirect "../main.asp?idUser=" & request.querystring("idUser") & "" end if %>
Men det der sker i stedet er at den bare ændre hele kolonnen i tabellen i stedet... Og den ændrer alså ikke kun der hvor idUser er det som det skal være, men hele kolonnen i tabellen...
Du kan bruge en mere direkte metode til at opdatere rækker i en tabel, nemlig:
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("../db.mdb") set conn = Server.CreateObject("ADODB.Connection") SQL = "UPDATE deFIRST SET pic='" & Rfile & "' WHERE idUser='" & idUser & "'" conn.Open conn.Execute(SQL) conn.Close set conn = nothing
Ovenstående kode forudsætter at idUser rent faktisk er en text i databasen. Hvis det er en tal (som det vil være hvis det er AutoNumber), så skal du fjerne opostrofferne omkring idUser i SQL'en...
Synes godt om
Slettet bruger
27. januar 2005 - 23:12#3
Hej
Det virker altså stadig ikke! Heller ikke selvom jeg har fulgt de ovenstående anvisninger... Det den gør, er stadig at den bare overskriver samtlige poster i min tabel i den kolonne som hedder "pic", med det den nu har fået besked på... Så den er stadig ligeglad med "idUser"-ordren. Alså om at det kun er der hvor idUser er noget bestemt at den skal overskrive...
Koden som stadig ikke virker ser nu sådan her ud:
<% Rfile = request.querystring("file") idUser = request.querystring("idUser") Dim rs
'Creating the Recordset Object Set rs = Server.CreateObject("ADODB.RecordSet")
'Creating a DSN-Less connection to your Database strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("../db.mdb")
on error resume next ' slå standard fejlmeddelelser fra
set conn = Server.CreateObject("ADODB.Connection") showError conn.Open showError conn.Execute(SQL) showError conn.Close showError set conn = nothing
on error goto 0 ' slå standard fejlmeddelelser til igen...
sub showError() ' err er det globale objekt som indeholder den seneste fejl ' der er opstået. Denne skal checkes umiddelbart efter den ' sætning som man vil undersøge for fejl, ellers vil err ' blive overskrevet med fejlkoden for den næste sætning ' (og hvis den går godt bliver fejlobjektet nulstillet og ' du ignorerer dermed den pågældende fejl på siden). if err.number <> 0 then ' Så kan man redirect'e til en anden side eller skrive en inline besked Response.Write "Err: " & err.number & " / " & err.Description & "<br>" on error resume next ' bare luk forbindelsen, hvis den ikke er åben fejler ' kaldet, men det er jo ligemeget for vi har slået ' fejlhåndtering fra... ikke pænt, man burde checke ' om forbindelsen er åben inden man lukker conn.close Response.End end if end sub
Synes godt om
Slettet bruger
31. januar 2005 - 13:59#8
Hej
Nu virker det!!! Tusind tak skal du have!!!
Med venlig hilsen
Dan
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.