Параметризированный запрос в базу Access через OleDB

Night_Stalker
Дата: 21.04.2006 15:04:44
Добрый всем день

Есть приложение, которое может работать и MS SQL и с Accessной базой
При переводе запросов на параметризированный вид возникла проблема с Access...

есть запрос

Select TOP 5 ROOTNODENAME AS DESCRIPTION, COUNT(*) AS REPORTCOUNTER, SUM(EVENTCOUNT) AS EVENTCOUNT1, SUM(SUMDURATION) / SUM(EVENTCOUNT) / 1000 AS AVERAGEDURATION, MAX(MAXID) AS MAXEVENTID
From (
SELECT B.ROOTNODENAME, B.USERNAME, COUNT(*) AS EVENTCOUNT, SUM(EVENTDURATION) AS SUMDURATION, MAX(EVENTID) AS MAXID
FROM V_EVENT B
WHERE EVENTCLASSTYPE='performance' AND UTCEVENTDATE>=? AND UTCEVENTDATE<=? AND
(( SOURCE IN (
SELECT SRC.SOURCE
FROM APPLICATIONSOURCE APP1, APPLICATION APP2, SOURCE SRC
WHERE SRC.SOURCEID=APP1.SOURCEID AND APP1.APPLICATIONID = APP2.APPLICATIONID
AND (APP2.APPLICATION IN (?,?)))))
and ((SOURCE IN (?,?)))
GROUP BY ROOTNODENAME, USERNAME)
A
Group By ROOTNODENAME Order By 2 DESC

соответственно в нём 6 параметров - 2 даты и 4 строчных
есть код

String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test3.mdb";
OleDbConnection myConnection = new OleDbConnection( connectionString );
OleDbCommand myCommand = new OleDbCommand( select, myConnection );
OleDbParameter[] myParameter = new OleDbParameter[10];
OleDbDataAdapter da = new OleDbDataAdapter( myCommand );
DataSet ds = new DataSet();

myParameter[0] = new OleDbParameter( "@date_from", new DateTime( 2006, 2, 1 ));
myParameter[0].OleDbType = OleDbType.Date;
myParameter[1] = new OleDbParameter( "@date_to", DateTime.Now );
myParameter[1].OleDbType = OleDbType.Date;
myParameter[2] = new OleDbParameter( "@APPLICATION_2_1", "ALL" );
myParameter[2].OleDbType = OleDbType.VarChar;
myParameter[3] = new OleDbParameter( "@APPLICATION_2_2", "TEST" );
myParameter[3].OleDbType = OleDbType.VarChar;
myParameter[4] = new OleDbParameter( "@SOURCE_2_1", "BlaBla" );
myParameter[4].OleDbType = OleDbType.VarChar;
myParameter[5] = new OleDbParameter( "@SOURCE_2_2", "BlaBlaBla" );
myParameter[5].OleDbType = OleDbType.VarChar;

myCommand.Parameters.Add( myParameter[0] );
myCommand.Parameters.Add( myParameter[1] );
myCommand.Parameters.Add( myParameter[2] );
myCommand.Parameters.Add( myParameter[3] );
myCommand.Parameters.Add( myParameter[4] );
myCommand.Parameters.Add( myParameter[5] );

myConnection.Open();
da.Fill( ds );

при попытке выполнить его вылетает ошибка "Data type mismatch in criteria expression"
Что самое интересное - если убрать из запроса 2 параметра с датой - всё работает, если их оставить, но брать первые 2 строковых параметра - тоже всё работает отлично, а вот всё вместе - нет!
Если опять таки вставить значения параметров в запрос - тоже всё работает...
Если кто-то сталкивался с этой проблемой или имеет мысли - с удовольствием выслушаю :)
Спасибо