|
|
|
Параметризированный запрос в базу Access через OleDB
|
|||
|---|---|---|---|
|
#18+
Добрый всем день Есть приложение, которое может работать и 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 строковых параметра - тоже всё работает отлично, а вот всё вместе - нет! Если опять таки вставить значения параметров в запрос - тоже всё работает... Если кто-то сталкивался с этой проблемой или имеет мысли - с удовольствием выслушаю :) Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2006, 15:04 |
|
||
|
|

start [/forum/topic.php?fid=17&msg=33682932&tid=1353361]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
20ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 313ms |

| 0 / 0 |
