Newsgroup: it.comp.www.asp
Titolo: Eseguire una query

Sono ancora io ... quello che non imparera' mai ...
premetto che mi dispiace non partecipare attivamente al NG, ma ahime' le mie
conoscenze sono molto limitate ... spero proprio di imparare qualcosa di
piu' per poter dare una mano d'aiuto anche io.
Chiusa la premessa ho un database in Access e vorrei eseguire una query:
Ho scritto il codice:
<%
Set objConn = Server.CreateObject("ADODB.Connection")
Set objCmd = Server.CreateObject("ADODB.Command")
Set objRst = Server.CreateObject("ADODB.Recordset")
objConn.Open Application("DBStr")
objCmd.ActiveConnection = objConn
objCmd.CommandText = "Query_BUONA"
objCmd.CommandType = adCmdStoredProc
set objRst = objCmd.execute()
Do While Not objRst.Eof
%>
ma quando eseguo la pagine mi restituisce l'errore:
================================
ADODB.Command error '800a0bb9'
The application is using arguments that are of the wrong type, are out of
acceptable range, or are in conflict with one another.
monitor2.asp, line 18
================================
dove alla linea 18 corrisponde --> objCmd.CommandType = adCmdStoredProc
Qualcuna sa dirmi che cosa devo fare?
Concludo dicendo che io ho gia' impostato la query in access e funziona
correttamente e vorrei eseguirla (e quindi crearmi un recordset) da una
pagina .asp ... (non so' se mi sono spiegato!!)
Ciao a tutti,
Pierpaolo Villano


Quell'errore ti diche che la variabile "adCmdStoredProc" contiene un valore
non corretto.
Metti all'inizio del codice la riga d'include:
<!--#include virtual="/scripts/adovbs.inc"-->
oppure il valore relativo:
objCmd.CommandType = 4
----------
Ciao!
Andrew

Ok ... perfetto, ma adesso cambia l'errore:
dunque ... il codice e' stato modificato come segue:
<%
Set objConn = Server.CreateObject("ADODB.Connection")
Set objCmd = Server.CreateObject("ADODB.Command")
Set objRst = Server.CreateObject("ADODB.Recordset")
objConn.Open Application("DBStr")
objCmd.ActiveConnection = objConn
objCmd.CommandText = "Query_BUONA"
objCmd.CommandType = 4
Set objRst = objCmd.Execute
Do While Not objRst.Eof
.
.
.
%>
e "Query_BUONA", memorizzata gia' nel file .mdb, e' la seguente:
=========================================
SELECT Q_DataOra.app_name, Count(Q_DataOra.ID_freq_conoscenza) AS
ConteggioDiID_freq_conoscenza, ID_freq_conoscenza.Descrizione,
ID_conoscenza.Descrizione
FROM fuso_1_24, ID_freq_conoscenza INNER JOIN (ID_conoscenza INNER JOIN
Q_DataOra ON ID_conoscenza.IdConoscenza = Q_DataOra.ID_conoscenza) ON
ID_freq_conoscenza.IdFreqConoscenza = Q_DataOra.ID_freq_conoscenza
WHERE (((Q_DataOra.Dataora) Between [fi24] And [ff24]) AND
((Q_DataOra.ID_conoscenza)=1))
GROUP BY Q_DataOra.app_name, ID_freq_conoscenza.Descrizione,
ID_conoscenza.Descrizione, Q_DataOra.ID_freq_conoscenza
ORDER BY Q_DataOra.ID_freq_conoscenza;
=========================================
pero', quando esegue il file .asp mi restituisce:
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
/statistiche/monitor2.asp, line 20
Qualcuno mi aiuta??
Pierpaolo Villano


La riga 20 è questa?
objCmd.CommandText = "Query_BUONA"
Commetti l'errore di mettere la stringa trale virgolette.
Scrivi in questo modo:
objCmd.CommandText = Query_BUONA
Se non hai commesso errori di sintassi nella query, questa volta tutto e
finalmente ;-), dovrebbe andare.
Ciao!
Andrew

dove alla linea 18 corrisponde --> objCmd.CommandType = adCmdStoredProc
[CUT]
Ciao,
trova sul tuo PC la posizione del file adovbs.inc.
Sposta questo file nel path del puo progetto oppure annotati il suo percorso e
poi in testa al tuo monitor2.asp scrivi:
<!--#include file="adovbs.inc"-->
teddy...@hotmail.com
ICQ 7044062
Como - Italy

Ops!  Pardon ... lo avrei dovuto dire prima ...
la riga 20 e' :
Set objRst = objCmd.Execute()
Un vero casino!!!
Ciao,
PVP


Strano come errore, ma se vuoi risolvere il tutto ti consiglio di seguire
un'altra strada per l'accesso al database. Ho visto nel tuo primo messaggio
che per la lettura usi:
Set objConn = Server.CreateObject("ADODB.Connection")
Set objCmd = Server.CreateObject("ADODB.Command")
Set objRst = Server.CreateObject("ADODB.Recordset")
Quindi passi i vari parametri da oggetto a oggetto per la lettura del
database. Se posso consigliarti, in questo modo complichi il tutto con
errori poi poco chiari e difficilmente risolvibili (soprattutto se sei agli
inizi).
Usa il solo recordset che permette di far tutto con poche linee e
chiaramente.
Prova a modficare il tuo codice in questo modo:
Set objRst = Server.CreateObject("ADODB.Recordset")
Query_BUONA="select * from tabella" ' o la tua stringa...
objRst.Open Query_BUONA,Application("DBStr"),3,3
Do While Not objRst.Eof
....
objRst.close
Set objRst=Nothing
Questo č il modo piů semplice e veloce per fare una query come la tua. Una
volta presa piů "confidenza" potrai provare i vari oggetti command ecc...
Prova in questo modo...
Ciao!
Andrew