125 messaggi dal 17 luglio 2002
Posso eseguire un update su una tabella in questo modo?

<%
frmMARCA=Request.Form("pcmarca")
frmMODEL=Request.Form("pcmod")
frmCPU=Request.Form("pccpu")
frmRAM=Request.Form("pcram")
frmHD=Request.Form("pchd")
'frmSN=Request.Form("pcsn")
frmINST=Request.Form("pcinst")
frmIP=Request.Form("ip")
frmNOME=Request.Form("nomepc")
frmFLOP=Request.Form("floppy")
frmROM=Request.Form("cdrom")
frmOS=Request.Form("os")
frmOFF=Request.Form("office")
frmLIC=Request.Form("licenza")
frmNOR=Request.Form("norton")
frmEXT=Request.Form("estensione")
frmACC=Request.Form("accessori")
frmPOR=Request.Form("deskport")
frmUSR=Request.Form("utente")
frmHSN=Request.Form("pcsnhidden")


Set connectionToDatabase=Server.CreateObject("ADODB.Connection")
connectionToDatabase.ConnectionTimeout=60
connectionToDatabase.Open "DSN=inventariomi"

sqlStatement="UPDATE PC SET pcmarca = '"& frmMARCA & "', pcmod = '" & frmMODEL & "', pccpu = '" & frmCPU & "', pcram = '" & frmRAM & "', pchd = '" & frmHD & "', pcinst = '" & frmINST & "', ip = '" & frmIP & "', nomepc = '" & frmNOME & "', floppy = '" & frmFLOP & "', cdrom = '" & frmROM & "', os = '" & frmOS & "', office = '" & frmOFF & "', licenza = '" & frmLIC & "', norton = '" & frmNOR & "', estensione = '" & frmEXT & "', accessori = '" & frmACC & "', deskport = '" & frmPOR & "', id_utente = '" & frmUSR & "' where pcsn = '"frmHSN"'"

Set recordSet=connectionToDatabase.Execute(sqlStatement)

connectionToDatabase.Close
Set connectionToDatabase=Nothing
%>

MILANO SAIMA CAMPIONE D'ITALIA 2003
3.122 messaggi dal 16 maggio 2002
Scusa, ma perche' non ci provi invece di chiederlo??
Certo che puoi, assicurati solo di mettere gli apici dove hai campi testo e di non metterli dove hai campi numerici. Inoltre assicurati che la dimensione delle variabili che vai a scrivere non ecceda la dimensione dei corrispondenti campi, ne' sia nulla nel caso in cui il campo non possa essere di lunghezza nulla.

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!
125 messaggi dal 17 luglio 2002
lo chiedo perchè non funziona. Ti ripropongo il codice leggermente corretto (vedi gli apici)

<%
frmMARCA=Request.Form("pcmarca")
frmMODEL=Request.Form("pcmod")
frmCPU=Request.Form("pccpu")
frmRAM=Request.Form("pcram")
frmHD=Request.Form("pchd")
'frmSN=Request.Form("pcsn")
frmINST=Request.Form("pcinst")
frmIP=Request.Form("ip")
frmNOME=Request.Form("nomepc")
frmFLOP=Request.Form("floppy")
frmROM=Request.Form("cdrom")
frmOS=Request.Form("os")
frmOFF=Request.Form("office")
frmLIC=Request.Form("licenza")
frmNOR=Request.Form("norton")
frmEXT=Request.Form("estensione")
frmACC=Request.Form("accessori")
frmPOR=Request.Form("deskport")
frmUSR=Request.Form("utente")
frmHSN=Request.Form("pcsnhidden")
frmNG=Request.Form("gestito")
frmDISQ=Request.Form("disco_q")
frmNSTA=Request.Form("nome_standard")
frmPSW=Request.Form("password_accensione")

Set connectionToDatabase=Server.CreateObject("ADODB.Connection")
connectionToDatabase.ConnectionTimeout=60
connectionToDatabase.Open "DSN=inventariomi"

sqlStatement="UPDATE PC SET pcmarca = '"& frmMARCA & "', pcmod = '" & frmMODEL & "', pccpu = '" & frmCPU & "', pcram = ' & frmRAM & ', pchd = '" & frmHD & "', pcinst = '" & frmINST & "', ip = '" & frmIP & "', nomepc = '" & frmNOME & "', floppy = '" & frmFLOP & "', cdrom = '" & frmROM & "', os = '" & frmOS & "', office = '" & frmOFF & "', licenza = '" & frmLIC & "', norton = '" & frmNOR & "', gestito = '"frmNG"', estensione = '" & frmEXT & "', accessori = '" & frmACC & "', deskport = '" & frmPOR & "', id_utente = ' & frmUSR & ', disco_q = '"& frmDISQ & "', password_accensione = '"& frmPSW & "', nome_standard = '""frmNSTA"' where pcsn = '"frmHSN"'"

Set recordSet=connectionToDatabase.Execute(sqlStatement)


connectionToDatabase.Close
Set connectionToDatabase=Nothing
%>


Questo è l'errore


HTTP 500.100 - Internal Server Error - ASP error
Internet Information Services

--------------------------------------------------------------------------------

Technical Information (for support personnel)

Error Type:
Microsoft VBScript compilation (0x800A0401)
Expected end of statement
/gii/updatepc.asp, line 37, column 407


Browser Type:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)

Page:
POST 349 bytes to /gii/updatepc.asp

POST Data:
pcmarca=HP&deskport=Desktop&pcmod=VECTRA+VL+420&utente=Bertin+Renato&pccpu=PIV+1.6&accessori=&pcram=128&disco_q=SI&pchd=19&password_accensione=NO&nome_standard=SI&pcinst=11%2F12%2F2004&pcsnhidden=NL20 . . .



grazie mille

MILANO SAIMA CAMPIONE D'ITALIA 2003
43 messaggi dal 06 settembre 2002
Ciao.
Prima di tutto un consiglio.
quando fai:
frmMARCA=Request.Form("pcmarca")
ti consiglio di fare (sui campi di testo):
frmMARCA=replace(Request.Form("pcmarca"),"'","''")

Cosi' ti garantisci la corretta esecuzione della query nel caso uno dei campi di testo contenga un carattere apice ( ' ), o apostrofo, che dir si voglia.
Per esempio, facendo come hai fatto tu, se il contenuto di uno dei campi e': L'ALBERO, la tua query genera un errore, dovuto all'apice.
Se pero' fai la replace, nella query risultera': L''ALBERO, e non ci saranno errori.

Detto questo...
L'errore e' probabilmente dovuto al troncamento della stringa che rappresenta la query, o a qualche virgoletta errata.
Per esempio, se scrivi:

sql="UPDATE pippo = 'valore' AND
testo = 'prova' "

riceverai un errore perche' sei andato a capo spezzando la stringa.

Devi scrivere invece:
sql="UPDATE pippo = 'valore' AND testo = 'prova' "

Ricontrolla bene tutta la stringa, aggiungi le replace di ' con '' (doppio apice, non virgoletta doppia!), e vedrai che tutto funziona.

Ah, in utlimo, non hai bisogno di scrivere:
Set recordSet=connectionToDatabase.Execute(sqlStatement)

Ti basta questo:
connectionToDatabase.Execute sqlStatement

Perche' l'update non ti ritorna un recordset.

BYE

Bye





Luca
www.blade-runner.it
3.122 messaggi dal 16 maggio 2002
Esatto, anche io la penso come cyberman.
Magari in testa alla pagina puoi aggiungere questa funzione
<%
function sqlstring(fstring)
sqlstring=replace(fstring,"'","''",1,-1,1)
end function
%>
che ti sostituisce gli apici con apici doppi. Poi applica questa funzione a tutti gli elementi presi dal form.
Poi se ti dà ancora errore in testa alla pagina ggiungi un
on error resume next
e stampa sqlstatement dopo (o anche prima) l'esecuzione. Da lì puoi vedere i campi errati.

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.