Страница 1 из 1
Копирование из полной таблицы в пустую
Добавлено: 04 авг 2010, 12:49
SergioTsch
Добрый день! Помогите пожалуйста разобраться.
У меня есть две таблицы (формат - .DBF) - одна полная, другая пустая (только структура). Как мне перенести из полной таблицы в пустую, конкретные (не все) записи, которые есть результатом выборки (запроса)?
СУБД: dBase for Wind
Среда: Delphi (BDE)
Re: Копирование из полной таблицы в пустую
Добавлено: 10 авг 2010, 14:26
airyashov
используя SQL вот так
INSERT INTO <название таблицы> SELECT <имя столбца>,... FROM <название таблицы> WHERE <условие>
Re: Копирование из полной таблицы в пустую
Добавлено: 11 авг 2010, 10:47
SergioTsch
Благодарю! А скажите, airyashov, пожалуйста, как мне сделать построчный вывод запроса на выборку?
Просто мне нужно вставить несколько записей в разные места таблицы. Пробовал использовать Инсерт (таблица без индексов и ключей), но ничего не получается - он добавляет новую запись в конец таблицы, даже когда я через MoveBy указываю точную (нужную) позицию курсора, куда нужно вставить.
В общем, я пришел к выводу, что нужно сделать запрос на выборку из таблицы-источника, а потом построчно добавлять в пустую таблицу записи из запроса, а там, по ходу добавления заодно и добавлять нужные другие мне записи.
Я приведу тут код (если я что неверно/непонятно объяснил):
Код: Выделить всё
# i:=0;
# with Query2 do
# begin
# First;
# ArrFields[0]:=Query2.FieldValues['sor_mesp']; // первая запись
# ArrFields[1]:=Query2.FieldValues['sor_os'];
# ArrFields[2]:=Query2.FieldValues['sor_ind'];
# ArrFields[3]:=Query2.FieldValues['sor_kk'];
# Next; i:=i+1; // номер записи
# if Query2.FieldByName('sor_ind').Value<>00580 then // если нет записи, где значение sor_ind не равно 00580, то
# begin // создаем ее (запись) с этим значением
# First;
# MoveBy(i); // идем к текущей записи
# // Insert; // вот тут вставка и не получается !
# Edit; // а тут - записывает, но не добавляет новую запись !!!
# FieldByName('sor_mesp').Value:=123; // Query2.FieldValues['sor_mesp'];
# FieldByName('sor_os').Value:=456; // Query2.FieldValues['sor_os'];
# FieldByName('sor_ind').Value:=580; // Query2.FieldValues['sor_ind'];
# FieldByName('sor_kk').Value:=101; // Query2.FieldValues['sor_kk'];
# Post;
# end;
# end;