|
|
|
Доступ по OLEDB к данным в Access
|
|||
|---|---|---|---|
|
#18+
Подскажите синтаксис в строке выбора для OLEDB. select ?=sum(a1), ?=sum(a2) from Tab where a3 = ? Соединение открывается правильно к источнику. a1 и a2 числовые поля, есть в таблице Tab записи Первые два параметра назначаю направление output последний input. Добавляю параметры в правильной последовательности, ошибок нет. Выполняю запрос dr=ExecuteReader и получаю ошибку, ловлю в Catch что проблемы с параметром. Где то в синтаксисе ошибка? Я привык к MS SQL там было бы @a1 = sum(a1) и т.д. Таблица в ACCESS, потому и использую OLEDB. Текст программы ниже. Function GetData_TRIO(ByVal Par As ParIndTRIO, ByVal d As Date, ByVal Seccode As String) As Ind_TRIO Dim TR As Ind_TRIO Dim Vol As Double Dim Kol As Double Dim lcn As New OleDb.OleDbConnection(ConnStringInfo) Dim qstr As String = "select ?=sum(колво), ?=sum(объем) from сделки where код_бумаги = ? " Dim str As String = " and DATEDIFF(""s"", время, ?) <= " Dim str_buy As String = " and операция = 'Покупка' and DATEDIFF(""s"", время, ?) <= " Dim str_sell As String = " and операция = 'Продажа' and DATEDIFF(""s"", время, ?) <= " Dim cmd As New OleDb.OleDbCommand(qstr, lcn) Dim pD As New OleDb.OleDbParameter Dim pSec As New OleDb.OleDbParameter Dim pT As New OleDb.OleDbParameter Dim pVol As New OleDb.OleDbParameter Dim pKol As New OleDb.OleDbParameter Dim dr As OleDb.OleDbDataReader REM=========================================================================== REM Проверка открытости соединения REM=========================================================================== Try If lcn.State = ConnectionState.Closed Then lcn.Open() End If Catch e1 As Exception ' Ошибка открытия соединения MsgBox(e1.Message) End Try REM=============================================== REM Формируем параметры запроса REM=============================================== pKol.ParameterName = "@KOL" pKol.DbType = DbType.Int32 pKol.Direction = ParameterDirection.Output cmd.Parameters.Add(pKol) pVol.ParameterName = "@VOL" pVol.DbType = DbType.Double pVol.Direction = ParameterDirection.Output cmd.Parameters.Add(pVol) pSec.ParameterName = "@SEC" pSec.DbType = DbType.String pSec.Direction = ParameterDirection.Input pSec.Value = Seccode cmd.Parameters.Add(pSec) pD.ParameterName = "@D" pD.DbType = DbType.Date pD.Direction = ParameterDirection.Input pD.Value = d cmd.Parameters.Add(pD) pT.ParameterName = "@P" pT.DbType = DbType.Double pT.Direction = ParameterDirection.Input pT.Value = Par.T_Long cmd.Parameters.Add(pT) cmd.CommandType = CommandType.Text cmd.CommandText = qstr & str & "?" Try dr = cmd.ExecuteReader() Kol = pKol.Value Vol = pVol.Value Catch e2 As Exception ' Ошибка чтения MsgBox(e2.Message) Return TR End Try . . . Ошибка e2.Message = "System.Data.OleDb.OleDbDataAdapter internal error: invalid parameter accessor: 1 BADBINDINFO." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2010, 10:24 |
|
||
|
Доступ по OLEDB к данным в Access
|
|||
|---|---|---|---|
|
#18+
Может кто книжку, фрагмент из книжки с примером подскажет как правильно написать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2010, 10:25 |
|
||
|
Доступ по OLEDB к данным в Access
|
|||
|---|---|---|---|
|
#18+
тынць _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2010, 11:06 |
|
||
|
Доступ по OLEDB к данным в Access
|
|||
|---|---|---|---|
|
#18+
Ex_Soft тынць _________________ "Helo, word!" - 17 errors 56 warnings По ссылке попал на ветку MS Aceess. Там тем много. Можно по конкретнее указать на тему в ветке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2010, 11:32 |
|
||
|
Доступ по OLEDB к данным в Access
|
|||
|---|---|---|---|
|
#18+
Во-первых: Не занимайтесь оверквотингом Во-вторых: вот в ветке о M$ Aceess и спросите как Ваш M$ SQL'ный запрос будет выглядеть перевариваемым M$ Aceess'ом. _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2010, 11:50 |
|
||
|
Доступ по OLEDB к данным в Access
|
|||
|---|---|---|---|
|
#18+
Ex_Soft Во-первых: Не занимайтесь оверквотингом Во-вторых: вот в ветке о M$ Aceess и спросите как Ваш M$ SQL'ный запрос будет выглядеть перевариваемым M$ Aceess'ом. _________________ "Helo, word!" - 17 errors 56 warnings Меня не Access интересует а доступ к базе на Access из VB.NET. Если бы доступ был к SQL серверу вопроса вообще бы не было. Там все работает через SQLClient. Мне кажется вопрос по OLEDB должен относиться к ветке ADO а не ACCESS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2010, 11:53 |
|
||
|
Доступ по OLEDB к данным в Access
|
|||
|---|---|---|---|
|
#18+
Ex_Soft Во-первых: Не занимайтесь оверквотингом Во-вторых: вот в ветке о M$ Aceess и спросите как Ваш M$ SQL'ный запрос будет выглядеть перевариваемым M$ Aceess'ом. _________________ "Helo, word!" - 17 errors 56 warnings В сообщении много текста потому что первоначально сообщение было размещено в Visual Basic. Сообщение составлено из нескольких сообщений, где меня просили уточнить и уточнять, а потом порекомендовали в эту ветку обратиться. Получается какое то жонглирование из ветки в ветку. Если не знаете ответа и не можете помочь, так зачем же отсылаете в неизвестном направлении и отнимаете мое время. Не нравится тема, не читайте, не смотрите, не отвечайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2010, 11:55 |
|
||
|
Доступ по OLEDB к данным в Access
|
|||
|---|---|---|---|
|
#18+
Май Если бы доступ был к SQL серверу вопроса вообще бы не было. Там все работает через SQLClient. Угу... И SQL запросы выполняет тоже SQLClient? Май Мне кажется вопрос по OLEDB должен относиться к ветке ADO а не ACCESS Это Вам - кажется. В конечном итоге, вне зависимости посредством чего Вы достукиваетесь к СУБД (OLEDB, ODBC etc), запросы выполняет СУБД, а не эти прокладки. По сему, если Вы пытаетесь скормить СУБД запрос, который она априори не может переварить, то Вы хоть сотню прокладок поменяйте - он не выполнится "...хоч гопки плигай..." Вот поэтому я и отправил Вас к M$ Accrss'овцам дабы проверить валидность Вашего запроса в контексте сдюжит ли его M$ Access. А, вот, если он его может переварить, тогда - да. Прокладка виновата. Грубо говоря: ловим льва в пустыне и на данном этапе отрабатываем вариант с M$ Access'ом. _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2010, 12:38 |
|
||
|
Доступ по OLEDB к данным в Access
|
|||
|---|---|---|---|
|
#18+
Ex_Soft Май Если бы доступ был к SQL серверу вопроса вообще бы не было. Там все работает через SQLClient. Угу... И SQL запросы выполняет тоже SQLClient? Май Мне кажется вопрос по OLEDB должен относиться к ветке ADO а не ACCESS Это Вам - кажется. В конечном итоге, вне зависимости посредством чего Вы достукиваетесь к СУБД (OLEDB, ODBC etc), запросы выполняет СУБД, а не эти прокладки. По сему, если Вы пытаетесь скормить СУБД запрос, который она априори не может переварить, то Вы хоть сотню прокладок поменяйте - он не выполнится "...хоч гопки плигай..." Вот поэтому я и отправил Вас к M$ Accrss'овцам дабы проверить валидность Вашего запроса в контексте сдюжит ли его M$ Access. А, вот, если он его может переварить, тогда - да. Прокладка виновата. Грубо говоря: ловим льва в пустыне и на данном этапе отрабатываем вариант с M$ Access'ом. _________________ "Helo, word!" - 17 errors 56 warnings Конечно я в первую очередь проверил запрос в самом Access Не могу только проверить в нем самом параметры. Потому и спрашиваю про синтаксис работы с параметром. Я в качестве справки использую книгу Visual Basic.NET Библия пользователя.(стр. 416-417 Часть IV Технология Data Access) В ней написано что для SQLClient, SQLCommand можно использовать именованные параметры. Но для OleDB именованные параметры не используются, вместо них - ? . И порядок добавления параметров для OleDB важен. Порядок я выполнил, проверил много раз. На SQLClient я достаточно много уже написал для доступа к SQL2005. Но вот старый добрый Access меня подкосил:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2010, 12:49 |
|
||
|
Доступ по OLEDB к данным в Access
|
|||
|---|---|---|---|
|
#18+
Тему закрываю. Нашел обходной путь, а именно плюнул на эти параметры и строю запрос просто конкатенацией с нужными данными . Но вообще чувствую что работа с access извне очень непроизводительна по сравнению с sql2005 например. Скорость выбора данных существенно отличается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2010, 23:09 |
|
||
|
|

start [/forum/topic.php?fid=17&msg=36422067&tid=1351506]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 335ms |

| 0 / 0 |
