Ciao a tutti,
questo è il mio problema.
All'interno di una form ho inserito il codice (che trovate qui sotto) che richiama una procedura pl/sql per l'aggiornamento dei dati su un DB Oracle. La procedura (vi posto anche questa) è semplicissima. Infatti esegue un semplice update in tabella.
La form rappresenta le informazioni di un cliente e i dati che devo modificare sono i servizi da questo acquistati. Ora, nella tabella RelaServAzie che vado a modificare i servizi possono essere distribuiti su più mesi (ovvero vari record) oppure su un solo mese (un solo record).
Bene, l'update funziona qualche volta si e altre noVVoVe: , ovvero alcune volte mi esegue l'update, mentre altre non fa assolutiamente nulla, oppure mi da questo errore
Qualche consiglio, perchè sono davvero in alto maredocument.datiformserv(); è nullo o non è un oggetto![]()
Grazie a tutti in anticipo.
Di seguito i codici (in alcuni casi sono dovuto andare a capo per problemi di visualizzazione di questo post)
pagina principale
Procedura pr_modirelaservaziedatadisd.aspcodice:<tr> <td class=rigatabella colspan="4" bgcolor="#979CA9"> SERVIZI </td> </tr> <% sqlcont = "SELECT CODI_AZIE,CODI_SERV FROM RELASERVAZIE where CODI_AZIE="&vc_codiazie&" GROUP BY CODI_AZIE,CODI_SERV" Set rscont = Server.CreateObject("ADODB.Recordset") Set cn = Server.CreateObject("ADODB.Connection") cn.Open application("ConnDB") Set rscont.ActiveConnection = cn rscont.Open sqlcont, cn %> <SCRIPT LANGUAGE="JavaScript"> <% do while not(rscont.eof) %> function checkCommitServ() { document.datiformserv.submit(); } <% rscont.movenext loop %> </script> <% sqlvasprelaservaziefatt ="SELECT CODI_AZIE,CODI_SERV FROM RELASERVAZIE where CODI_AZIE="&vc_codiazie&" GROUP BY CODI_AZIE,CODI_SERV" response.write sqlvasprelaservaziefatt Set rsserv = Server.CreateObject("ADODB.Recordset") Set cn = Server.CreateObject("ADODB.Connection") cn.Open application("ConnDB") Set rsserv.ActiveConnection = cn rsserv.Open sqlvasprelaservaziefatt, cn if not rsserv.EOF then %> <tr> <td colspan="4"> <table border="0" width="100%"> <tr class=rigatabella> <td width="40%" class=rigatabella>Servizio</td> <td width="40%" class=rigatabella>Data Disdetta</td> <td width="10%" align="center" class=rigatabella >Modifica</td> </tr> <% do while not(rsserv.eof) %> <form name="datiformserv" method="post" action="procedure/pr_modirelaservaziedatadisd.asp?vc_tipooper=U"> <tr> <td> <% sqldescserv =" SELECT DESC_SERV "_ &" from PARASERV "_ &" where CODI_SERV='"& rsserv("CODI_SERV") &"' " response.write sqldescserv Set rsdescserv = cn.Execute(sqldescserv) if not rsdescserv.eof then %> <input type="text" readonly maxlength="300" name="CODI_AZIE" value="<%=rsserv("CODI_AZIE")%>" size="38" class="campireadonlynotnull"> <input type="text" readonly maxlength="300" name="CODI_SERV" value="<%=rsserv("CODI_SERV")%>" size="38" class="campireadonlynotnull"> <input type="text" readonly maxlength="300" name="DESC_SERV" value="<%=rsdescserv("DESC_SERV")%>" size="60" class="campireadonlynotnull"> <% end if rsdescserv.Close set rsdescserv = Nothing %> </td> <td> <% sqldatadisd =" SELECT DATA_DISD "_ &" from RELASERVAZIE "_ &" where CODI_SERV='"& rsserv("CODI_SERV") &"' "_ &" AND CODI_AZIE='"& rsserv("CODI_AZIE") &"' " response.write sqldescserv Set rsdatadisd = cn.Execute(sqldatadisd) if not rsdatadisd.eof then %> <input type="text" maxlength="100" name="DATA_DISD" value="<%=rsdatadisd("DATA_DISD")%>" onchange="javascript:contdata(DATA_DISD)" size="12" class="campinull"> <% end if rsdatadisd.Close set rsdatadisd = Nothing %> </td> <td align="center"> <a href="javascript:javascript:checkCommitServ()" title="Salva le modifiche"> [img]images/Icons/images.jpg[/img]</a> </td> </tr> </form> <% rsserv.movenext loop %> </table> <% rsserv.Close set rsserv = Nothing rscont.Close set rscont = Nothing else %> <td colspan="4"> <table border="0" width="100%"> <tr class=testolabel> <td> Nessun servizio acquistato <td> </tr> </table> <% end if %> </td> </tr>
Procedura PL/SQLcodice:<% iStoredProc = 4 Set conn = Server.CreateObject("ADODB.Connection") set command = Server.CreateObject("ADODB.Command") conn.Open application("ConnDB") command.ActiveConnection = conn command.CommandText = "PR_MODISERVAZIEDATADISD" command.CommandType = iStoredProc vc_user = session("vc_userprop") if request("vc_tipooper")="U" then 'PROCEDURA DI MODIFICA ' parametri ' formato: nomecampo, tipo CAMPO 200=VARCHAR,7= DATA, tipo di parametro 1= INPUT 2=OUTPUT , lunghezza, valore set objParameter = command.CreateParameter ("VN_CODI_SERV_AZIE_FATT",200,1,200,request.form("CODI_AZIE")) command.Parameters.Append objParameter set objParameter = command.CreateParameter ("VN_CODI_PIAN_FATT",200,1,200,request.form("CODI_SERV")) command.Parameters.Append objParameter set objParameter = command.CreateParameter ("VN_IMPO_MENS",200,1,200,request.form("DATA_DISD")) command.Parameters.Append objParameter set objParameter = command.CreateParameter ("VC_USERPROC",200,1,50,vc_user) command.Parameters.Append objParameter set objParameter = command.CreateParameter ("VC_CODITIPOOPER",200,1,2,"U") command.Parameters.Append objParameter 'PAREMETRI OUTPUT set objParameter = command.CreateParameter ("vc_coditiro",200,2,16) command.Parameters.Append objParameter set objParameter = command.CreateParameter ("vc_codierro",200,2,16) command.Parameters.Append objParameter set objParameter = command.CreateParameter ("vc_descerro",200,2,200) command.Parameters.Append objParameter command.Execute , , adExecuteNoRecords ' VERIFICO EVENTUALI ERRORI vn_coditiro = command.Parameters("vc_coditiro") vc_risuinse = command.Parameters("vc_descerro") vc_codirisuinse = command.Parameters("vc_codierro") 'Response.write "esito " & vc_risuinse response.redirect "../anagazie.asp?codiazie="&request.form("CODI_AZIE")&"&err="&vc_codirisuinse&"&descerro="&vc_risuinse end if %>
codice:CREATE OR REPLACE PROCEDURE "SIAG"."PR_MODISERVAZIEDATADISD" ( VN_CODIAZIE IN VARCHAR2, VN_CODISERV IN VARCHAR2, VC_DATADISD IN VARCHAR2, VC_USERPROC IN VARCHAR2, VC_CODITIPOOPER IN VARCHAR2, V_CODINEXTVAL OUT VARCHAR2, V_CODIERRO OUT VARCHAR2, V_DESCERRO OUT VARCHAR2) IS VC_DESC_MODI VARCHAR2(4000); BEGIN IF VC_CODITIPOOPER ='U' --MODIFICA DEI DATI THEN BEGIN UPDATE RELASERVAZIE set DATA_DISD = to_date(VC_DATADISD,'dd/mm/yyyy') WHERE CODI_AZIE = VN_CODIAZIE AND CODI_SERV = VN_CODISERV; Commit; IF VN_CODISERV= 2 then BEGIN UPDATE ANAGUTEN set DATA_FINE = to_date(VC_DATADISD,'dd/mm/yyyy') WHERE NOME_UTEN = (SELECT USER_PROP FROM ANAGAZIE WHERE CODI_AZIE=VN_CODIAZIE); END; END IF; Commit; V_CODIERRO:=2; V_DESCERRO :='Il dato è stato modificato'; EXCEPTION WHEN OTHERS THEN --*********************************************************************************** -- L'ERRORE NELLA MODIFICA DEI DATI --*********************************************************************************** V_CODIERRO:=1; PR_GESTERRO (sqlcode,V_DESCERRO); P_SPEDMAILSERV('Errore Procedura PR_MODISERVAZIEDATADISD', 'Errore UPDATE2. Azienda : '||VN_CODIAZIE ||' Servizio: '||VN_CODISERV||' Errore Oracle '||sqlcode||'-'||sqlerrm); END; END IF; END;

VVoVe: , ovvero alcune volte mi esegue l'update, mentre altre non fa assolutiamente nulla, oppure mi da questo errore
Rispondi quotando
