Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

KOLEDB: OLE DB error [Delphi, KOL, Windows]


AlexandrK ©   (2004-12-28 13:09:00) 

WIN'XP SP1, D6, MS SQL Server
Был у меня KOLEDB от 14.14.2001, таблицы открывались...
если в тексте стоял вызов процедуры, которая возвращала набор строк,
то командой QR.Open ничего не возвращалось :-(
поставил KOLEDB от 23.08.2004, теперь при попытке сделать Open
возвращается OLEDB error 80040E21, если возвращаю старую версию, то таблицы открываются.
В чем дело, не понимаю...


AlexandrK   (2004-12-28 17:09:00) [1]

Я обошел ЭТУ ошибку так -
закоментарил все что касается
if Mode = rmReadOnly ... if Mode = rmUpdateDelayed
Теперь могу получить выборку, НО -
некоторые столбцы не выдают последний символ :(
и еще - по команде Open, если QR.Text:='NameStoredProc', которая должна возвращать набор строк выдается другая ошибка. Вот такая

Exception EAccessViolation in module oledb32.dll at 00007DE9
Access violation ad address 1F8A7DE9 in module 'oledb32.dll'.
Write of address 80088D495


ECM   (2004-12-28 16:57:00) [2]

http://www.adopenstatic.com/faq/80040e21.asp


ECM   (2004-12-28 16:39:00) [3]

Похоже это достаточно "абстрактная" ошибка...:)
Я в МСДН нашел уже штук пять разных ее расшифровок


ECM   (2004-12-28 16:33:00) [4]

2AlexandrK
Сорри - я похоже тебя дезинформировал по-поводу 80040e21 -
это была инфа от ADO для WinCE
Если есть возможность поищи в MSDN "80040e21" - там много полезного...:)


AlexandrK   (2004-12-28 16:17:00) [5]

Как я понял, эта ошибка 80040E21 должна вылезать, если данные, которые я добавляю больше, чем размер поля, но я НИЧЕГО НЕ ДОБАВЛЯЮ!!!
Я вызываю QR.Open


AlexandrK   (2004-12-28 16:13:00) [6]

И вот что еще нашел
если пишу QR.Text:='SELECT CODE,RTRIM(DESCR),IDORDER FROM SC84DIR ORDER BY 3' вылезает ошибка 80040E21,
если QR.Text:='SELECT CODE,RTRIM(DESCR),IDORDER FROM SC84DIR'
все отрабатывает.


ECM   (2004-12-28 16:11:00) [7]

Все мои правки в KOLEdb я делал для обеспечения ручного управления транзакциями(AutoCommit=FALSE), когда пытался работать с InterBase через OLE DB(IBProvider)... Потом я это дело забросил и слепил KOLIBdb.
К сожалению посмотреть на MS SQL у меня нет возможности...
Прошагай NewSession - где конкретно выпадает. Возможно при работе с M$ SQL нет возможности использовать интерфейс управления транзакциями в том виде как я его слепил.
В крайнем случае вынеси все что я добавил

  function   StartTransaction(isoLevel: Integer): HRESULT;
  function   Commit(Retaining: BOOL): HRESULT;
  function   Rollback(Retaining: BOOL): HRESULT;
  function   Active: Boolean;

в условную компиляцию...{$IFNDEF IBPROVIDER}


AlexandrK   (2004-12-28 15:49:00) [8]

Может и натолкнет, но, видимо, позже :(...
А вот еще есть
OLE DB error 80040E05 -
это при попытке вызвать NewSession,
(как указано в комментарии Modified by ECM !!!)
Как только убираешь все про Unk, NewSession вызывается без проблем


ECM   (2004-12-28 13:23:00) [9]

Может это тебе поможет и натолкнет на какую-то мысль :)
DB_E_DATAFIELD_OVERFLOW 80040E21 OLE DB Specific:
The field is too small to accept the amount of data you attempted to add. Try inserting or pasting less data.


Наверх

Титульная страница Поиск, карта сайта Написать письмо