Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Подземелье Магов
  
 

Фильтр по датам

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
 
 23:27 Geo
 
 
Во Флориде и в Королевстве сейчас  23:40[Войти] | [Зарегистрироваться]

Обсуждение материала
Опыт использования ADO для доступа к базам данных форматов MS Access, xBase и Paradox
Полный текст материала


Цитата или краткий комментарий:

«... Данная статья не является каким-либо учебным пособием, а просто попыткой обобщить некий опыт, полученный в течение некоторого времени при использовании ADO. ...»


Важно:
  • Страница предназначена для обсуждения материала, его содержания, полезности, соответствия действительности и так далее. Смысл не в разборке, а в приближении к истине :о) и пользе для всех.
  • Любые другие сообщения или вопросы, а так же личные эмоции в адрес авторов и полемика, не относящаяся к теме обсуждаемого материала, будут удаляться без предупреждения авторов, дабы не мешать жителям нормально общаться.
  • При голосовании учитывайте уровень, на который расчитан материал. "Интересность и полезность" имеет смысл оценивать относительно того, кому именно предназначался материал.
  • Размер одного сообщений не должен превышать 5К. Если Вам нужно сказать больше, сделайте это за два раза. Или, что в данной ситуации правильнее, напишите свою статью.
Всегда легче осудить сделанное, нежели сделать самому. Поэтому, пожалуйста, соблюдайте правила Королевства и уважайте друг друга.



Добавить свое мнение.

Результаты голосования
Оценка содержания

  Содержит полезные и(или) интересные сведения
[1]2090.9%
 
  Ничего особенно нового и интересного
[2]00%
 
  Написано неверно (обязательно укажите почему)
[3]29.1%
 
Всего проголосовали: 22

Оценка стиля изложения

  Все понятно, материал читается легко
[1]861.5%
 
  Есть неясности в изложении
[2]538.5%
 
  Непонятно написано, трудно читается
[3]00%
 
Всего проголосовали: 13




Смотрите также материалы по темам:
[TTable] [TField] [TBlobStream] [Exception] [DBase] [Paradox] [MS Access] [ADO]

Комментарии жителей
Отслеживать это обсуждение

Всего сообщений: 29

15-10-2009 21:23
SELECT * INTO [Paradox 7.x;DATABASE=D:\].[TestTable#DB] FROM SourceTable

может я чего то не догоняю , но не работает это

в билдере он выглядит так
SELECT * INTO  TestTable.DB IN  "d:\" "paradox 7.X;" FROM data_work;


16-04-2007 02:37
Статья познавательна. Спасибо автору.
Сообщение не подписано


22-12-2003 18:32
Вкратце:
1. ADO - универсальная оболочка для приложения, все зависит от провайдера (драйвера базы данных). То есть ADO использует драйвер JET  для Access, DBase - для DBF  и т. д.
2. Скорость - спорный вопрос, у TDataSet есть такое свойство - DisableControls - сильно помогает при массивных операциях.
3. У ADO есть свойства, помогающие обновлять автоинкременты вовремя.

Надеюсь, я опоздал с комментариями.


05-05-2003 10:14
У меня не получаеться открыть базу данных MS ACCESS (*.mdb).
После запроса пароля она выдает SQL ошибку и все.
Знающие люди подскажите как справится с этой проблеммой.

P.S. Если несложно скинте ответ на почтовый адрес.


25-02-2003 12:21
>>>Все нормально в ADO, но не знаю как дорлжна выглядеть строка конекта к базе Информикса. К Ораклу нормальну к другим СУБД нормально, а к Информиксу немогу. Но без ОDBC. Помогите. Большое спасибо

1. First of all you need to install Informix OLE DB driver. Informix
client SDK or Connect (version 2.40 and later) disk installation includes it when you chose "Custom Installation" option.
2. In ADOConnection component try to build ConnectionString via
wizard. If driver is installed, you"ll see the line
"Informix OLE DB provider" in the list of OLE DB providers.
After chosing it is easy to comlete the rest.

The result string can looks like this:
Provider=Ifxoledbc;Password=repka;Persist Security Info=True;User ID=iadmin;Data Source=prima@ol_definqa;Extended Properties=""


03-08-2002 16:23
>Натолкнулся на проблему условия Where DateField Between Date1 And
> Date2. Ну не работает и все. Уфф.

Возьми дату в решетки вместо кавычек(вот так: #12/01/2000# ) и все заработает....




09-04-2002 11:38
Солидарен с автором в том, что ADO - это средство, ориентированное на просмотр таблицы.
Пусто имеется таблица, в которой первичный ключ определяется тригером
на вставку и имеется обычная последовательность операций:
Table.Open;
Table.Append;
// Установка значений полей в таблице (за исключением поля
// первичного ключа)
Table.Post;
При работе с BDE получить значение первичного ключа можно либо
через последовательность Table.Prior Table.Next, либо через
Table.First Table.Last (понятно, что второй вариант гораздо хуже,
но мне приходится работать с Centura SQLBase v 7.5 и проходит только второй вариант). При этом важно, что запрос на открытие таблицы не приводит к возвращению курсора на SELECT * FROM TABLE, т.е. не производится выборка всех записей из таблицы.
При работе с ADO:
- при открытии таблицы - производится выборка всех записей из таблицы, на мой взгляд это огромнейший минус.
- получить значение тригерного первичного ключа невозможно никоим образом, кроме как сделать Table.Close Table.Open. Правда, для MS SQL
с первичным ключом, созданном на поле Identity, значение первичного ключа возвращается.


25-02-2002 12:23
Как используя ADO подключиться к MySql


14-02-2002 14:38
Попробовал вашу итоговую строку
SELECT * INTO [Paradox 7.x;DATABASE=D:\].[TestTable#DB] FROM SourceTable
выдает ошибку
Parameter object is improperly defined. Inconsistent or incomplete information was provided
чтото не так в параметрах а что? и можно ли также выгрузить таблицу из mdb в dbf?


30-10-2001 12:31
Все нормально в ADO, но не знаю как дорлжна выглядеть строка конекта к базе Информикса. К Ораклу нормальну к другим СУБД нормально, а к Информиксу немогу. Но без ОDBC. Помогите. Большое спасибо


27-08-2001 10:31
Добрый день!Прежде всего спасибо автору за статью.Хочу внести некоторые уточнения по поводу работы с dBase c форматом.Строка коннекта действительно срабатывает но только не в TADOConnection,
а например в TADOTable  и причем по полной программе (редактир,до-
бавление,удаление)- имеется ввиду ...OLEDB.4.0 - Provider.В этой ситуации ,я так понимаю,увеличивется время на открытие таблиц т.к.
происходит соединение с каждой таблицей отдельно.
У меня вопрос по работе с БД - MS Acces-97 и BDE.(Delphi-5.1)
Не получается создать индекс на таблицу,Первичный ключ созданный в Acces в Delphi - не виден.Буду благодарен за совет.


21-08-2001 15:37
А у меня такая проблема:
Наша фирма работает с большим досовским приложением, которое использует БД Paradox 3.5. Никак не могу подобрать драйвер для него - русские буквы зюками. Пробовала всякие кодовые страницы в STANDART - не помогает. Access через Jet читает таблицы нормально, а BDE на подключении к БД через ODBC виснет. Через ADO+ODBC Delphi читает нормально, но уж больно замороченно. Зато когда стандартным драйвером делаешь запрос, а потом сохраняешь его в dbf - вот тогда dbf читается правильно обычным стандартным драйвером BDE.
Может кто чего подскажет в данной ситуации - как попроще сделать можно?
Сам Paradox может читать только таблицы версии 3.5, да и приложение работает тоже строго с этим форматом, а на другие - ругается.
Вот!


29-07-2001 18:56
Thank you for the article.

Can anybody from ADO-Paradox gurus give me any clear explanation about access to Paradox BLOB fields by ADO 2.5 ?

I tried to work with Paradox tables from a VB application using ADO, and everithing works fine except for BLOBs: the Fields collection of an opened ADO recordset does not contain any BLOB fields.

MSDN KB confirms this situation:

Q300189: PRB: Paradox ISAM Does Not Support Some Paradox 4.x Types
..
Microsoft Jet versions 3.51 and 4.0 provide a Paradox ISAM driver that allows access to Paradox 4.x tables. However, the Paradox ISAM driver does not support the BINARY BLOB (type B) Paradox 4.x data type. Thus, fields that use this data type will not be available in Visual Basic.

But Delphi"s 5 ADO objects (e.g. TADOBlobStream) handle the BLOB fields !!! May be there is any trick to get an access to Paradox BLOBs by ADO (some settings for the ADO connection, etc.) ?

I have ADO 2.5 and Delphi 3 (not Delphi 5 !) including native BDE installed. ADO connection strings I tried to connect to Paradox are:

1) ODBC:
Driver={Microsoft Paradox Driver (*.db )}; DBQ=C:\PdxDB; DefaultDir=C:\PdxDB;  

2) Jet 4.0
Provider=Microsoft.Jet.OLEDB.4.0; Extended Properties=Paradox 5.x; Data Source=C:\PdxDB;

Excuse me for English, I have not Russian keyboard.



09-07-2001 12:02
Все классно! Только есть вопрос. Можно ли через Jet как-нибудь подключиться к базе foxpro (dbf)?
К dBase, как я понял, можно. А вот к foxpro может только Access 97 ( 2000 не может). Кто-нибудь знает, как это делает Access 97?
Дело в том, что я использую ADO и ODBC - провайдера. Но некоторые таблицы таким образом не открываются. Зато в Access 97 они спокойно открываются. Отсюда и возник мой вопрос...


29-06-2001 20:16
Добрый день.
Прочитал статью - оказалась весьма полезной.
Кое-что даже использовал в своём проекте. Вот только одного понять не могу - выборка занимает примерно сопоставимое время, а вот вставка...

Через ADO на моём маломощном компьютере  1300 записей в таблицу Paradox"a c PK  вставляются за 3м 40 с.
В dBase 5.0 без PK - за 3м 16 с.
А вот через BDE  - всего за ... 6 (шесть) секунд.

Внимание вопрос: такая тенденция наблюдается у всех, или мне надо срочно почитать дополнительную литературу?


01-06-2001 13:30
Настоящим удостоверяю, что сообщение №13 написано действительно мною, просто забыл подписаться ;)

                                                  Влад


01-06-2001 13:26
Виктор Светлов:
-----------------------------------------------------------
- Статью автора читать было занимательно и интересно. Ваши же замечания читаются с тяжелым ощущением, что это жесткая критика.
-----------------------------------------------------------
  А что в этом плохого ? Если Автор пишет заведомо неправильные вещи, то либо он действительно не владеет вопросом (тогда не нужно писать публичных статей), либо он где-то не точно выразился, но почему тогда он не принял участие в обсуждении ?

-----------------------------------------------------------
- Насколько я понял, мы говорим об ADO и OleDB, а не о DAO как таковом. Я конечно, тот еще ламер, но мне кажется, это несколько разные вещи.
-----------------------------------------------------------
  Если этот вопрос возник по поводу моей фразы:
---
  ...Access работает с MDB через JET, не через ADO ! Даже ADO работает с MDB через JET...
---
то она является ответом на фразу Автора:
---
А вот почему в Access все нормально работает - это загадка
---
  ADO (OLEDB) и DAO действительно разные вещи (разве я утверждал обратное ?), так что я, наверное, не совсем понял Ваш вопрос. Кстати DAO - это лишь оболочка, настоящий engine для MDB именно JET.

                                                       Влад
Сообщение не подписано


31-05-2001 17:54
Уважаемый Влад

В ваших замечаниях есть серьезные моменты. Но разрешите заметить, что:
- Статью автора читать было занимательно и интересно. Ваши же замечания читаются с тяжелым ощущением, что это жесткая критика.
- Насколько я понял, мы говорим об ADO и OleDB, а не о DAO как таковом. Я конечно, тот еще ламер, но мне кажется, это несколько разные вещи.


31-05-2001 17:44
Видите ли, Сергей ...
При трехзвенной структуре приложения необходимость автоинкремента как такового вообще спорна. В этом случае он присваивается только в процессе физического сохранения ApplyUpdates. Поэтому при использовании зависимых детализирующих таблиц использование автоинкремента не ... для себя считаю вообще недопустимо. Приходится делать аналогию последовательностей ORACLE: Эдакая таблица, где хранятся последние использованные идентификаторы согласно именам таблиц.


29-05-2001 16:31
Может Влад и прав, не проверял, но описанные автором проблемы с автоинкрементными полями при доступе к SM SQL точно такие же!
Или я абсолютно путаю все смыслы и аналогия с SQL сервером тут абсолютно неуместна?
Было бы здорово прочитать статью аналогичного содержания про доступ к MS SQL через ADO...


18-05-2001 21:42
Чтоб не быть голословным, ссылки на сайт Microsoft -

http://support.microsoft.com/support/kb/articles/Q230/1/26.ASP


http://msdn.microsoft.com/library/officedev/off2000/actrbCantOpenUpdateLinkedParadoxTableWhyS.htm

http://support.microsoft.com/support/kb/articles/Q263/5/61.ASP

Резюме - Paradox и ADO не лучшая связка.
Для Paradox лучше и проще использовать BDE
 JINX


18-05-2001 01:12
Продолжаем разгром ;)

Бред про инкрементные поля и необходимость в первичном ключе я просто не буду даже комментировать... Возьмём только "вывод":
---
Microsoft активно, всеми доступными средствами, пытается заставить пользователей переходить к своим новым продуктам.

А вот почему в Access все нормально работает - это загадка. Я думаю, что сам-то он пользуется какими-то своими методами, либо в процессе работы у него есть некий идентификатор записи типа только что придуманного нами.
---

Уважаемый Автор ! Access работает с MDB через JET, не через ADO ! Даже ADO работает с MDB через JET, так что читайте еще MSDN и одной загадкой для Вас станет меньше ;) Кстати Access2000 использует JET4.0, для которого Borland не выпустил BDE-драйвера

А теперь рассмотрим
---
самые значащие ограничения для драйвера PARADOX, которые я нашел в MSDN:
1) Для того, чтобы Вы имели возможность производить действия по добавлению, удалению записей или редактированию данных в таблице, таблица должна иметь первичный ключ.

2) Первичный ключ должен быть определен для первых "n" полей таблицы.

3) Вы не можете создавать для таблицы индексы, если для нее не определен первичный ключ.

4) Первый создаваемый для таблицы уникальный индекс будет создан как первичный ключ.

5) Первичный ключ может быть создан для таблицы только в том случае, если в ней нет ни одной записи.

6) Действия по добавлению или удаления полей в таблице должны быть произведены до того, как для нее создан первичный ключ.
---

  Я не знаю, где Вы это нашли, но "ограничения" №2, 3 и 4 - это свойства самого формата PARADOX - он не умеет создавать индексы для таблиц, не имеющих первичного ключа, и первичный ключ определяется по совокупности одного или нескольких первых полей таблицы.

  А теперь ложка мёда в бочке дегтя ;)
  Автор явно упорно и долго копался в MSDN"е. Одна только строка 'SELECT * INTO [Paradox 7.x;DATABASE=D:\].[TestTable#DB] FROM SourceTable' уже заслуживает признания ;)

Disclaimer ;)
Я не ставил своей целью обидеть или как-либо задеть Автора. Единственная цель этого письма - не дать неопытным и новичкам сделать неправильные выводы.

                                                Влад


18-05-2001 00:55
Автор показал полное незнание всех упомянутых в "статье" предметов.

Итак:
---
Цитата: "Для доступа к данным MS Access мы используем DAO 2.5,
---
  Этого в Борланде не могли сказать, т.к. БДЕ умеет работать только с DAO 3.0 и с DAO 3.5, считаем это опечаткой :)

Продолжим с 'интересная особенность поведения BLOB потоков под управлением Windows NT 4'. А причём здесь Windows NT 4 ? Я не нашёл упоминания "тестов" для Windows 9x, например.

Кстати код:
Var
AStream: TBLOBStream;
...
AStream := TBLOBStream(ATable.CreateBLOBStream(ATable.FieldByName("Поле")));

  во-первых: ненужное приведение типа к TBLOBStream, т.к. никаких специфичных для TBLOBStream методов далее не используется, но это мелочи.

  во-вторых: метод TBDEDataSet.CreateBlobStream имеет два параметра
    function CreateBlobStream(Field: TField; Mode: TBlobStreamMode): TStream;
  так что выше приведенный код просто не скомпилируется

Я специально проверил работу BDE с блобами таблицы, созданной Access97 (DAO 3.5) - SQLExplorer отлично работает с ними, причём именно под NT4.

Вывод - автор понятия не имеет ни о версиях DAO, ни о работе с блобами в Дельфи ;)))


17-05-2001 18:16
Спасибо. Все это очень инересно и познавательно. У меня при работе с БД Access 97 возникла та же проблема с автоинкрементным полем, но мне удалось ее решить: после Post попробуй сделать таблице Refresh. Где нашла не помню, но рылась долго в родном Help"е Delphi.


17-05-2001 12:01
Да, забыл спросить, Денис, когда Вы проводили сравнительное тестирование скорости BDE vs ADO - каковы были настройки для коннекта к таблице Access? Был ли это Access 2000?

Пробовали вы использовать серверный курсор?
TADODataset.CommandType := cmdTableDirect?
Batch - добавление?

Видите ли - я пишу небольшую статью об ADO для начинающих - думаю эта информация была бы полезна.

Если Вас не затруднит - мой адрес - error@softhome.net, спасибо.
 JINX


17-05-2001 11:53
Несколько раз видел сообщения от программистов из TeamB на конфернции
Delphi.ado, что на боралнде, говорят о том, что ADO при работе с таблицами Paradox опирается на библиотеку BDE - без BDE он работать будет очень плохо - поэтому не советуют работать с Paradox"ом через ADO - BDE для этого лучше.

Надеюсь это кого-то спасет от  головной боли.
 JINX


17-05-2001 10:31
читается как детектив с примесью юмора
спасибо автору за его страдания :))
Сообщение не подписано


16-05-2001 19:54
Я раньше немного экспериментировал с ADO. Натолкнулся на проблему условия Where DateField Between Date1 And Date2. Ну не работает и все. Уфф. Слава Богу и автору этой статьи, что я на этом и остановился.
Еще хочу согласиться с тем, что Microsoft активно работает над своими продуктами. MS Access 2000 стал значительно быстрее, чем его предшественник. Я работаю с ним через MS Access 2000 ODBC Driver. Единственное, из-за чего придется переходить на SQL-серверную платформу, это долгий процесс записи в Memo-поля и замедление работы при увеличении числа пользователей.


16-05-2001 16:30
Мне было полезно, т.к до сих пор не решил, переходить ли на ADO.
Автору спасибо за анализ!
Сообщение не подписано


Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
"Мы с тобой одной крови — ты и я!". Чьи это заветные слова?
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.

Оценка содержания
 
Содержит полезные и(или) интересные сведения
 
Ничего особенно нового и интересного
 
Написано неверно (обязательно укажите почему)


Оценка стиля изложения
 
Все понятно, материал читается легко
 
Есть неясности в изложении
 
Непонятно написано, трудно читается

Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования