Access e functions

martedì 13 giugno 2006 - 15.37

annina81 Profilo | Newbie

Ciao a tuttti, nuovissima ho appena frequentato un corso in microsoft su .net 2.0. ma una cosa non ho capito e non la trovo da nessuna parte:

ho creato una query in access che ha un parametro. "ES. Select * from fatture where anno = @ANNO" che non posso riprodurre in .NET perchè non chiama una tabella reale ma a sua volta una seconda vista che contiene delle union insomma un bel casino. poi aprendo il database col visual studio non vedo la query come query ma come function (suppongo sia perchè ho usato un parametro). ma come faccio ad usarla? mi dice sempre

"nessun valore specificato per alcuni parametri necessari"

SOB!!!!!!HELP!!!!!

Cteniza Profilo | Guru

Secondo me devi scrivere una cosa del genere (@ comunque non è il segnaposto giusto per access, va bene per sql server).
Dim cm As New OleDbConnection("MyAccessQuery",myConnection)
cm.CommandType = System.Data.CommandType.StoredProcedure
Dim prm As New OleDbParameter()
prm.Direction = ParameterDirection.Input
prm.DbType = DbType.Int32 'questo lo devi sapere tu
prm.Value = 1 'questo lo devi sapere tu
Dim dr As OleDbDataReader = cm.ExecuteReader()

totti240282 Profilo | Guru

Per access si usa ?.
C'è solo un capitano !!!!!!

lbenaglia Profilo | Guru

>poi aprendo il database col visual studio non vedo la query come
>query ma come function (suppongo sia perchè ho usato un parametro).
>ma come faccio ad usarla? mi dice sempre
>
>"nessun valore specificato per alcuni parametri necessari"

Ciao annina81,

per utilizzare una query parametrica devi ricorrere ad un oggetto sqlCommand e a n oggetti sqlParameter per ogni parametro che hai definito nella query.
A titolo di esempio leggi il seguente post di Andrea:
http://groups.google.it/group/microsoft.public.it.sql/msg/ce103f0d55e3cdc1

Il post si riferisce ad una stored procedure parametrica di SQL Server, ma il discorso è analogo cambiando opportunamente la stringa di connessione.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

lbenaglia Profilo | Guru

>Per access si usa ?.

Con Access è sufficiente specificare il nome del parametro così com'è, senza "chiocciolina".
Questo è un esempio VBS ma il discorso è analogo anche con ADO .NET:
http://groups.google.it/group/it.comp.www.asp/msg/aec990d4b4eb2e85

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

annina81 Profilo | Newbie

grazie a tutti, ho provato ad inserire questo codice:

OleDbConnection connection = new OleDbConnection(Utilities_Sawit.CONNECTION_STRING);
connection.Open();
OleDbCommand trova_valori = connection.CreateCommand();
trova_valori.CommandType = System.Data.CommandType.StoredProcedure;
OleDbParameter parametro = new OleDbParameter();
parametro.Direction = ParameterDirection.Input;
parametro.DbType = DbType.Int32;
parametro.Value = 2;
parametro.ParameterName = "PARAMETRO";
trova_valori.Parameters.Add(parametro);
OleDbDataReader recupera_dato;
trova_valori.CommandText = "SELECT * FROM V_DATI_ALLEGATO_H_PARAMETRO";
recupera_dato = trova_valori.ExecuteReader();



dopo che ha eseguito il reader mi da questo messaggio di errore e va in exception:

"Previsto nome di query dopo execute"

?? che significa? sbaglio qualcosa?

--- BUUUUUUUUUUUUUUUUU!!!!!

lbenaglia Profilo | Guru

>trova_valori.CommandType = System.Data.CommandType.StoredProcedure;
>OleDbParameter parametro = new OleDbParameter();
>parametro.Direction = ParameterDirection.Input;
>parametro.DbType = DbType.Int32;
>parametro.Value = 2;
>parametro.ParameterName = "PARAMETRO";
>trova_valori.Parameters.Add(parametro);
>OleDbDataReader recupera_dato;
>trova_valori.CommandText = "SELECT * FROM V_DATI_ALLEGATO_H_PARAMETRO";

Ciao annina81,

Scusami, dichiari che il CommandType è una Stored Procedure, dichiari il parametro e poi in CommandText mi specifichi una SELECT?!
Devi valorizzare CommandText con il nome della query, esattamente come ho fatto io nell'esempio che ti ho segnalato.

Ciao!


--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5