Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2010, 10:25   #1
SergioTsch
 
Регистрация: 22.07.2010
Сообщений: 3
По умолчанию Копирование из полной таблицы в пустую

Добрый день! Помогите пожалуйста разобраться.
У меня есть две таблицы (формат - .DBF) - одна полная, другая пустая (только структура). Как мне перенести из полной таблицы в пустую, конкретные (не все) записи, которые есть результатом выборки (запроса)?
Мне советовали такую вставку через SQL (Квери):
Insert Into NewTable(Field1, Field2, ..., FieldN)
Select Field1, Field2, ..., FieldN From OldTable
Where ID<100;
А вы не можете мне помочь объяснить, пожалуйста, а как нужно подсоединить компоненты (у меня один Квери соединен с таблицей источником, а другой - с пустой таблицей-приемником). Первый Квери делает выборку на все поля и записи из полной таблицы. А во второй Квери я вставил команду Инсерт (приведенная выше), и таблицы и поля я заменил своими. Но все равно, как только я открываю этот второй Квери (через Open или Activ=true), BDE выдает ошибку: Error creating cursor handle ( видимо, Инсерт не позволяет Квери подсоединиться к таблице? ).
Может я неправильно задаю имена таблиц? (когда я просто задаю имя файла без расширения, то БДЕ тоже ругается, а когда задаю полный путь текстовой строкой - то не ругается).
Правильно ли я сделал, что вставил этот Инсерт в тот Квери, который ссылается на пустую таблицу-приемник?
В общем, в какой Квери нужно вставить Инсерт, чтобы он работал?
SergioTsch вне форума Ответить с цитированием
Старый 05.08.2010, 10:40   #2
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

нужно все запихать в один "Квери"
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 11.08.2010, 11:41   #3
SergioTsch
 
Регистрация: 22.07.2010
Сообщений: 3
По умолчанию

Благодарю! А скажите, Sparkman, пожалуйста, как мне сделать построчный вывод запроса на выборку?
Просто мне нужно вставить несколько записей в разные места таблицы. Пробовал использовать Инсерт (таблица без индексов и ключей), но ничего не получается - он добавляет новую запись в конец таблицы, даже когда я через 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;
SergioTsch вне форума Ответить с цитированием
Старый 11.08.2010, 13:01   #4
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

вариантов отсортировать данные - мульён
о каком порядке следования записей в таблице вы говорите?

и эттаа...
ведущие нули помогли?
Код:
Query2.FieldByName('sor_ind').Value<>00580
soleil@mmc вне форума Ответить с цитированием
Старый 11.08.2010, 13:14   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
SergioTsch
Оффтоп:
Э-э-э а эти # они как бы для того чтоб в посте код выделить?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование даных и формирование таблицы konistra Microsoft Office Excel 3 08.06.2010 09:25
Запрос возвращает пустую таблицу, если один из подзаросов возвращает пустую таблицу ArtInt SQL, базы данных 9 12.05.2010 15:40
Выборочное копирование данных из таблицы wmkasper Microsoft Office Excel 14 12.03.2010 19:22
копирование из ячейки таблицы в edit xaero93 БД в Delphi 2 23.10.2009 11:46
Копирование данных на первую пустую ячейку kzld Microsoft Office Excel 8 15.07.2009 14:06