Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.22;
Скачать: CL | DM;

Вниз

Не получается подключить БД Paradox через ODBC и ADO   Найти похожие ветки 

 
Winni   (2006-08-25 19:15) [0]

Здравствуйте, мастера !

Никак не получается подключить базу данных Paradox через ODBC и ADO.
Вроде бы работает, но как только переименую Borland Shared\BDE , получаю ошибку
"[Microsoft][Драйвер ODBC Paradox]Внешняя таблица не имеет
предполагаемый формат", хотя не пойму причем тут BDE.

Я делаю так ( Win XP, D7) :

1) Windows: Администрирование\Источники данных ODBC - получаю диалоговое окно
Администратор источников данных ODBC.

2) В администраторе на закладке "Пользовательский DSN" щелкаю "Добавить",
попадаю в окно "Создание нового источника данных". Здесь выбираю драйвер,
конкретно - Microsoft Paradox driver. Щелкаю Готово.

3) Попал в окно "Установка драйвера ODBC для Paradox". Даю источнику имя,
drive4. Снимаю птичку "Использовать текущий каталог" и выбираю каталог, в котором
находятся мои таблицы .db. Можно щелкнуть "Параметры", но там ничего интересного нет.

4) Источник drive4 появляется в списке "Пользовательский DSN". Щелкаю ОК.

------- Теперь занимаюсь Делфи. -----------

1) Создаю новый проект. На форму помещаю ADOConnection1, настраиваю свойства:
  - Connection String: выбираю подключаемые данные = Microsoft OLE DB Provider
for ODBC Drivers, далее:
  - в окне "Использовать имя источника данных" выбираю свой drive4.
  - Остальное не заполняю. Проверяю подключение - успешно.
  - Щелкаю ОК и в другом окне ОК.

2) Настраиваю другие свойства  ADOConnection1:
  - LoginPrompt := false
  - Mode :=  cmShareDenyNone
  - Авто заполняется Provider = MSDASQL.1
   (Connected вроде установится само)

3)Ставлю на форму ADOQuery1, заполняю свойства:
  - Copnnection = ADOConnection1,
  - CursorType = ctStatic,
  - SQL = Select *
          from Results.db
  - Active = true,

4) Ставлю DataSource1, настраиваю:
  - DataSet = ADOQuery1

5) Ставлю DBGrid1, настраиваю:
  - DataSource = DataSource1
 
- Появляется таблица, вроде - все хорошо. Запускаю - работает.

Но если переименовать папку BDE --> BDE__ то
( чтобы переименовать, нужно закрыть проект и Делфи)
то имеем ошибку: [Microsoft][Драйвер ODBC Paradox]Внешняя таблица не имеет
предполагаемый формат.

Собственно, мне нужно работать с БД по лок. сети, подошел бы вариант
ADO - Access, но в этом случае я не могу при помощи SQL подключать
таблицу по выбору.


 
sniknik ©   (2006-08-25 20:40) [1]

> но как только переименую Borland Shared\BDE , получаю ошибку
не переименовывай! т.к. jet который работает с парадоксом, работает в 2 вариантах, урезанном (только на чтение и только до 4 версии) и расширенном со всеми возможностями но с использованием BDE. (!!!!)
ODBC-шный драйвер с некоторого времени использует jet (сам никто работать не хочет ;о))... вот тебе и ошибка при ненахождении BDE шных dll-ек. (а на машине с неустановненным вообще перестанет записывать, и открывать 7-ю версию.. )

> подошел бы вариант
> ADO - Access, но в этом случае я не могу при помощи SQL подключать таблицу по выбору.
подключать и не надо, можно без этого (насколько понял твою "проблему"), доступится к любой внешней таблице..., в справке по jet (в аксесс) поищи раздел "предложение IN", и/или "ISAM Formats".


 
Anatoly Podgoretsky ©   (2006-08-25 22:17) [2]

Гады они и паразиты, паразитируют на БДЕ и смущают неокрепшие умы. Те рады, как же избавились от БДЕ.


 
Winni   (2006-08-25 22:38) [3]

Спасибо !
Забавная ситуация получается. Выходит, применяя ODBC и ADO не избавимся от BDE ? Нужные *.dll можно конечно копировать в обозреваемые папки и даже отобрать только необходимые, но это некрасиво, хотя попробую. Может быть, есть нормальный выход ?


 
Anatoly Podgoretsky ©   (2006-08-25 22:43) [4]

Получается так!
А про копирование ДЛЛ забудь, пока тебя не побили. Нормальный выход это инсталяция БДЕ вместе с программой.


 
sniknik ©   (2006-08-25 23:56) [5]

еще один нормальный выход - использовать ADO для того для чего разрабатывалось... (любой sql сервер\движок имеющий OLEDB провайдера), и забыть про парадокс. (ну максимум для конвертации старого, из него в нормальный формат, но новое на нем не начинать)

если же любовь к парадоксу используй BDE.


 
Winni   (2006-08-26 11:08) [6]

Здравствуйте !
Я понял так, что нормальный путь - SQL-сервер, так что придется поизучать. Paradox + BDE тоже неплохо для моей несложной задачи, тем более что Paradox можно при помощи Access перекодировать во многие форматы. Про доступ к отдельным таблицам .mdb тоже почитаю, возможно, что-то получится.
  Спасибо !


 
sniknik ©   (2006-08-26 12:18) [7]

> тем более что Paradox можно при помощи Access перекодировать во многие форматы.
при помощи Access можно практически любой формат в любой другой перекодировать... у него есть методы (ISAM-ы) которые это делают.
т.что не стоит выбирать парадокс только изза этого, это не "достойная" причина.

вообще, даже если нужен локальный фармат/движок, лучше выбрать другой, уж больно парадокс проблемный (судя по постоянным вопросам сдесь), хотя бы dBase, и то лучше (использовать BDE), или тот же .mdb (ADO + Jet), ничего в нем сложного нет (возможностей больше, значит и учить больше, обьемнее, но не сложнее. а начинать можно вообще с минимумом)

+ на королевстве есть хорошие статьи, хотя оно там не совсем для начинающих
http://www.delphikingdom.com/asp/itemq.asp?Mode=1&ItemID=128
и потом там всеравно присутствует парадокс... (ну принято в дельфи все примеры на нем показывать. борланд изначально сделал а дальше по привычке или просто переписыванием исходного... везде и кочует), но ты то уже знаеш что его лучше с ADO не использовать? ;о))

ну и еще совет, если где в примерах встречается TADOTable, TADOQuery или TADOStoredProc меняй их на TADODataset, если у TADOQuery делается не Open а ExecSQL то меняй его на его TADOCommand... просто чтобы потом не переделывать/переучиваться.


 
Winni   (2006-08-26 20:40) [8]

Добрый день !

Спасибо за советы.

1. На Королевство зайду, грамотность надо повышать.

2. Paradox выбран неизветсно почему, по принципу - почему бы и нет, если я не
знаю преимуществ и недостатков. Но я за него не держусь, т к преобразовать вроде

несложно. Но проблем с самим парадоксом вроде бы нет, все работает. Некоторые
советуют Visual FoxPro, но я это знакомство отложил. От старых времен осталось, что
для его приложений у заказчика нужно ставить проигрыватель. Впрочем, это почти в

любом случае получается.

3. Про эту компанию (TADOTable, TADOQuery, TADOStoredProc, TADODataset) я немного

читал. У меня есть И Ю Баженова- Д7, С.Бобровский-Д5, Тейксейра-Д5.
Но пока действительно примменяю TADOTable, TADOQuery. Завтра попробую заменить.

4. Все же я зря испугался. Обратиться к любой таблице, в том числе в ран-тайм и из

клиента - можно:

procedure TForm1.Button2Click(Sender: TObject);
begin
 ClientDataSet_Test.Active := true;
 try
  ClientDataSet_Test.CommandText :=
   "Select * from " + Edit1.Text;
  ClientDataSet_Test.Execute;
  ClientDataSet_Test.Refresh;
 except
  showmessage("Смена тестов - ошибка");
 end;
end;  (Provider.Options. настроил)

Но вроде бы я это делал и раньше, почему не пошло - не знаю, торопился наверно.


 
sniknik ©   (2006-08-27 11:33) [9]

> Некоторые советуют Visual FoxPro, но я это знакомство отложил.
если как иструмент на котором писать всю программу то да смысл есть, в смысле для работы с форматом таблиц фохпро лучше самого фокса никто не справится...
если же как формат таблиц для работы с ним из дельфей то не стоит, есть проблемы. не плана как у парадокса, а скорее специальные ограничения внесенные в драйвер VFP (ничем другим как умыслом обьяснить например невозможность созданий индексов у отдельностоящих (не в базе, да и там через одно место) таблиц  не могу)
но кстати на работе с форматом фокса, у фокса все преимущества и кончаются, на дельфи ты можеш вюбрать любую базу/формат и работать с ним примерно по одинаковым принципам.
если уж советовать локальную базу для обучения/использования в дельфе, я бы посоветовал accec, возможностей дофига, принципы работы двояки, один вариант как с клиент сервером другой как с файл сервером. будеш работать как с клиент сервером то без всяких заморочек перейдеш на нормальный sql сервер.
(можно еще Firebird персонал, локальная кампиляция ничем почти от сервера в работе не отличается, но тут уже ADO не самый подходящий вариант... не, работать можно и через него, без проблем, просто есть более "родные" компоненты)

> Обратиться к любой таблице, в том числе в ран-тайм и из
> клиента - можно:
ClientDataSet? у тебя что трехзвенка? или просто в одном приложении используется для кешированных изменений например. если второе то зря, TADODataSet аналогичную работу (режим ltBatchOptimistic), может не в том обьеме (или лучше сказать немного по другому) но для большинсва случаев хватает, ClientDataSet здесь только лишнее звено (и лишняя dll, которую придется таскать с собой, отдельно или включив в проект.).



Страницы: 1 вся ветка

Текущий архив: 2006.10.22;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.033 c
2-1160029598
pathfinder
2006-10-05 10:26
2006.10.22
Вопрос по работе с ini-файлами..


15-1159471917
default
2006-09-28 23:31
2006.10.22
Поговорим о грустном


15-1159286723
nomen
2006-09-26 20:05
2006.10.22
Как бы сделать обогрев клавиатуры


3-1155909872
el_serpiente
2006-08-18 18:04
2006.10.22
Подключение через SQL запрок в FireBird к внешней базе данных


15-1159381674
PHPDeveloper
2006-09-27 22:27
2006.10.22
TWebBrower