Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di kluster
    Registrato dal
    Jul 2003
    Messaggi
    1,288

    Funzione StoredProcedureAccess (Esegue Stored Procedure in Access con parametri)

    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:
    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
    %>
    Esempio di funzionamento:
    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
    codice:
    <%
    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>
    Spero possa tornarvi utile

  2. #2
    Ottima idea, veramente!

    Io me la prendo.........

    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  3. #3
    ...ma non sto riuscendo a farla funzionare, help...

    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  4. #4
    bisogna usare per forza il command?
    usando le stored in sql server io le eseguivo direttamente con conn.execute o, in caso mi servissero tutte le proprietà e i metodi dell'oggetto recordset, con un oggetto recordset...

  5. #5
    Anch'io sono in difficoltà su questo punto, non avendo mai usato le s.p..............ho salvato la query come "lourdes" e l'ho uppata....e mo'.....non riesco a richiamarla...



    Sto testando .....
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  6. #6
    hey Teo ma cos'è che non ti funziona? ...

  7. #7
    Per testare la funzione dovrei sapere come si richiamano le stored procedure (non dubito che la funzione sia corretta ma devo adattarla al mio db...) e sto informandomi su questo.....e facendo delle prove

    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  8. #8
    perchè non provi a "sporcare" la funzione togliendo l'oggetto command e richiamando la stored così(te lo dico perchè al momento non posso fare prove, altrimenti le farei io ehehehe ma è un uifficio sfigato!!):
    ovviamnte un esempio...
    codice:
    set rs = conn.execute("nomestored " & id & ",'" & valorestringa & "'")

  9. #9
    Utente di HTML.it L'avatar di kluster
    Registrato dal
    Jul 2003
    Messaggi
    1,288
    Eccomi.
    Come mai non ti funziona,teo ti preparo un link per farti scaricare un esempio

  10. #10
    Utente di HTML.it L'avatar di kluster
    Registrato dal
    Jul 2003
    Messaggi
    1,288
    Caricato in
    http://mio.discoremoto.virgilio.it/asppertutti/
    StoredProcedureConAccess.zip (28 kb con mdb access)

    Per vaargard, trattandosi di Access e non Sql server io ho provato in altri modi, ma solo con il
    Command.CommandType = 4' costante adCmdStoredProc nel adovbs.inc
    sono riuscito a farla funzionare.
    Se hai altri metodi ben venga fammi sapere

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.