Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.09.2009, 14:10
NNMakarov NNMakarov вне форума
Прохожий
 
Регистрация: 31.08.2009
Сообщения: 6
Репутация: 10
Вопрос Как перенести записи из одного 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  
Старый 17.09.2009, 14:23
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,029
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Не, так не прокатит.
Во первых, смотри в инете как такого рода запрос должен выглядеть. Это раз.

Два. Такую операцию на DBF проще выполнить "руками" из Дельфей.
Тебе потребуется 2 компонента TTable (если использовать BDE) или 2 компонента TDBFTable (кажетсЯ так), которые можно скачать бесплатно с www.torry.ru (обеспечивают работу с таблицами DBF без каких-лиюо драйверов.
В первый компонент загружаешь таблицу источник и фильтруешь ее (можно не фильтровать, можно просто проверять соответсвие записей условию).
Во вторую таблицу вставляешь данные. Все.
Ответить с цитированием
  #3  
Старый 18.09.2009, 09:59
NNMakarov NNMakarov вне форума
Прохожий
 
Регистрация: 31.08.2009
Сообщения: 6
Репутация: 10
По умолчанию

Уважаемый 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  
Старый 18.09.2009, 11:00
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Цитата:
Сообщение от NNMakarov
... однако и Ваш ответ "...смотри в инете..." трудно назвать достойным профессионала ... И соответственно способ "...выполнить "руками"..." выглядит несколько трудоемким ...
Это Вы зря ...
Ваш вопрос был не конкретен. Поэтому и ответ не мог быть конкретным и исчерпывающим.


Цитата:
Сообщение от NNMakarov
...
Я конечно разобрался и нашел решение. На мой взгляд оно проще и эффективней. Предлагаю Вам ознакомиться с ним и при необходимости использовать в своих проектах.
Вот и хорошо, что Вы нашли решение и поделились с другими.
Может быть кому-то пригодится.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:41.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter