28 messaggi dal 31 marzo 2004
Salve a tutti.
Ho una query in Access che prende come parametri proprio due date, oltre a un intero.

Il metodo è il seguente (orario è una mia classe):

public DataTable AutomezziLiberi( int idTipologia, Orario orario )
{
OleDbConnection conn = new OleDbConnection( ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString );

try
{
OleDbCommand cmd = new OleDbCommand( "AutomezzoLibero", conn );
cmd.CommandType = CommandType.StoredProcedure;
OleDbParameter tipologia = new OleDbParameter( "@tipologia", idTipologia );
OleDbParameter inizio = new OleDbParameter( "@inizio", OleDbType.DBDate );
OleDbParameter fine = new OleDbParameter( "@fine", OleDbType.DBDate );
inizio.Value = orario.DataInizio;
fine.Value = orario.DataFine;
cmd.Parameters.Add( tipologia );
cmd.Parameters.Add( inizio );
cmd.Parameters.Add( fine );

conn.Open();
OleDbDataAdapter da = new OleDbDataAdapter( cmd );
DataTable dt = new DataTable();
da.Fill( dt );

return dt;
}
catch ( Exception ex )
{
return null;
}
finally
{
if ( conn.State != ConnectionState.Closed )
conn.Close();
}
}

Assegno i valori (che provengono da un controllo di tipo datepicker) e aggiungo i parametri. I parametri sono del tipo 05/03/2009 9.00.00

Se lancio la query da Access, passando i parametri esattamente come provengono da codice (facendo debug e copiando-incollando i valori dalla command window) funziona perfettamente, mentre lanciando la query da codice praticamente ignora i parametri... Mi sapete aiutare?
Modificato da mavel il 10 marzo 2009 11.41 -
ciao,

sei certo che il CommandType è di tipo StoredProcedure ?

Fabrizio Canevali
28 messaggi dal 31 marzo 2004
Sì, lo puoi controllare nel codice postato. La cosa strana è che ho anche provato a mettere la query direttamente nel commandtext con i valori dei parametri scritti esplicitamente, ma anche così non funziona.

A questo punto comincio a pensare che sia un problema di provider...

Grazie per la risposta!
28 messaggi dal 31 marzo 2004
Invece di scrivere:

cmd.Parameters.Add( tipologia );
cmd.Parameters.Add( inizio );
cmd.Parameters.Add( fine );

in quest'ordine, ormai arrivato alla frutta e provando le soluzioni più assurde, ho provato a cambiare l'ordine dei parametri come me li chiedeva Access eseguendo la query direttamente.
Quindi ho scritto:

cmd.Parameters.Add( fine );
cmd.Parameters.Add( inizio );
cmd.Parameters.Add( tipologia );

Ha funzionato. Incredibile, non basta indicare i parametri con il loro nome ma conta anche l'ordine in cui li assegni al command. Che bello Access!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.