22 messaggi dal 03 settembre 2003
ciao ragazzi,
vorrei inserire contemporaneamente tanti record i due colonne di database

-----code----
strSql="SELECT cart_productID, cart_quantity FROM Cart"

for x=0 to cod

strSql="INSERT INTO Cart (cart_productID, cart_quantity) VALUES ("& request.form("id"&x) &", "& request.form("qta"&x) &")"
objConn.Execute(strSql)

next

response.redirect "conferma.asp"
END IF
--------------------
pero' non capisco perche' mi da questo errore:
Errore di sintassi nell'istruzione INSERT INTO

la stringa e'giusta!?
11.878 messaggi dal 09 febbraio 2002
Contributi
si, sembra corretto...
forse uno dei valori request.form("id"&x) o request.form("qta"&x) è vuoto (?)

prova a escludere per un attimo questa riga:
objConn.Execute(strSql)
e anche il redirect. Mettici solo un response write:

Response.write strSQL & "<br>"

così puoi vedere se le stringhe sono giuste.
Ovviamente i campi cart_productID, cart_quantity sono numerici, giusto?

Enjoy learning and just keep making
22 messaggi dal 03 settembre 2003
si e' vero la stringa e' vuota:((

allora spiego meglio il mio problema.
vorrei inserire contemporaneamente tanti record nelle due colonne(cart_productID e cart_quantity) del database .
io ho pensato di farlo cosi:

creo due array: arrayID e arrayQta
---------
cod=TRIM(request.form("id"))
qta=TRIM(request.form("qta"))

arrayID=split(cod,",")
arrayQta=split(qta,",")
-------------------------------------
pero' qui sorge il mio problema: non so come settare le variabili di due array in un ciclo for...next. non so se e' possibile. credo di no, ma a questo punto dovrebbe essere qualche alternativa
tutta la sera che faccio vari tentativi, ma sono riuscita ad inserire solo un array nel database .
14 messaggi dal 10 settembre 2003
Il problema è che come hai scritto all' inizio non è possibile.

strSql="INSERT INTO Cart (cart_productID, cart_quantity) VALUES ("& request.form("id"&x) &", "& request.form("qta"&x) &")"
objConn.Execute(strSql)

Perchè in questo modo stai inserendo le stringhe separate da virgola in un unico record.
Per fare quello che serve a te dovrai realizzare un ciclo nel quale inserirai i record necessari.

Es:
'---------------------------------------------------
Dim arrayID, arrayQta
Dim iCount

arID=split(TRIM(request.form("id")) ,",")
arQta=split(TRIM(request.form("qta")) ,",")

For iCount=0 to UBound(arrayID)

strSql="INSERT INTO Cart (cart_productID, cart_quantity) VALUES (" & arID(iCount) & ", "& arQta(iCount)&")"

objConn.Execute(strSql)

Next
'-------------------------------------------------

Per fare una cosa più sicura potresti utilizzare anche la gestione delle transazione dell'oggetto connection.

22 messaggi dal 03 settembre 2003
grazie 1000 SARUZZO!!!
funziona!

perche' mi dici che per fare una cosa sicura dovrei utilizzare la gestione delle transazione dell'oggetto connection?
mi puoi spiegare meglio per favore.

grazie e ciao
14 messaggi dal 10 settembre 2003
L'oggetto connection mette a disposizione la possibilità in casi come questo di includere tutta la procedura in una transazione a patto che tu stia utilizzando un DB che te lo consente tipo SQLServer, MySQL e non access.
Do per scontato che il tuo DB supporti le transazioni.
Al codice funzionante aggiungi questo (dopo la dichiarazione delle variabili):

'--------------------------------------------------
On Error Resume Next

objConn.BeginTrans

'CICLO

'In caso di errore

if objConn.Errors.Count>0 then

'Esegue il Rollback della transazione ovvero riporta il DB
' allo stato in cui la transazione è cominciata

objConn.RollbackTrans

else

'Conferma la riuscita.
objConn.CommitTrans
end if
'---------------------------------------------------

Sinceramente non posso assicurarti la riuscita della cosa, comunque se utilizzi un DB tipo quelli che ho citato prima puoi fare un tentativo, fammi sapere.
22 messaggi dal 03 settembre 2003
Ti ringrazio per la tua risposta
Per quanto riguarda il database l?utilizzo Access.

buon lavoro e ciao!

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.