Копирование из полной таблицы в пустую

Общие вопросы: версии и диалекты, синтаксис языка, cтруктуры и типы данных (массивы, строки, списки...), обработка данных и т.д.
Ответить
SergioTsch
Сообщения: 2
Зарегистрирован: 22 июл 2010, 14:38

04 авг 2010, 12:49

Добрый день! Помогите пожалуйста разобраться.
У меня есть две таблицы (формат - .DBF) - одна полная, другая пустая (только структура). Как мне перенести из полной таблицы в пустую, конкретные (не все) записи, которые есть результатом выборки (запроса)?
СУБД: dBase for Wind
Среда: Delphi (BDE)
airyashov
Сообщения: 416
Зарегистрирован: 02 ноя 2007, 10:31

10 авг 2010, 14:26

используя SQL вот так

INSERT INTO <название таблицы> SELECT <имя столбца>,... FROM <название таблицы> WHERE <условие>
icq:3(один)7748666
mail:airyashov( а)inbox.ru
SergioTsch
Сообщения: 2
Зарегистрирован: 22 июл 2010, 14:38

11 авг 2010, 10:47

Благодарю! А скажите, 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;
Ответить