| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Как сохранить результат запроса ADOQuery1 во внешн |
| Автор: AlexV 16.12.2002, 19:00 |
| Как сохранить результат запроса ADOQuery1 во внешний файл ? Например, в dbf (VFoxPro) ? Желательно не создавая заранее временных таблиц. |
| Автор: Medved 16.12.2002, 20:12 | ||
| А таблица уже создана, или требуется его самому создавать? пробежаться по всему НД ADOQuery1, считывая записи и заносить их в таблицу. Пробежаться можно и так:
Если же требуется создавать таблицу самому (программно), то необходимо прежде пробежаться по полям ADOQuery1 (через свойство Fields), считать их тип, и сгенерировать SQL запрос для создания таблицы, идентичной НД ADOQuery1 по количеству полей и их типу. |
| Автор: AlexV 16.12.2002, 21:43 |
| Файл создавать программно не нужно. Он уже создан (analitF.dbf), который содержит всего 3 поля SCHET, NAME, CODE. Выполняю qrAnalitF1 и пытаюсь переписать данные в analitF.dbf (tmp1:TTable) while not qrAnalitF1.Eof do begin tmp1.Insert; tmp1.FieldByName('SCHET').AsString:=qrAnalitF1.FieldByName('SCHET').AsString; tmp1.FieldByName('NAME').AsString:=qrAnalitF1.FieldByName('NAME').AsString; tmp1.FieldByName('CODE').AsString:=qrAnalitF1.FieldByName('CODE').AsString; tmp1.Post; qrAnalitF1.Next; end; На операторе tmp1.Post; спотыкается и выдает "[Microsoft][ODBC Visual FoxPro Driver]Syntax error or access violation" Почему ? |
| Автор: Medved 16.12.2002, 21:59 |
| Ну судя по синтаксису, все правильно, скорее всего, у тебя проблема с алиасом, но код рабочий, это железно.... Я вот смотрю, ты используешь BDE, но в настройках алиаса указал ODBC Visual FoxPro Driver. У BDE есть свой драйвер для таблиц в формате FoxPro. При создании алиаса, выбирай драйвер STANDARD, а в самих настройках алиаса в DEFAULT DRIVER выбери FOXPRO. Тогда все должно работать. |
| Автор: AlexV 16.12.2002, 22:23 |
| > При создании алиаса, выбирай драйвер STANDARD, а в самих настройках > алиаса в DEFAULT DRIVER выбери FOXPRO. Тогда все должно работать. Как это сделать ? Какой программой ? Я пытался BDE Administratorom - не получается, потому, что после выбора STANDARD, предлагает выбрать путь. А настройку DEFAULT DRIVER вообще нигде не нашел :-( Databese Desktopom тоже пробовал. Проблема таже. |
| Автор: AlexV 16.12.2002, 22:33 |
| Получилось создать Alias BDE Administratorom как ты посоветовал, но теперь не могу ConnectionString в создать в TADOQuery - в списках не виден источник, который я создал. Хотя я его сохранил и даже перезагрузился :-( |
| Автор: AntonSaburov 16.12.2002, 22:37 |
| Может я и не прав, но что-то я не припомню, чтобы ADO как-то было связано с BDE. Может вы куда-то не туда отправились ? Хотя скажу честно - с ADO работал крайне мало. Так что если не прав - замолкаю, замолкаю, замолкаю |
| Автор: AlexV 16.12.2002, 22:56 |
| Спасибо. Да, это я запутался с этими ADO, BDE. Попробую через DBE (без ADO). Но завтра, а сейчас домой. |
| Автор: Medved 16.12.2002, 23:23 |
| Да, ты запутался..... Ты считывал данные, из компонента ADOQuery1 (ADO) а для него алиас (источник данных) создается в ODBC, а записывал в НД tmp1 (TTable), из чего я и решил, что ты используешь BDE (хотя ты наверное использовал алиас ODBC, в этом и была твоя ошибка) Если ты работаешь с ADO, то качестве компонента tmp1 используй не TTable, а TADOTable |
| Автор: Medved 16.12.2002, 23:26 | ||
Да ты прав, они совершенно не связанны. но в BDE доступны источники данных ODBC |
| Автор: AlexV 17.12.2002, 17:01 |
| OK. Спасибо за все. Через BDE все работает. |