Текущий архив: 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