|
Опять я с OleDbReader-ом не могу поладить
|
|||
---|---|---|---|
#18+
Пишу текст на ASP.NET: Dim con As New OleDb.OleDbConnection("Provider=OraOLEDB.Oracle.1;Password=aaa;Persist Security Info=True;User ID=aaa;Data Source=oracle;") Dim com As New OleDb.OleDbCommand("SELECT rownum, ВАЛЮТА, БАЛ_АКТИВ, ЧИСТ_БАЛ, ЧИСТ_СПОТ, ЧИСТ_СРОЧ, ЧИСТ_ОПЦ, ЧИСТ_ГАР, СОВ_БАЛ, СОВ_ВНЕБ, ОТКРЫТАЯ, КУРС, ДЛИННАЯ, КОРОТКАЯ, ОТКР_ПРОЦ, ЛИМИТ FROM ОТЧЕТ.ОВП WHERE (ДАТА = TO_DATE('" + Request.QueryString.Item("date") + "','DD.MM.YYYY')) AND (ФИЛИАЛ = '" + Request.QueryString.Item("branch") + "')") con.Open() com.Connection = con rdОВП = com.ExecuteReader(CommandBehavior.SingleRow) While rdОВП.Read() newRow = New HtmlTableRow() col = 0 While col < rdОВП.FieldCount newCell = New HtmlTableCell() If Not rdОВП.IsDBNull(col) Then If rdОВП.GetDataTypeName(col) = "DBTYPE_VARNUMERIC" And col <> 0 Then newCell.InnerText = FormatNumber(rdОВП.Item(col), 4) Else newCell.InnerText = rdОВП.Item(col) End If newRow.Cells.Add(newCell) Else newCell.InnerText = "0" newRow.Cells.Add(newCell) End If col += 1 End While Table2.Rows.Insert(3, newRow) End While ________________________________________________________ Так он мне гад в ответ: Если rdОВП = com.ExecuteReader(CommandBehavior.Default): Exception Details: System.Data.OleDb.OleDbException: No error information available: DB_E_BADACCESSORTYPE (0x80040E4B). А если rdОВП = com.ExecuteReader(CommandBehavior.SingleRow), то все пучком. Так с какого же перепугу мне реадером нужна одна строчка? А если все делать визардами, получается нормально... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2003, 11:51 |
|
Опять я с OleDbReader-ом не могу поладить
|
|||
---|---|---|---|
#18+
Хотя наврал, визардами с таким запросом тоже ненормально. Убираю все поля с подчерками в имени - нормально, скажите, это - нормально? У меня полбазы содержит таблицы с подчерками и в именах и в полях, а таблиц сотни!!! Что делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2003, 13:14 |
|
Опять я с OleDbReader-ом не могу поладить
|
|||
---|---|---|---|
#18+
в си шарпе я бы порекомендовал поставить @ перед строкой в васике тоже наверное есть аналог... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2003, 14:13 |
|
Опять я с OleDbReader-ом не могу поладить
|
|||
---|---|---|---|
#18+
Нашел в чем была проблема. OleDbProvider от MS не понимает чисел с точностью большей какой-то, в одном поле во второй записи была чиселка примерно такая: 2,321654987654321 И при чтении выходил этот проклятый Exception, который говорит совсем не о том, о чем должен был бы. Теперь пришлось при формировании таблицы округлять значение до 4-х символов после запятой. Этого мне хватает. Так что имейте... ввиду. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2003, 06:34 |
|
Опять я с OleDbReader-ом не могу поладить
|
|||
---|---|---|---|
#18+
Тема старая, но считаю себя обязанным ответить, потому что нарвался на то же самое, но чтобы понять что это то же самое - ушел день. Пишу прогу на C# которая через OleDbDataReader вытягивает данные из оракла (используется оракловый родной OEDB провайдер) и этот ридер вскармливается в SqlBulkCopy чтобы тот засунул эти данные в MSSQL. Получаю вот такую штуку: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Вот что это за ерунда такая "Клиент доступа не является параметрическим"? После того как научился дебагать .NET код через .NET Reflector с помощью вот этого поста попал в метод GetRowDataFromHandle класса OleDbDataReader. И вот там-то и увидел что if (result < OleDbHResult.S_OK) { this.ProcessResults(result); } вот этот "умный" метод ProcessResults выбрасывает бестолковый текст екзепшена "Клиент доступа не является параметрическим", но на самом деле result = DB_E_BADACCESSORTYPE Вот если бы дебаггером не вошел в этот код и не увидел название DB_E_BADACCESSORTYPE - фиг бы я нашел этот пост и понял бы в чем причина. А причина та же самая, что и у автора: вьюха на оракле, которая отдает данные, делает деление одного поля на другое, выходит точность с кучей знаков после запятой. Ну вот это собственно и не нравится родному оракловому oledb провайдеру. Перевод "Клиент доступа не является параметрическим" - "The specified accessor was not a parameter accessor." - это для гугла, чтобы другие люди могли найти. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 20:13 |
|
|
start [/forum/search_topic.php?author=Boxster&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 486ms |
total: | 636ms |
0 / 0 |