Funzione StoredProcedureAccess
Crea un recordset eseguendo una STORED PROCEDURE di Access con il passaggio di parametri
Fino a ieri non credevo che si potessero passare parametri a stored procedure di accesss create in asp e con mio sommo stupore ho scoperto
il contrario.
Voi direte , hai scoperto l'acqua calda! Be' cmq ho quindi implementato in qualche mio script una funzione che eseguisse le stored procedure
La funzione accetta 3 parametri:
1)la connessione attiva (precedentemente creata)
2)il nome della stored procedure
3) un array bidimensionale contentente uno per uno i parametri da inviare alla query insieme al valore e il cast della variabile.
Posto il codice + un esempio e spero che possa essere utile a chiunque abbia necessita' di questo tipo:
Esempio di funzionamento:codice:<% Function StoredProcedureAccess(ByRef Connection,ByVal NomeQuery,ByRef ArrayParametri,ByRef ResultRs) TipoStoredProcedure = 4 ' costante adCmdStoredProc nel adovbs.inc ParametroInput = 1 ' costante adParamInput nel adovbs.inc Set Command = Server.CreateObject("ADODB.Command") Command.ActiveConnection = Connection 'Imposto la connessione attiva Command.CommandText = NomeQuery 'Nome della stored procedure in Access Command.CommandType = TipoStoredProcedure 'Scorro l'array bidimensionale alla ricerca dei parametri da inviare all'oggetto Command For riga = 0 To UBound(ArrayParametri, 2) ' il numero della prima dimensione è variabile NomeParametro = null : ValoreParametro = null : TipoParametro = null NomeParametro = ArrayParametri(0,riga) ValoreParametro = ArrayParametri(1,riga) TipoParametro = ArrayParametri(2,riga) 'Dichiaro il parametro creandolo parametrico con il metodo Execute if not isNull(NomeParametro) and not isNull(valoreParametro) and not isNull(TipoParametro) then Execute("Dim Parametro" & riga ) 'Lo instanzio Execute("Set Parametro" & riga & "= Command.CreateParameter(NomeParametro,TipoParametro,ParametroInput)") 'Imposto il valore del parametro Execute("Parametro" & riga & ".Value = ValoreParametro") 'Lo appendo all'oggetto Command Execute("Command.Parameters.Append Parametro" & riga) 'Elimino dalla memoria l'oggetto Execute("Set Parametro" & riga & "= nothing") end if Next 'Valorizzo l'oggetto passato come parametro alla funzione trasformandolo in recordset Set ResultRs = Command.Execute 'Pulisco la memoria Set Command = Nothing End Function %>
In access nel pannello query ho creato una query con questo SQL:
SELECT * FROM T_FATTURE WHERE Numero_Cliente =[id] and Condizione_Fattura = [od];
e l'ho salvata con il nome di LOURDES
Spero possa tornarvi utilecodice:<% Dim Rs,Connection Set Connection = Server.CreateObject("ADODB.Connection") 'Apro la connessione Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/") & "\database\prove.mdb" 'Creo l'array bidimensionale che contiene i parametri, i valori dei parametri ed il cast dei parametri Dim ArrParameters(2,1) ArrParameters(0,0) = "id" ' Nome del primo parametro ArrParameters(1,0) = 2 ' Valore del primo parametro (numero cliente = 2) ArrParameters(2,0) = 3 ' Tipo del primo parametro (3 = intero - in adobvs Const adInteger) ArrParameters(0,1) = "od" ' Nome del secondo parametro ArrParameters(1,1) = "sospesa" ' Valore del secondo parametro (Condizione_Fattura = 'sospesa') ArrParameters(2,1) = 12 ' Tipo del secondo parametro (12 = in adobvs Const adVariant ) 'Lancio la funzione StoredProcedureAccess Connection,"LOURDES",ArrParameters,Rs %> <html> <body> <% 'A questo punto potete scorrere il recordset come fate normalmente While not Rs.eof Response.Write "Data Fattura: " & Rs("Data") & " " Response.Write "Numero Fattura: " & Rs("Numero_fattura") & " " Response.Write "Totale Importo: " & Rs("Totale") & "<hr>" Rs.movenext Wend Connection.Close Set Connection = Nothing %> </body> </html>![]()

Rispondi quotando
testando .....
