← →
Lixodei ©
(2006-11-27 09:06)
[0]
Привет Всем! Выбираю данные из одной БД и пытаюсь их добавить в другую медом Post. Иногда прога почему то вылетает сообщая о следующей ошибке «Access to table disabled because of previous error. Read failure». А мне никак нельзя, чтобы программа вылетала, можно ли отловить ошибку на этапе добавления и просто не добавлять эту запись? Спасибо, за помощь!
← →
Sergey13 ©
(2006-11-27 09:22)
[1]
Вообще ошибки ловятся через try. Проверить то что будет записано можно в BeforePost принимающего датасета.
← →
Lixodei ©
(2006-11-27 10:03)
[2]
try не помогает, вылетает с той же ошибкой или может я не правильно делаю что. Через дебагер проверил данные на запись они соответствуют, тем которые нужны. Может есть с ними еще какой-то мусор, который я не вижу?, так как когда я переформировываю БД по данному полю ошибка переходит уже на другой записи
while not AdsQuery1.Eof do
begin
with Table1 do
begin
Append;
FieldByName(«KOD»).AsInteger:=AdsQuery1.FieldByName(«DANAL1»).AsInteger;
FieldByName(«PNAME»).AsString:=AdsQuery1.FieldByName(«PNAME»).AsString;
FieldByName(«TYPE_DOC»).AsString:=AdsQuery1.FieldByName(«EXPR»).AsString;
FieldByName(«NUMDOC»).AsString:=AdsQuery1.FieldByName(«NUMDOC»).AsString;
FieldByName(«DATDOC»).AsString:=AdsQuery1.FieldByName(«DATDOC»).AsString;
FieldByName(«DSUM»).AsFloat:=AdsQuery1.FieldByName(«SUM»).AsFloat;
FieldByName(«T_DOC»).AsInteger:=2;
try
Post;
except
Form1.Edit1.Text:=»Ошибка «+AdsQuery1.FieldByName(«DANAL1″).AsString+» «+AdsQuery1.FieldByName(«PNAME»).AsString+» «+AdsQuery1.FieldByName(«EXPR»).AsString+» «+AdsQuery1.FieldByName(«NUMDOC»).AsString+» «+AdsQuery1.FieldByName(«DATDOC»).AsString+» «+AdsQuery1.FieldByName(«SUM»).AsString;
sleep(1000);
end;
end;
AdsQuery1.Next;
end;
← →
Sergey13 ©
(2006-11-27 10:17)
[3]
Я с dbf-ками со времен клиппера не работал. Как там насчет требований уникальности и/или заполненности? Может тут собака порылась? И почему бы не попробовать писать новые записи так-же через кверик запросом?
← →
Lixodei ©
(2006-11-27 10:35)
[4]
C уникальностью и заполненностью все в порядке, тут быть не может собаки ;] Разрядность полей тоже совпадает. А вы предлагаете писать данные не в table, а кверик? Просто его все равно надо будет переписывать рано или поздно в тэйбл, так как инфа потом нужна в физическом сохранении. Начальный вопрос был в том, что разве нет больше инструмента кроме try чтобы ошибку отловить, например, как при проверке значения переменной при открытии файла или загрузке dll-ки?
← →
ЮЮ ©
(2006-11-27 10:42)
[5]
> не в table, а кверик? Просто его все равно надо будет
> переписывать рано или поздно в тэйбл,
Имелось в виду исполнять запросы
INSERT INTO
вместо работы с TTable. Ибо отлуп по TQuery.Execute не должен привести к таким последствиям, как » «Access to table disabled because of previous error. Read failure»»
← →
Плохиш ©
(2006-11-27 12:14)
[6]
> так как когда я переформировываю БД по данному полю ошибка
> переходит уже на другой записи
Это Вы сейчас на каком языке говорили?
> except
Cancel;
> Form1.Edit1.Text:=»Ошибка «+AdsQuery1.FieldByName(«DANAL1»).
> AsString+» «+AdsQuery1.FieldByName(«PNAME»).AsString+»
и запись будет пропущена.
> Просто его все равно надо будет переписывать рано или поздно
> в тэйбл, так как инфа потом нужна в физическом сохранении.
Классная такая чушь…
← →
Anatoly Podgoretsky ©
(2006-11-27 12:23)
[7]
> Lixodei (27.11.2006 09:06:00) [0]
because of previous error.
← →
Lixodei ©
(2006-11-27 13:09)
[8]
> Это Вы сейчас на каком языке говорили?
На русском, а что не видно? БД из которой выбираю данные формирует другая прога, ей и перезаполняю, ошибка в уже в другой записи.
> Классная такая чушь…
А разве квейри — это не набор данных оформленный в виде виртуальной таблицы
Поэтому я думаю, что не чушь я писал
← →
MsGuns ©
(2006-11-27 16:47)
[9]
Судя по [2] данные из одной таблицы (запроса) добавляются в другую. Почему нельзя это сделать запросом ?
← →
Lixodei ©
(2006-11-29 11:59)
[10]
> MsGuns © (27.11.06 16:47) [9]
, да действительно можно сделать запросом, но вот при запросе SQL возникает проблема при передаче параметра. Поле KOD имеет тип numeric(5,0), а в Delphi такого типа нет. Аналогичный ему должен быть Integer, но SQL ругаеться на несовместимость. Может другой надо использовать тип?
Query1.SQL.Add(«INSERT INTO otchet (KOD) VALUES (:D)»);
Query1.ParamByName(«D»).AsInteger:=AdsQuery1.FieldByName(«KOD»).AsString;
← →
Anatoly Podgoretsky ©
(2006-11-29 12:15)
[11]
> Lixodei (29.11.2006 11:59:10) [10]
На левую или правую часть?
Что сообзает компонент о типах в рантайм
← →
Lixodei ©
(2006-11-29 12:53)
[12]
Query1.ParamByName(«D»).As… нужен другой тип, при присвоении все проходит нормально, ошибка когда выполняется. Если поменять тип поля KOD в самой БД, то все отлично
← →
Anatoly Podgoretsky ©
(2006-11-29 13:10)
[13]
Еще большими загадками стал говорить.
Кто на чем стоял?
← →
Lixodei ©
(2006-11-29 13:18)
[14]
Постараюсь понятнее. Есть таблица из нее происходит выборка данных по нескольким полям на SQL и записываться в ADSQuery1. Среди них есть несколько полей с типом numeric. Теперь эти данные надо записать в другую таблицу otchet. Это я пытаюсь сделать кодом[пример приведен в [10]] на этапе выполнения которого вылетает ошибка не совместимость типов.
← →
Плохиш ©
(2006-11-29 13:40)
[15]
> Lixodei © (29.11.06 11:59) [10]
> Query1.ParamByName(«D»).AsInteger:=AdsQuery1.FieldByName(«KOD»).AsString;
Афигеть — дурдом….
← →
Lixodei ©
(2006-11-29 13:45)
[16]
> Афигеть — дурдом….
Точно дурдом, это я просто криво поправил, уже путаюсь блин в строках, извините.
Query1.SQL.Add(«INSERT INTO simple (KOD) VALUES (:D)»);
Query1.ParamByName(«D»).AsInteger:=AdsQuery1.FieldByName(«DANAL1»).AsInteger;
← →
Lixodei ©
(2006-11-29 14:44)
[17]
> NSERT INTO
> вместо работы с TTable. Ибо отлуп по TQuery.Execute не должен
> привести к таким последствиям, как » «Access to table disabled
> because of previous error. Read failure»»
Приводит к той же ошибке, что и была при работе с TTable
while not AdsQuery1.Eof do
begin
Table1.Active:=false;
Query1.Active:=False;
Query1.FetchAll;
Query1.DatabaseName:=»»+Unit1.Work_dir+»DATA»;
Query1.SQL.Clear;
Query1.SQL.Add(«INSERT INTO otchet (KOD,PNAME,TYPE_DOC,NUMDOC,DATDOC,DSUM,T_DOC) VALUES («);
Query1.SQL.Add(«:D,:P,:E,:N,:D1,:S,:T)»);
Query1.ParamByName(«D»).AsFloat:=AdsQuery1.FieldByName(«DANAL1»).AsFloat;
Query1.ParamByName(«P»).AsString:=Trim(AdsQuery1.FieldByName(«PNAME»).AsString);
Query1.ParamByName(«E»).AsString:=AdsQuery1.FieldByName(«EXPR»).AsString;
Query1.ParamByName(«N»).AsString:=Trim(AdsQuery1.FieldByName(«NUMDOC»).AsString) ;
Query1.ParamByName(«D1»).AsDateTime:=AdsQuery1.FieldByName(«DATDOC»).AsDateTime;
Query1.ParamByName(«S»).AsFloat:=AdsQuery1.FieldByName(«SUM»).AsFloat;
Query1.ParamByName(«T»).AsFloat:=2;
Query1.ExecSQL;
AdsQuery1.Next;
end;
01.01.2007
При добавлении новых записей с помощью метода TTable.AppendRecord в индексированную таблицу FoxPro через какое-то время (то есть при одновременном добавлении большого количества записей) возникает ошибка:
«Access to table disabled because of previous error. Read failure. File <имя_файла.cdx>».
Возможно, причина заключается в том, что операции чтения-записи в файл, содержащий таблицу FoxPro, особенно при использовании кэширования, предоставляемого операционной системой, конфликтуют с содержимым индексного файла (это часто происходит при многопользовательской работе). Дело в том, что ранние версии dBase, FoxPro, Clipper работали с неподдерживаемыми индексами, то есть индексные файлы не обновлялись одновременно с таблицей, и для их синхронизации требовалось выполнять специальные операции. Но соответствующие средства разработки, применявшиеся в то время, обычно не поддерживали никаких аналогов транзакций — записи чаще всего вставлялись по одной.
В случае применения старых версий формата FoxPro следует избегать кэширования при выполнении дисковых операций с файловым сервером, содержащим базу данных FoxPro. Кроме того, следует проверить и, если необходимо, изменить в настройках BDE параметры MINBUFSIZE, MAXBUFSIZE, LOCAL SHARE — возможно, проблема заключается в недостаточной величине буферов BDE для кэширования данных или в одновременном доступе к данным приложений, использующих и не использующих BDE.
Еще одним из способов решения этой проблемы (самым радикальным) является замена FoxPro на какую-нибудь из серверных СУБД. Например, InterBase неплохо справляется с одновременным вводом большого количества записей благодаря некоторым специфическим особенностям архитектуры этого сервера.
Наталия Елманова
Взято из https://forum.sources.ru
После публикации в 1997-98 гг. цикла статей, посвященных
C++Builder, в адрес редакции поступило много вопросов, связанных с проблемами
использования баз данных в приложениях Delphi и C++Builder. Данная статья посвящена
ответам на некоторые наиболее часто встречающиеся из них.
В статье «Создание серверов приложений с
помощью Delphi 3» вы написали, что подключались к
Personal Oracle с помощью BDE. Я очень прошу вас
рассказать, как вы это сделали. Для меня пока это
остается загадкой.
Доступ к Personаl Oracle (как и к любой другой версии
СУБД Oracle) осуществляется следующим образом.
Сначала нужно запустить сервер (в случае Personal Oracle
для Windows 95 это отдельное приложение, в случае Oracle
для Windows NT — набор сервисов, обслуживающих
конкретную базу данных) и настроить клиентскую
часть Oracle. Для этого следует запустить утилиту
SQLNet Easy Configuration (в случае Oracle 8 — Oracle Net8 Easy Config) и с ее
помощью создать описание псевдонима базы данных
Oracle (для него, как и в BDE, используется термин alias,
но это не то же самое, что псевдоним BDE). При
создании этого описания важны три параметра.
Первый из них — сетевой протокол, с помощью
которого осуществляется доступ к серверу Oracle
(IPX/SPX, TCP/IP и др.). Второй параметр — местоположение
сервера в сети. В случае Personal Oracle это обычно
компьютер с IP-адресом 127.0.0.1 (это специальный
адрес для доступа к локальному компьютеру, так
называемый TCP Loopback Address, который обычно имеет URL
http://localhost/). Третий параметр — имя базы данных. По
умолчанию в случае Personal Oracle она называется ORCL. В
общем случае имя может быть любым, но это должно
быть имя уже существующей базы данных, с которой
вы собираетесь работать.
В принципе все описания псевдонимов Oracle
хранятся в текстовом файле TNSNAMES.ORA, который можно
редактировать вручную.
Далее следует запустить утилиту SQL Plus и
проверить соединение клиента с сервером. Обычно
в качестве имени пользователя используется имя
SYSTEM и пароль MANAGER (если вы сами администрируете
сервер). Если же сервер был установлен раньше,
узнайте у администратора базы данных, каким
именем и паролем следует воспользоваться. Помимо
имени пользователя и пароля, SQL Plus запросит так
называемую строку связи, в которой
должно содержаться имя сервиса, который был
создан вами перед этим. При удачном соединении в
SQL Plus появится соответствующее сообщение.
Отметим, что утилита Oracle Net8 Easy Config позволяет
протестировать соединение непосредственно в
процессе создания описания сервиса.
Если соединение с сервером было неудачным,
стоит проверить, поддерживается ли указанный
сетевой протокол, виден ли в сети компьютер, на
котором установлен сервер, и, если нужно, внести
изменения в описание сервиса.
Теперь можно, наконец, заняться настройкой BDE. В
качестве Server Name следует указать имя псевдонима
Oracle (его можно просто выбрать из выпадающего
списка, так как BDE Administrator также обращается к
файлу TNSNAMES.ORA). После этого нужно проверить
соединение с сервером через BDE с помощью BDE
Administrator или SQL Explorer.
Если соединение не устанавливается и
появляется сообщение «Vendor initialization
failed», стоит убедиться, что динамическая
загружаемая библиотека, указанная в параметре
Vendor Init драйвера Oracle, действительно присутствует
на данном компьютере. На всякий случай стоит
скопировать ее в папку WindowsSystem, так
как некоторые ранние версии BDE в Windows 95 не находят
эту библиотеку в подкаталоге Bin
каталога, в котором установлен клиент Oracle, в силу
ограничений, налагаемых этой операционной
системой на длину переменной окружения PATH.
Отметим также, что при использовании Oracle 8 нужно
использовать версию не ниже 8.0.4; в случае
использования более ранней версии следует
обновить ее до 8.0.4.
Недавно я перешел на использование Oracle, но
все мои попытки использовать компонент TStoredProc
оказываются неудачными. Почему?
Причины неработоспособности компонента TStoredProc
могут быть следующими.
Во-первых, при использовании ODBC-доступа может
оказаться, что применяемый вами ODBC-драйвер не
поддерживает хранимые процедуры (как известно,
не все ODBC-драйверы их поддерживают).
Во-вторых, имеется известная проблема, описание которой содержится в разделе
Developers Support корпоративного сайта Inprise (http://www.inprise.com/). Дело в том, что
число параметров хранимой процедуры, с которой взаимодействует компонент TStoredProc,
не должно превышать 10. В случае, если реальное число параметров превышает 10,
многие разработчики переписывают хранимые процедуры так, чтобы они использовали
строковые параметры, содержащие по несколько реальных параметров.
Дает ли Delphi возможность корректно прервать
выполнение SQL-запроса к серверу Oracle с помощью BDE?
Например, чтобы при использовании с SQL Plus после
отправки SQL-запроса на выполнение на экране
появлялось окно с кнопкой Cancel, которое давало бы
возможность в любой момент прервать выполнение
этого запроса?
Насколько мне известно, для этой цели лучше
всего использовать функции Oracle Call Interface
(низкоуровневый API Oracle). В комплекте поставки Oracle
есть соответствующие примеры для C, и переписать
их на Pascal несложно.
Некоторые драйверы SQL Link позволяют прекратить
выполнение запроса, если время его выполнения
превышает заранее заданное значение (параметр MAX
QUERY TIME соответствующего драйвера). Однако драйвер
ORACLE, к сожалению, в их число не входит.
Что необходимо предпринять, чтобы
сгенерировать из ERwin таблицы для локальной базы
данных Paradox 5.0? На компьютере установлены Delphi 4.0 и
MetaBase.
Для этого требуется установить ODBC-драйвер для
этой версии Paradox той же разрядности, что и ERwin.
Затем нужно описать соответствующий ODBC-источник,
и он будет доступен в ERwin.
Не могли бы вы подсказать, как заблокировать
функцию вставки записи непосредственно в
компоненте TDBGrid с сохранением всех
остальных возможностей редактирования таблицы.
Наиболее разумным представляется создать
обработчик события OnBeforeInsert
компонента TTable, TQuery
или TClientDataSet, данные из которых
отображаются в TDBGrid. Сам компонент TDBGrid
не имеет подходящего события для обработки, так
как это компонент, предназначенный только для
создания пользовательского интерфейса, а в
данном случае следует, по существу, запретить
добавление записей в таблицу.
В мой комплект Borland C++ Builder не входит Visual Query
Builder. Могу ли я связать две таблицы без него?
Безусловно, две таблицы можно связать и без VQB.
Самый простой способ — запустить Database Form
Wizard и связать две таблицы, используя TQuery.
Те два запроса, которые при этом получатся (один
из них — параметризованный), можно использовать
как образец.
Кроме того, можно просто написать вручную
необходимый запрос к любому числу таблиц и
поместить его в свойство SQL
компонента TQuery. Все инструменты
для генерации запросов (Visual Query Builder,
SQL Builder и др.) просто предоставляют
для этого визуальные средства, а результатом их
работы является именно текст запроса, помещаемый
в это свойство.
Я установил Borland C++ Builder 3.0 Client/Server Suite и InterBase
Server 5.1.1. (автоматически с ним установился InterBase 5.x
Driver by Visigenic). Но у меня не работают хранимые
процедуры. Например: процедура правильно
откомпилирована, и вызов ее из C++ Builder
осуществляется с помощью выполнения оператора
StoredProc1->ExecProc();
При этом возникает следующая ошибка :
"Capability not supported. General SQL error. [Visigenic][ODBC InterBase 4.x Driver] Driver not capable".
ODBC-драйвер может не поддерживать хранимые
процедуры. В этом случае стоит попытаться
использовать драйвер SQL Link (он
должен быть в C++ Builder 3.0 Client/Server Suite). Для этого
нужно создать для вашей базы данных псевдоним
типа INTRBASE. В этом случае хранимые процедуры
должны работать.
Если хранимые процедуры, тем не менее, остаются недоступными, стоит проверить,
что и в какой последовательности было установлено на ваш компьютер. Такие неприятности
могут возникать, если, например, вы установили какой-либо продукт, написанный
на Delphi 2, после C++Builder 3. В этом случае можно переустановить BDE, взяв
его последнюю версию на сайте Inprise (http://www.inprise.com
— все зарегистрированные пользователи C++ Builder 3.0 Client/Server Suite имеют
право это сделать.
При удалении записей из таблицы dBase с помощью
компонента TTable они просто приобретают
признак удаления, и я никак не могу добиться их
физического удаления. Как быть?
Ваша проблема решается просто — для физического
удаления записей нужно использовать функцию DbiPackTable
(ее описание есть в справочном файле BDE).
При добавлении новых записей с помощью
метода TTable.AppendRecord в индексированную
таблицу FoxPro через какое-то время (то есть при
одновременном добавлении большого количества
записей) возникает ошибка:
"Access to table disabled because of previous error. Read failure. File <имя_файла.cdx>".
Возможно, причина заключается в том, что
операции чтения-записи в файл, содержащий
таблицу FoxPro, особенно при использовании
кэширования, предоставляемого операционной
системой, конфликтуют с содержимым индексного
файла (это часто происходит при
многопользовательской работе). Дело в том, что
ранние версии dBase, FoxPro, Clipper работали с
неподдерживаемыми индексами, то есть индексные
файлы не обновлялись одновременно с таблицей, и
для их синхронизации требовалось выполнять
специальные операции. Но соответствующие
средства разработки, применявшиеся в то время,
обычно не поддерживали никаких аналогов
транзакций — записи чаще всего вставлялись по
одной.
В случае применения старых версий формата FoxPro
следует избегать кэширования при выполнении
дисковых операций с файловым сервером,
содержащим базу данных FoxPro. Кроме того, следует
проверить и, если необходимо, изменить в
настройках BDE параметры MINBUFSIZE, MAXBUFSIZE, LOCAL SHARE —
возможно, проблема заключается в недостаточной
величине буферов BDE для кэширования данных или в
одновременном доступе к данным приложений,
использующих и не использующих BDE.
Еще одним из способов решения этой проблемы
(самым радикальным) является замена FoxPro на
какую-нибудь из серверных СУБД. Например, InterBase
неплохо справляется с одновременным вводом
большого количества записей благодаря некоторым
специфическим особенностям архитектуры этого
сервера.
Позволяет ли QuickReport выгружать данные в
формате Microsoft Excel?
Quick Report не позволяет выгружать данные в формате
Microsoft Excel. Но последние его версии позволяют
сохранять отчеты в формате CSV (Comma Separated Value) и HTML, и
оба эти формата можно прочесть с помощью Excel.
Помимо этого, для генерации отчета можно
использовать автоматизацию Excel (Automation, ранее
назвалось OLE Automation. — Прим. ред.), вообще не
прибегая к использованию QuickReport.
Как можно создать свою форму просмотра
отчетов QuickReport в С++Builder?
Для создания собственных окон просмотра отчета
можно использовать компонент TQRPreview.
Для этой цели следует создать форму (назовем ее PreviewForm),
поместить на нее компонент TQRPreview,
сослаться на нее в форме, содержащей отчет, и в
форме, из которой вызывается просмотр отчета. Код
для показа отчета выгладит примерно так:
Далее создадим обработчик события OnPreview
компонента TQuickRep:
После этого данный отчет будет
появляться не в стандартном окне просмотра, а в
форме PreviewForm.
Возможно ли использование компонентов Decision
Support System при генерации отчетов в QuickReport и,
если да, то каким образом? Если QuickReport не подходит
для этих целей, то какие другие варианты вы
можете посоветовать?
Самый простой способ — использовать компоненты TQRLabel,
текст в которых динамически меняется во время
печати (то есть способ, которым можно напечатать
все, что угодно, написав при этом немного кода). В
принципе можно записать двухмерное сечение куба
во временную таблицу или в компонент TClientDataSet,
написав соответствующий цикл, и сделать отчет на
ее основе.
Использование DecisionQuery в качестве
источника данных для отчета также вполне
возможно.
Другие возможные варианты — это использование
автоматизации Word или Excel либо вычисление сумм
внутри отчета. Можно также использовать другие
генераторы отчетов — например, с помощью Crystal Reports
можно создавать отчеты, содержащие
кросс-таблицы.
Как корректно подключить Crystal Reports к Delphi ?
В составе Crystal Reports Professional имеется VCL-компонент
для Delphi, компонент ActiveX, модуль CRPE32.PAS,
в котором объявлены все функции и структуры Print
Engine API, и описание опубликованных методов Crystal
Reports как сервера автоматизации. Соответственно
есть следующие возможности подключения Crystal Reports
к Delphi:
- Использование функций Report Engine API из библиотеки CRPE32
DLL. В этом случае следует добавить в
проект модуль CRPE32.PAS и сослаться на
этот модуль в предложении uses. Ниже приведен
пример соответствующего кода:
Следует помнить, что строковые
параметры, передаваемые в функции Print Engine API,
представляют собой тип данных PChar,
а не стандартные строки, используемые в Pascal,
поэтому для передачи таких параметров, как,
например, имя отчета, следует осуществить
преобразование типов с помощью функции StrPCopy.
Для успешной компиляции подобных приложений
файл CRPE32.PAS должен находиться в том
же каталоге, что и разрабатываемое приложение,
либо в каталоге DelphiLib.
- Использование VCL-компонента из комплекта поставки (для этого следует установить
его в палитру компонентов Delphi). Естественно, этот компонент инкапсулирует
те же самые функции Print Engine API. Существуют также аналогичные компоненты
третьих фирм (например, компонент от SupraSoft Ltd., http://www.suprasoft.com/). - Использование компонента ActiveX фирмы Crystal Reports.
Этот компонент ActiveX может быть установлен в
палитру компонентов Delphi. Он обладает набором
свойств и методов, более или менее сходным с
соответствующим VCL-компонентом из комплекта
поставки Crystal Reports Professional. - Использование Crystal Reports как сервера
автоматизации. В справочной системе Crystal Reports
имеется подробное описание иерархии вложенных
объектов и их методов (и внушительный набор
примеров для Visual Basic, аналоги которых несложно
создать и на языке Pascal). Ниже приведен пример
соответствующего кода:
- Можно также сделать отчет в виде
исполняемого файла и вызвать его из приложения.
Но в этом случае передать параметры в отчет не
удастся.
Координаты автора:
elmanova@citmgu.ru
http://www.geocities.com/SiliconValley/Way/9281
Список ошибок BDE
$0000 (0) = Successful completion.
$0021 (33) = System Error
$0022 (34) = Object of Interest Not Found
$0023 (35) = Physical Data Corruption
$0024 (36) = I/O Related Error
$0025 (37) = Resource or Limit Error
$0026 (38) = Data Integrity Violation
$0027 (39) = Invalid Request
$0028 (40) = Lock Violation
$0029 (41) = Access/Security Violation
$002A (42) = Invalid Context
$002B (43) = OS Error
$002C (44) = Network Error
$002D (45) = Optional Parameter
$002E (46) = Query Processor
$002F (47) = Version Mismatch
$0030 (48) = Capability Not Supported
$0031 (49) = System Configuration Error
$0032 (50) = Warning
$0033 (51) = Miscellaneous
$0034 (52) = Compatibility Error
$003E (62) = Driver Specific Error
$003F (63) = Internal Symbol
$2101 (8449) = Cannot open a system file.
$2102 (8450) = I/O error on a system file.
$2103 (8451) = Data structure corruption.
$2104 (8452) = Cannot find Engine configuration file.
$2105 (8453) = Cannot write to Engine configuration file.
$2106 (8454) = Cannot initialize with different configuration file.
$2107 (8455) = System has been illegally re-entered.
$2108 (8456) = Cannot locate IDAPI32 .DLL.
$2109 (8457) = Cannot load IDAPI32 .DLL.
$210A (8458) = Cannot load an IDAPI service library.
$210B (8459) = Cannot create or open temporary file.
$2201 (8705) = At beginning of table.
$2202 (8706) = At end of table.
$2203 (8707) = Record moved because key value changed.
$2204 (8708) = Record/Key deleted.
$2205 (8709) = No current record.
$2206 (8710) = Could not find record.
$2207 (8711) = End of BLOB.
$2208 (8712) = Could not find object.
$2209 (8713) = Could not find family member.
$220A (8714) = BLOB file is missing.
$220B (8715) = Could not find language driver.
$2301 (8961) = Corrupt table/index header.
$2302 (8962) = Corrupt file — other than header.
$2303 (8963) = Corrupt Memo/BLOB file.
$2305 (8965) = Corrupt index.
$2306 (8966) = Corrupt lock file.
$2307 (8967) = Corrupt family file.
$2308 (8968) = Corrupt or missing .VAL file.
$2309 (8969) = Foreign index file format.
$2401 (9217) = Read failure.
$2402 (9218) = Write failure.
$2403 (9219) = Cannot access directory.
$2404 (9220) = File Delete operation failed.
$2405 (9221) = Cannot access file.
$2406 (9222) = Access to table disabled because of previous error.
$2501 (9473) = Insufficient memory for this operation.
$2502 (9474) = Not enough file handles.
$2503 (9475) = Insufficient disk space.
$2504 (9476) = Temporary table resource limit.
$2505 (9477) = Record size is too big for table.
$2506 (9478) = Too many open cursors.
$2507 (9479) = Table is full.
$2508 (9480) = Too many sessions from this workstation.
$2509 (9481) = Serial number limit (Paradox).
$250A (9482) = Some internal limit (see context).
$250B (9483) = Too many open tables.
$250C (9484) = Too many cursors per table.
$250D (9485) = Too many record locks on table.
$250E (9486) = Too many clients.
$250F (9487) = Too many indexes on table.
$2510 (9488) = Too many sessions.
$2511 (9489) = Too many open databases.
$2512 (9490) = Too many passwords.
$2513 (9491) = Too many active drivers.
$2514 (9492) = Too many fields in Table Create.
$2515 (9493) = Too many table locks.
$2516 (9494) = Too many open BLOBs.
$2517 (9495) = Lock file has grown too large.
$2518 (9496) = Too many open queries.
$251A (9498) = Too many BLOBs.
$251B (9499) = File name is too long for a Paradox version 5.0 table.
$251C (9500) = Row fetch limit exceeded.
$251D (9501) = Long name not allowed for this tablelevel.
$2601 (9729) = Key violation.
$2602 (9730) = Minimum validity check failed.
$2603 (9731) = Maximum validity check failed.
$2604 (9732) = Field value required.
$2605 (9733) = Master record missing.
$2606 (9734) = Master has detail records. Cannot delete or modify.
$2607 (9735) = Master table level is incorrect.
$2608 (9736) = Field value out of lookup table range.
$2609 (9737) = Lookup Table Open operation failed.
$260A (9738) = Detail Table Open operation failed.
$260B (9739) = Master Table Open operation failed.
$260C (9740) = Field is blank.
$260D (9741) = Link to master table already defined.
$260E (9742) = Master table is open.
$260F (9743) = Detail table(s) exist.
$2610 (9744) = Master has detail records. Cannot empty it.
$2611 (9745) = Self referencing referential integrity must be entered one at a time with no other changes to the table
$2612 (9746) = Detail table is open.
$2613 (9747) = Cannot make this master a detail of another table if its details are not empty.
$2614 (9748) = Referential integrity fields must be indexed.
$2615 (9749) = A table linked by referential integrity requires password to open.
$2616 (9750) = Field(s) linked to more than one master.
$2617 (9751) = Expression validity check failed.
$2701 (9985) = Number is out of range.
$2702 (9986) = Invalid parameter.
$2703 (9987) = Invalid file name.
$2704 (9988) = File does not exist.
$2705 (9989) = Invalid option.
$2706 (9990) = Invalid handle to the function.
$2707 (9991) = Unknown table type.
$2708 (9992) = Cannot open file.
$2709 (9993) = Cannot redefine primary key.
$270A (9994) = Cannot change this RINTDesc.
$270B (9995) = Foreign and primary key do not match.
$270C (9996) = Invalid modify request.
$270D (9997) = Index does not exist.
$270E (9998) = Invalid offset into the BLOB.
$270F (9999) = Invalid descriptor number.
$2710 (10000) = Invalid field type.
$2711 (10001) = Invalid field descriptor.
$2712 (10002) = Invalid field transformation.
$2713 (10003) = Invalid record structure.
$2714 (10004) = Invalid descriptor.
$2715 (10005) = Invalid array of index descriptors.
$2716 (10006) = Invalid array of validity check descriptors.
$2717 (10007) = Invalid array of referential integrity descriptors.
$2718 (10008) = Invalid ordering of tables during restructure.
$2719 (10009) = Name not unique in this context.
$271A (10010) = Index name required.
$271B (10011) = Invalid session handle.
$271C (10012) = invalid restructure operation.
$271D (10013) = Driver not known to system.
$271E (10014) = Unknown database.
$271F (10015) = Invalid password given.
$2720 (10016) = No callback function.
$2721 (10017) = Invalid callback buffer length.
$2722 (10018) = Invalid directory.
$2723 (10019) = Translate Error. Value out of bounds.
$2724 (10020) = Cannot set cursor of one table to another.
$2725 (10021) = Bookmarks do not match table.
$2726 (10022) = Invalid index/tag name.
$2727 (10023) = Invalid index descriptor.
$2728 (10024) = Table does not exist.
$2729 (10025) = Table has too many users.
$272A (10026) = Cannot evaluate Key or Key does not pass filter condition.
$272B (10027) = Index already exists.
$272C (10028) = Index is open.
$272D (10029) = Invalid BLOB length.
$272E (10030) = Invalid BLOB handle in record buffer.
$272F (10031) = Table is open.
$2730 (10032) = Need to do (hard) restructure.
$2731 (10033) = Invalid mode.
$2732 (10034) = Cannot close index.
$2733 (10035) = Index is being used to order table.
$2734 (10036) = Unknown user name or password.
$2735 (10037) = Multi-level cascade is not supported.
$2736 (10038) = Invalid field name.
$2737 (10039) = Invalid table name.
$2738 (10040) = Invalid linked cursor expression.
$2739 (10041) = Name is reserved.
$273A (10042) = Invalid file extension.
$273B (10043) = Invalid language Driver.
$273C (10044) = Alias is not currently opened.
$273D (10045) = Incompatible record structures.
$273E (10046) = Name is reserved by DOS.
$273F (10047) = Destination must be indexed.
$2740 (10048) = Invalid index type
$2741 (10049) = Language Drivers of Table and Index do not match
$2742 (10050) = Filter handle is invalid
$2743 (10051) = Invalid Filter
$2744 (10052) = Invalid table create request
$2745 (10053) = Invalid table delete request
$2746 (10054) = Invalid index create request
$2747 (10055) = Invalid index delete request
$2748 (10056) = Invalid table specified
$274A (10058) = Invalid Time.
$274B (10059) = Invalid Date.
$274C (10060) = Invalid Datetime
$274D (10061) = Tables in different directories
$274E (10062) = Mismatch in the number of arguments
$274F (10063) = Function not found in service library.
$2750 (10064) = Must use baseorder for this operation.
$2751 (10065) = Invalid procedure name
$2752 (10066) = The field map is invalid.
$2801 (10241) = Record locked by another user.
$2802 (10242) = Unlock failed.
$2803 (10243) = Table is busy.
$2804 (10244) = Directory is busy.
$2805 (10245) = File is locked.
$2806 (10246) = Directory is locked.
$2807 (10247) = Record already locked by this session.
$2808 (10248) = Object not locked.
$2809 (10249) = Lock time out.
$280A (10250) = Key group is locked.
$280B (10251) = Table lock was lost.
$280C (10252) = Exclusive access was lost.
$280D (10253) = Table cannot be opened for exclusive use.
$280E (10254) = Conflicting record lock in this session.
$280F (10255) = A deadlock was detected.
$2810 (10256) = A user transaction is already in progress.
$2811 (10257) = No user transaction is currently in progress.
$2812 (10258) = Record lock failed.
$2813 (10259) = Couldn’t perform the edit because another user changed the record.
$2814 (10260) = Couldn’t perform the edit because another user deleted or moved the record.
$2901 (10497) = Insufficient field rights for operation.
$2902 (10498) = Insufficient table rights for operation. Password required.
$2903 (10499) = Insufficient family rights for operation.
$2904 (10500) = This directory is read only.
$2905 (10501) = Database is read only.
$2906 (10502) = Trying to modify read-only field.
$2907 (10503) = Encrypted dBASE tables not supported.
$2908 (10504) = Insufficient SQL rights for operation.
$2A01 (10753) = Field is not a BLOB.
$2A02 (10754) = BLOB already opened.
$2A03 (10755) = BLOB not opened.
$2A04 (10756) = Operation not applicable.
$2A05 (10757) = Table is not indexed.
$2A06 (10758) = Engine not initialized.
$2A07 (10759) = Attempt to re-initialize Engine.
$2A08 (10760) = Attempt to mix objects from different sessions.
$2A09 (10761) = Paradox driver not active.
$2A0A (10762) = Driver not loaded.
$2A0B (10763) = Table is read only.
$2A0C (10764) = No associated index.
$2A0D (10765) = Table(s) open. Cannot perform this operation.
$2A0E (10766) = Table does not support this operation.
$2A0F (10767) = Index is read only.
$2A10 (10768) = Table does not support this operation because it is not uniquely indexed.
$2A11 (10769) = Operation must be performed on the current session.
$2A12 (10770) = Invalid use of keyword.
$2A13 (10771) = Connection is in use by another statement.
$2A14 (10772) = Passthrough SQL connection must be shared
$2B01 (11009) = Invalid function number.
$2B02 (11010) = File or directory does not exist.
$2B03 (11011) = Path not found.
$2B04 (11012) = Too many open files. You may need to increase MAXFILEHANDLE limit in IDAPI configuration.
$2B05 (11013) = Permission denied.
$2B06 (11014) = Bad file number.
$2B07 (11015) = Memory blocks destroyed.
$2B08 (11016) = Not enough memory.
$2B09 (11017) = Invalid memory block address.
$2B0A (11018) = Invalid environment.
$2B0B (11019) = Invalid format.
$2B0C (11020) = Invalid access code.
$2B0D (11021) = Invalid data.
$2B0F (11023) = Device does not exist.
$2B10 (11024) = Attempt to remove current directory.
$2B11 (11025) = Not same device.
$2B12 (11026) = No more files.
$2B13 (11027) = Invalid argument.
$2B14 (11028) = Argument list is too long.
$2B15 (11029) = Execution format error.
$2B16 (11030) = Cross-device link.
$2B21 (11041) = Math argument.
$2B22 (11042) = Result is too large.
$2B23 (11043) = File already exists.
$2B27 (11047) = Unknown internal operating system error.
$2B32 (11058) = Share violation.
$2B33 (11059) = Lock violation.
$2B34 (11060) = Critical DOS Error.
$2B35 (11061) = Drive not ready.
$2B64 (11108) = Not exact read/write.
$2B65 (11109) = Operating system network error.
$2B66 (11110) = Error from NOVELL file server.
$2B67 (11111) = NOVELL server out of memory.
$2B68 (11112) = Record already locked by this workstation.
$2B69 (11113) = Record not locked.
$2C01 (11265) = Network initialization failed.
$2C02 (11266) = Network user limit exceeded.
$2C03 (11267) = Wrong .NET file version.
$2C04 (11268) = Cannot lock network file.
$2C05 (11269) = Directory is not private.
$2C06 (11270) = Directory is controlled by other .NET file.
$2C07 (11271) = Unknown network error.
$2C08 (11272) = Not initialized for accessing network files.
$2C09 (11273) = SHARE not loaded. It is required to share local files.
$2C0A (11274) = Not on a network. Not logged in or wrong network driver.
$2C0B (11275) = Lost communication with SQL server.
$2C0D (11277) = Cannot locate or connect to SQL server.
$2C0E (11278) = Cannot locate or connect to network server.
$2D01 (11521) = Optional parameter is required.
$2D02 (11522) = Invalid optional parameter.
$2E01 (11777) = obsolete
$2E02 (11778) = obsolete
$2E03 (11779) = Ambiguous use of ! (inclusion operator).
$2E04 (11780) = obsolete
$2E05 (11781) = obsolete
$2E06 (11782) = A SET operation cannot be included in its own grouping.
$2E07 (11783) = Only numeric and date/time fields can be averaged.
$2E08 (11784) = Invalid expression.
$2E09 (11785) = Invalid OR expression.
$2E0A (11786) = obsolete
$2E0B (11787) = bitmap
$2E0C (11788) = CALC expression cannot be used in INSERT, DELETE, CHANGETO and SET rows.
$2E0D (11789) = Type error in CALC expression.
$2E0E (11790) = CHANGETO can be used in only one query form at a time.
$2E0F (11791) = Cannot modify CHANGED table.
$2E10 (11792) = A field can contain only one CHANGETO expression.
$2E11 (11793) = A field cannot contain more than one expression to be inserted.
$2E12 (11794) = obsolete
$2E13 (11795) = CHANGETO must be followed by the new value for the field.
$2E14 (11796) = Checkmark or CALC expressions cannot be used in FIND queries.
$2E15 (11797) = Cannot perform operation on CHANGED table together with a CHANGETO query.
$2E16 (11798) = chunk
$2E17 (11799) = More than 255 fields in ANSWER table.
$2E18 (11800) = AS must be followed by the name for the field in the ANSWER table.
$2E19 (11801) = DELETE can be used in only one query form at a time.
$2E1A (11802) = Cannot perform operation on DELETED table together with a DELETE query.
$2E1B (11803) = Cannot delete from the DELETED table.
$2E1C (11804) = Example element is used in two fields with incompatible types or with a BLOB.
$2E1D (11805) = Cannot use example elements in an OR expression.
$2E1E (11806) = Expression in this field has the wrong type.
$2E1F (11807) = Extra comma found.
$2E20 (11808) = Extra OR found.
$2E21 (11809) = One or more query rows do not contribute to the ANSWER.
$2E22 (11810) = FIND can be used in only one query form at a time.
$2E23 (11811) = FIND cannot be used with the ANSWER table.
$2E24 (11812) = A row with GROUPBY must contain SET operations.
$2E25 (11813) = GROUPBY can be used only in SET rows.
$2E26 (11814) = Use only INSERT, DELETE, SET or FIND in leftmost column.
$2E27 (11815) = Use only one INSERT, DELETE, SET or FIND per line.
$2E28 (11816) = Syntax error in expression.
$2E29 (11817) = INSERT can be used in only one query form at a time.
$2E2A (11818) = Cannot perform operation on INSERTED table together with an INSERT query.
$2E2B (11819) = INSERT, DELETE, CHANGETO and SET rows may not be checked.
$2E2C (11820) = Field must contain an expression to insert (or be blank).
$2E2D (11821) = Cannot insert into the INSERTED table.
$2E2E (11822) = Variable is an array and cannot be accessed.
$2E2F (11823) = Label
$2E30 (11824) = Rows of example elements in CALC expression must be linked.
$2E31 (11825) = Variable name is too long.
$2E32 (11826) = Query may take a long time to process.
$2E33 (11827) = Reserved word or one that can’t be used as a variable name.
$2E34 (11828) = Missing comma.
$2E35 (11829) = Missing ).
$2E36 (11830) = Missing right quote.
$2E37 (11831) = Cannot specify duplicate column names.
$2E38 (11832) = Query has no checked fields.
$2E39 (11833) = Example element has no defining occurrence.
$2E3A (11834) = No grouping is defined for SET operation.
$2E3B (11835) = Query makes no sense.
$2E3C (11836) = Cannot use patterns in this context.
$2E3D (11837) = Date does not exist.
$2E3E (11838) = Variable has not been assigned a value.
$2E3F (11839) = Invalid use of example element in summary expression.
$2E40 (11840) = Incomplete query statement. Query only contains a SET definition.
$2E41 (11841) = Example element with ! makes no sense in expression.
$2E42 (11842) = Example element cannot be used more than twice with a ! query.
$2E43 (11843) = Row cannot contain expression.
$2E44 (11844) = obsolete
$2E45 (11845) = obsolete
$2E46 (11846) = No permission to insert or delete records.
$2E47 (11847) = No permission to modify field.
$2E48 (11848) = Field not found in table.
$2E49 (11849) = Expecting a column separator in table header.
$2E4A (11850) = Expecting a column separator in table.
$2E4B (11851) = Expecting column name in table.
$2E4C (11852) = Expecting table name.
$2E4D (11853) = Expecting consistent number of columns in all rows of table.
$2E4E (11854) = Cannot open table.
$2E4F (11855) = Field appears more than once in table.
$2E50 (11856) = This DELETE, CHANGE or INSERT query has no ANSWER.
$2E51 (11857) = Query is not prepared. Properties unknown.
$2E52 (11858) = DELETE rows cannot contain quantifier expression.
$2E53 (11859) = Invalid expression in INSERT row.
$2E54 (11860) = Invalid expression in INSERT row.
$2E55 (11861) = Invalid expression in SET definition.
$2E56 (11862) = row use
$2E57 (11863) = SET keyword expected.
$2E58 (11864) = Ambiguous use of example element.
$2E59 (11865) = obsolete
$2E5A (11866) = obsolete
$2E5B (11867) = Only numeric fields can be summed.
$2E5C (11868) = Table is write protected.
$2E5D (11869) = Token not found.
$2E5E (11870) = Cannot use example element with ! more than once in a single row.
$2E5F (11871) = Type mismatch in expression.
$2E60 (11872) = Query appears to ask two unrelated questions.
$2E61 (11873) = Unused SET row.
$2E62 (11874) = INSERT, DELETE, FIND, and SET can be used only in the leftmost column.
$2E63 (11875) = CHANGETO cannot be used with INSERT, DELETE, SET or FIND.
$2E64 (11876) = Expression must be followed by an example element defined in a SET.
$2E65 (11877) = Lock failure.
$2E66 (11878) = Expression is too long.
$2E67 (11879) = Refresh exception during query.
$2E68 (11880) = Query canceled.
$2E69 (11881) = Unexpected Database Engine error.
$2E6A (11882) = Not enough memory to finish operation.
$2E6B (11883) = Unexpected exception.
$2E6C (11884) = Feature not implemented yet in query.
$2E6D (11885) = Query format is not supported.
$2E6E (11886) = Query string is empty.
$2E6F (11887) = Attempted to prepare an empty query.
$2E70 (11888) = Buffer too small to contain query string.
$2E71 (11889) = Query was not previously parsed or prepared.
$2E72 (11890) = Function called with bad query handle.
$2E73 (11891) = QBE syntax error.
$2E74 (11892) = Query extended syntax field count error.
$2E75 (11893) = Field name in sort or field clause not found.
$2E76 (11894) = Table name in sort or field clause not found.
$2E77 (11895) = Operation is not supported on BLOB fields.
$2E78 (11896) = General BLOB error.
$2E79 (11897) = Query must be restarted.
$2E7A (11898) = Unknown answer table type.
$2E96 (11926) = Blob cannot be used as grouping field.
$2E97 (11927) = Query properties have not been fetched.
$2E98 (11928) = Answer table is of unsuitable type.
$2E99 (11929) = Answer table is not yet supported under server alias.
$2E9A (11930) = Non-null blob field required. Can’t insert records
$2E9B (11931) = Unique index required to perform changeto
$2E9C (11932) = Unique index required to delete records
$2E9D (11933) = Update of table on the server failed.
$2E9E (11934) = Can’t process this query remotely.
$2E9F (11935) = Unexpected end of command.
$2EA0 (11936) = Parameter not set in query string.
$2EA1 (11937) = Query string is too long.
$2EAA (11946) = No such table or correlation name.
$2EAB (11947) = Expression has ambiguous data type.
$2EAC (11948) = Field in order by must be in result set.
$2EAD (11949) = General parsing error.
$2EAE (11950) = Record or field constraint failed.
$2EAF (11951) = When GROUP BY exists, every simple field in projectors must be in GROUP BY.
$2EB0 (11952) = User defined function is not defined.
$2EB1 (11953) = Unknown error from User defined function.
$2EB2 (11954) = Single row subquery produced more than one row.
$2EB3 (11955) = Expressions in group by are not supported.
$2EB4 (11956) = Queries on text or ascii tables is not supported.
$2EB5 (11957) = ANSI join keywords USING and NATURAL are not supported in this release.
$2EB6 (11958) = SELECT DISTINCT may not be used with UNION unless UNION ALL is used.
$2EB7 (11959) = GROUP BY is required when both aggregate and non-aggregate fields are used in result set.
$2EB8 (11960) = INSERT and UPDATE operations are not supported on autoincrement field type.
$2EB9 (11961) = UPDATE on Primary Key of a Master Table may modify more than one record.
$2EBA (11962) = Queries on MS ACCESS tables are not supported by local query engines.
$2EBB (11963) = Preparation of field-level constraint failed.
$2EBC (11964) = Preparation of field default failed.
$2EBD (11965) = Preparation of record-level constraint failed.
$2EC4 (11972) = Constraint Failed. Expression:
$2F01 (12033) = Interface mismatch. Engine version different.
$2F02 (12034) = Index is out of date.
$2F03 (12035) = Older version (see context).
$2F04 (12036) = .VAL file is out of date.
$2F05 (12037) = BLOB file version is too old.
$2F06 (12038) = Query and Engine DLLs are mismatched.
$2F07 (12039) = Server is incompatible version.
$2F08 (12040) = Higher table level required
$3001 (12289) = Capability not supported.
$3002 (12290) = Not implemented yet.
$3003 (12291) = SQL replicas not supported.
$3004 (12292) = Non-blob column in table required to perform operation.
$3005 (12293) = Multiple connections not supported.
$3006 (12294) = Full dBASE expressions not supported.
$3101 (12545) = Invalid database alias specification.
$3102 (12546) = Unknown database type.
$3103 (12547) = Corrupt system configuration file.
$3104 (12548) = Network type unknown.
$3105 (12549) = Not on the network.
$3106 (12550) = Invalid configuration parameter.
$3201 (12801) = Object implicitly dropped.
$3202 (12802) = Object may be truncated.
$3203 (12803) = Object implicitly modified.
$3204 (12804) = Should field constraints be checked?
$3205 (12805) = Validity check field modified.
$3206 (12806) = Table level changed.
$3207 (12807) = Copy linked tables?
$3209 (12809) = Object implicitly truncated.
$320A (12810) = Validity check will not be enforced.
$320B (12811) = Multiple records found, but only one was expected.
$320C (12812) = Field will be trimmed, cannot put master records into PROBLEM table.
$3301 (13057) = File already exists.
$3302 (13058) = BLOB has been modified.
$3303 (13059) = General SQL error.
$3304 (13060) = Table already exists.
$3305 (13061) = Paradox 1.0 tables are not supported.
$3306 (13062) = Update aborted.
$3401 (13313) = Different sort order.
$3402 (13314) = Directory in use by earlier version of Paradox.
$3403 (13315) = Needs Paradox 3.5-compatible language driver.
$3501 (13569) = Data Dictionary is corrupt
$3502 (13570) = Data Dictionary Info Blob corrupted
$3503 (13571) = Data Dictionary Schema is corrupt
$3504 (13572) = Attribute Type exists
$3505 (13573) = Invalid Object Type
$3506 (13574) = Invalid Relation Type
$3507 (13575) = View already exists
$3508 (13576) = No such View exists
$3509 (13577) = Invalid Record Constraint
$350A (13578) = Object is in a Logical DB
$350B (13579) = Dictionary already exists
$350C (13580) = Dictionary does not exist
$350D (13581) = Dictionary database does not exist
$350E (13582) = Dictionary info is out of date — needs Refresh
$3510 (13584) = Invalid Dictionary Name
$3511 (13585) = Dependent Objects exist
$3512 (13586) = Too many Relationships for this Object Type
$3513 (13587) = Relationships to the Object exist
$3514 (13588) = Dictionary Exchange File is corrupt
$3515 (13589) = Dictionary Exchange File Version mismatch
$3516 (13590) = Dictionary Object Type Mismatch
$3517 (13591) = Object exists in Target Dictionary
$3518 (13592) = Cannot access Data Dictionary
$3519 (13593) = Cannot create Data Dictionary
$351A (13594) = Cannot open Database
$3E01 (15873) = Wrong driver name.
$3E02 (15874) = Wrong system version.
$3E03 (15875) = Wrong driver version.
$3E04 (15876) = Wrong driver type.
$3E05 (15877) = Cannot load driver.
$3E06 (15878) = Cannot load language driver.
$3E07 (15879) = Vendor initialization failed.
$3E08 (15880) = Your application is not enabled for use with this driver.
$3F01 (16129) = Query By Example
$3F02 (16130) = SQL Generator
$3F03 (16131) = IDAPI
$3F04 (16132) = Lock Manager
$3F05 (16133) = SQL Driver
$3F06 (16134) = IDAPI Services
$3F07 (16135) = dBASE Driver
$3F08 (16136) = Dictionary Manager
$3F0B (16139) = Token
$3F0D (16141) = Table
$3F0E (16142) = Field
$3F0F (16143) = Image
$3F10 (16144) = User
$3F11 (16145) = File
$3F12 (16146) = Index
$3F13 (16147) = Directory
$3F14 (16148) = Key
$3F15 (16149) = Alias
$3F16 (16150) = Drive
$3F17 (16151) = Server error
$3F18 (16152) = Server message
$3F19 (16153) = Line Number
$3F1A (16154) = Capability
$3F1B (16155) = Dictionary
$3F1D (16157) = Object
$3F1E (16158) = Limit
$3F1F (16159) = Expression
$3F70 (16240) = WORK
$3F71 (16241) = PRIV
$3F72 (16242) = Records copied
$3F73 (16243) = Records appended
$3F74 (16244) = LineNo
$3F75 (16245) = Line
$3F76 (16246) = Reason