|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как перенести записи из одного DBF файла в другой?
Всем доброго дня.
Необходимо перенести записи из группы DBF файлов в другой по определенным условиям. Планирую использовать такой SQL запрос (названия таблиц и полей условные): insert into result ( F1, F2 ) select sourse.F1, sourse.F2 from sourse where F3 like "???ABC*"; Ответ Используем компонент TQuery из вкладки BDE. И следующий программный код (названия таблиц и полей условные) dtm.qry.SQL.Text:='insert into result (F1, F2) select F1, F2 from '+FName+' where (F3 like ''___'+'ABC'+'%'')'; dtm.qry.ExecSQL; Имена dtm: TDataModule; qry: TQuery; (в свойстве DatabaseName указываем путь к каталогу с DBF файлами источников) FName: String; (строковая переменная для хранения имени файла источника). Последний раз редактировалось NNMakarov, 18.09.2009 в 13:19. |
#2
|
|||
|
|||
Не, так не прокатит.
Во первых, смотри в инете как такого рода запрос должен выглядеть. Это раз. Два. Такую операцию на DBF проще выполнить "руками" из Дельфей. Тебе потребуется 2 компонента TTable (если использовать BDE) или 2 компонента TDBFTable (кажетсЯ так), которые можно скачать бесплатно с www.torry.ru (обеспечивают работу с таблицами DBF без каких-лиюо драйверов. В первый компонент загружаешь таблицу источник и фильтруешь ее (можно не фильтровать, можно просто проверять соответсвие записей условию). Во вторую таблицу вставляешь данные. Все. |
#3
|
|||
|
|||
Уважаемый lmikle, спасибо Вам за отзывчивость.
Я понимаю, что в части (Like "???АВС*"), текст запроса дан не по канонам Delphi, однако и Ваш ответ "...смотри в инете..." трудно назвать достойным профессионала. Теперь замечание по второй части Вашего ответа. Выражение "...из группы DBF файлов..." подразумевает, что файлов может быть два и более. В моем случае это почти полторы тысячи файлов (результат года работы одного из отделов нашей организации). И соответственно способ "...выполнить "руками"..." выглядит несколько трудоемким. Я конечно разобрался и нашел решение. На мой взгляд оно проще и эффективней. Предлагаю Вам ознакомиться с ним и при необходимости использовать в своих проектах. Мне потребовался один компонент TQuery из вкладки BDE. И пара строк программного кода (названия таблиц и полей условные) dtm.qry.SQL.Text:='insert into result (F1, F2) select F1, F2 from '+FName+' where (F3 like ''___'+'ABC'+'%'')'; dtm.qry.ExecSQL; Имена dtm: TDataModule; qry: TQuery; FName: String; (строковая переменная для хранения имени файла источника). Еще раз спасибо за то, что хотели помочь. |
#4
|
|||
|
|||
Цитата:
Ваш вопрос был не конкретен. Поэтому и ответ не мог быть конкретным и исчерпывающим. Цитата:
Может быть кому-то пригодится. |