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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2008, 01:24   #1
stepchild
Пользователь
 
Регистрация: 21.05.2008
Сообщений: 13
По умолчанию сохранение результата запроса в таблицу БД

Как бы мне результат запроса SQL загнать в новую таблицу Базы данных?
stepchild вне форума Ответить с цитированием
Старый 08.06.2008, 01:40   #2
Snoopy
Форумчанин Подтвердите свой е-майл
 
Аватар для Snoopy
 
Регистрация: 14.01.2008
Сообщений: 163
По умолчанию

Ну примерно так
Код:
Table['pole']:=DataSource.DataSet.FieldByName('name').AsString;
DataSource.DataSet.next;
Чтобы определить количество записей используйте полученых запросом импользуйте DataSource.DataSet.RecordCount и в цикл записывайте

Последний раз редактировалось Snoopy; 08.06.2008 в 01:58.
Snoopy вне форума Ответить с цитированием
Старый 08.06.2008, 15:19   #3
stepchild
Пользователь
 
Регистрация: 21.05.2008
Сообщений: 13
По умолчанию

Так не получится. У меня запрос такой:
with Query1 do
Begin Active:=false;
SQL.Clear;
SQL.Add('select codcount, codt, curcod from BD_PO where (BD_PO."dat" between :min and :max) and (BD_PO.stat="nerez" or BD_PO.stat="rez")');
Params.ParseSQL(Query1.SQL.text, true);
Params.ParamByName('min').AsDate:=D ateTimePicker1.Date;
Params.ParamByName('max').AsDate:=D ateTimePicker2.Date;
Active:=True;
End;
И есть отдельная таблица REP, содержащяя те же поля (codcount, codt, curcod ). В нее хочу сохранить выбрранные строи и поля.
Я пыталась с помошью Insert сделать - не получилось ... может неправильно пыталась.
SQL.Add('Insert into REP select codcount, codt, curcod from BD_PO where (BD_PO."dat" between :min and :max) and (BD_PO.stat="nerez" or BD_PO.stat="rez")');
Все время выдает ошибки.
stepchild вне форума Ответить с цитированием
Старый 08.06.2008, 16:18   #4
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

правильно ошибки выдаёт!!!
конструкция запроса insert into ... values ...
а у тебя insert into ... from ...
причём тут from вообще не пойму??
dron-s вне форума Ответить с цитированием
Старый 08.06.2008, 18:49   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

stepchild, может быть Вы пытаетесь сделать Query1.Active :=true (или Query1.Open) ??!
Это неверно, попробуйте Query1.ExecSQL;

dron-s, Вы неправы. SQL insert into допускает и такое использование! По крайней мере Oracle и MS SQL
возможно, какие-то "детские" СУБД это не и поддерживают...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.06.2008, 19:55   #6
stepchild
Пользователь
 
Регистрация: 21.05.2008
Сообщений: 13
По умолчанию

ExecSQL тоже пробовала Всё равно выдает 2 типа ошибок: несовместимость типов или неправильное использование ключевых слов (то INSERT, то SELECT).
А другого способа сохранения нет вообще?
stepchild вне форума Ответить с цитированием
Старый 08.06.2008, 23:38   #7
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

Цитата:
SQL.Add('Insert into REP select codcount, codt, curcod from BD_PO where (BD_PO."dat" between :min and :max) and (BD_PO.stat="nerez" or BD_PO.stat="rez")');
никогда не встречал такой формы, сколько работаю с БД
Insert Into (перечисление полей)
select (Поля выбора)
from (Таблицы откуда выбирать)
вот такая конструкция будет работать 100% на любой СУБД
приведённая в цитате никогда работать ни накакой СУБД не будет...
dron-s вне форума Ответить с цитированием
Старый 09.06.2008, 09:23   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от dron-s
Insert Into (перечисление полей)
select (Поля выбора)
from (Таблицы откуда выбирать)
вот такая конструкция будет работать 100% на любой СУБД
Да как же она будет 100% работать, если в Вашем варианте даже не указана таблица, куда делать INSERT ?!!!
тогда хотя бы так
INSERT INTO TABLE_NAME (список полей) SELECT (список полей) FROM TABLE2 WHERE ....

Цитата:
Сообщение от dron-s
никогда не встречал такой формы, сколько работаю с БД
поиск в гугле
прямо первая же ссылочка... ;-)

[hr]

stepchild, а точно порядок полей в
REP (codcount, codt, curcod ) ???? Если Вы не указываете поля, то их порядок должен ТОЧНО совпадать с имеющимися в базе полями...
А тип и размер у них ТОЧНО такой же, как в BD_PO ???

И какая СУБД у Вас??

Последний раз редактировалось Serge_Bliznykov; 09.06.2008 в 09:29.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.06.2008, 11:46   #9
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

Цитата:
прямо первая же ссылочка... ;-)
а разве в посте номер 7 не такая же схема написано..
про назвние таблицы так было понятно по конструкии Insert Into... (ну и признаю, не допечатал...)
dron-s вне форума Ответить с цитированием
Старый 12.06.2008, 22:29   #10
stepchild
Пользователь
 
Регистрация: 21.05.2008
Сообщений: 13
По умолчанию

проверяла уже по сотне раз ... и типы полей и порядок совпадает. Я уж не знаю, в чем проблема. В принципе я уже обошлась без сохранения в таблицу в своей программе, но все равно хотелось бы узнать на будущее.
А про конструкцию "Insert Into <TableName> Select ..." прочитала в учебниках. Что ж вы, dron-s, из меня совсем дурочку делаете?
stepchild вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод результата по столбцам Mary_star SQL, базы данных 4 03.03.2008 13:15
сохранение результата выборки из DBF файла в DBF файл с такой же структурой таблицы GazimagomedovM БД в Delphi 5 06.11.2007 17:58
Дбавление в таблицу из запроса ADOQuery. VladimirAleks БД в Delphi 2 12.09.2007 13:49
Отмена запроса на сохранение SlipKorn Microsoft Office Excel 1 14.06.2007 00:17