Salve a tutti, avrei un problema con una pagina che continua a darmi il seguente errore:
tipi di dati non corrispondenti nell'espressione criterio
Praticamente il mio problema è questo.
Ho una tabella con degli articoli ed una foto ( nel caso dovessi associare una sola foto a quell'articolo ) e una, correleta, per le foto aggiuntive.
TABELLA ARTICOLI
IDarticoli
articolo
ecc
foto
rndField ( numerico )
TABELLA FOTOARTICOLI
IDfoto
articoloID
foto
Devo memorizzare, assieme agli altri dati inseriti dall'utente, un dato da noi impostato: dopo l'inserimento basterà interrogare la tabella alla ricerca di questo valore per ottenere l'ID del record. Inoltre, il codice che recupera l'ID mediante questa interrogazione, dovrà essere insensibile agli eventuali ritardi nella creazione del record sul database.
Nel form da compilare aggiungo un campo nascosto a cui assegno, come valore l'ID di sessione ossia, il codice HTML del campo è:
codice:
<input type="hidden" name="rndField" value="<%= Session.SessionID%>">
Non posso usare il metodo Request dal momento che faccio l'upload delle foto.
Dopo invio i dati ad una pagina che mi calcolerà lID:
codice:
MM_editConnection = MM_piscinola_STRING
MM_editTable = "articoli"
MM_editRedirectUrl = "trova.asp?rndField=" & Session.SessionID
ora il problema sorge nella pagina successiva quando poi vado a svuotare il campo rndField della tabella, altrimenti, in un successivo inserimento da parte dello stesso utente, essendo la SessionID la stessa, succede un casino. La pagina è la seguente:
codice:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
Dim objRs__MMColParam, intID
objRs__MMColParam = "1"
If (Request.QueryString("rndField") <> "") Then
objRs__MMColParam = Request.QueryString("rndField")
End If
%>
<%
Dim objRs
Dim objRs_numRows
Dim MM_editRedirectUrl
MM_editRedirectUrl = "insert_altre_foto_prima.asp"
Set objRs = Server.CreateObject("ADODB.Recordset")
objRs.ActiveConnection = MM_piscinola_STRING
objRs.Source = "SELECT IDarticoli FROM articoli WHERE rndField = " + Replace(objRs__MMColParam, "'", "''") + ""
objRs.CursorType = 0
objRs.CursorLocation = 2
objRs.LockType = 1
//objRs.Open()
objRs_numRows = 0
// Inizializza il ciclo semi-infinito
Do
// Apre il recordset
objRs.Open()
// Verifica se esiste il record
If Not objRs.EOF Or Not objRs.BOF Then
// Recupera l'ID
intID = objRs.Fields("IDarticoli")
End If
// Chiudo il recordset
objRs.Close()
// Chiude il ciclo
Loop Until intID > 0
%>
<%
Set Conn=server.createobject("adodb.connection")
Conn.Open MM_piscinola_STRING
'Set RS = Server.CreateObject("ADODB.Recordset")
// svuota il campo rndField ( numerico )
StrSQL = "UPDATE articoli set rndField = NULL Where IDarticoli = '" & IDarticoli & "'"
Conn.execute StrSQL
Conn.close
Set objRs = Nothing
set Conn = nothing
Session("AltreFoto") = intID
// Richiama la pagina per l'inserimento altri dati trasmettendo anche l'ID
Response.Redirect(MM_editRedirectUrl)
//Response.Write(Session("AltreFoto"))
Response.End
%>
Funziona tutto, ma quando ho aggiunto l'istruzione UPDATE, mi da l'errore citato prima.
Sbaglio da qualche parte ma non riesco a capire dove.
Chi mi da una mano???? Sono bloccato da mezza giornata
Grazie e Bye