|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.12.2014, 20:27 | #1 |
Пользователь
Регистрация: 05.12.2014
Сообщений: 11
|
Скопировать выделенные строки в DBGrid из одной таблицы в другую
Форма:
TDataSource2, TADOQuery2, DBGrid2 - отображение таблицы HourData TDataSource3, TADOQuery3, DBGrid3 - отображение таблицы HourData_3 Структура таблиц аналогичная: поля Data, TimeMs, TStreet, Tinside, DataEdit Для DBGrid2 установлено MultiSelect=True 1) Необходимо скопировать только выделенные в DBGrid2 строки из таблицы2 (HourData) в таблицу3 (HourData_3). Просмотрел статьи на форуме,везде идут отсылки на одно и тоже, и нет информации в случае MultiSelect. Попытался в таком формате, но получаю ошибку. Код:
Parameters.ParamByName('pData').Val ue:= Ошибка1: Argument out of range. Как понимаю, ругается на правую часть. При проверке, если заменить не на значения из БД: Parameters.ParamByName('pData').Val ue:=DateOf(Now) ;//DateOf(Now); Ошибка2: ADOQuery3: CommandText does not return a result set. Последний раз редактировалось Stilet; 17.12.2014 в 21:16. |
17.12.2014, 20:32 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Какой Active:=True для UPDATE после ExecSQL? Не будет там ни какого набора данных после. SELECT нужен, и очень желательно в другом датасете
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
17.12.2014, 20:56 | #3 |
Пользователь
Регистрация: 05.12.2014
Сообщений: 11
|
Прошу прощения, но не понятно
про Active:=True - это я уже заэкспериментировался. Про SELECT не понял, ведь сначала надо вставить выделенное, а ругается уже на этапе присваивания полю в первой выделенной строке значения, как параметру
|
17.12.2014, 21:44 | #4 |
Форумчанин
Регистрация: 27.10.2014
Сообщений: 594
|
А попробуйте вот так:
Код:
Зачем вы сами себе ухудшаете разборчивость программы? |
18.12.2014, 13:07 | #5 |
Пользователь
Регистрация: 05.12.2014
Сообщений: 11
|
To kropotkina-alice: Не сработало
исправил на предложенный Вами вариант. Изменилось только сообщение (прилагаю). При отладке в этих значения Innaccessible value....
|
19.12.2014, 19:42 | #6 |
Пользователь
Регистрация: 05.12.2014
Сообщений: 11
|
Заработало. Спасибо.
Спасибо, Avatar, за определение курса. Спасибо kropotkina-alice за оптимизацию.
Действительно, проблема была в ADOQuery.Active:=true, т.к. выше в цикле Запрос менялся на INSERT, соответственно при Active=True и выдавались ошибки (прилагаю, чтобы был ориентир для других), меняю на SELECT и все работает. Сбил с толку пример c форума, на основании которого и был сделан первый вариант. Итоговый вариант: for i:=0 to DBGrid2.SelectedRows.Count-1 do begin DBGrid2.DataSource.DataSet.GotoBook mark(Pointer(DbGrid2.SelectedRows[i])); with ADOQuery3 do begin Active:=False; SQL.Clear; Zapros:='INSERT INTO HourData_2 (Data,TimeMs,TemperatureInside,Temp eratureStreet,DataFull) VALUES (:pData,:pTimeMs,:pTempInside,:pTem pStreet,:pDataTime);'; SQL.Add(Zapros); Parameters.ParamByName('pData').Val ue:=DateOf(DBGrid2.DataSource.DataS et.Fields[0].Value) ; Parameters.ParamByName('pTimeMs').V alue:=DBGrid2.Fields[1].Value ; Parameters.ParamByName('pTempInside ').Value:=DBGrid2.Fields[2].Value ; Parameters.ParamByName('pTempStreet ').Value:=DBGrid2.Fields[3].Value ; Parameters.ParamByName('pDataTime') .Value:=Now; ExecSQL; end; end; //DBGrid2.SelectedRows.Clear;//используем, если надо снять выделение строк. Мне не надо. with ADOQuery3 do begin SQL.Clear; Zapros:='SELECT * FROM HourData_2;'; SQL.Add(Zapros); Active:=True; end; |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Передача строки из одной таблицы в другую, при помощи DBGrid!? | Bane | БД в Delphi | 4 | 17.03.2014 15:23 |
Как скопировать данные из одной таблицы в другую? | Ольга А | Microsoft Office Access | 0 | 29.10.2012 19:46 |
MS SQL SERVER 2005 копирование таблицы из ОДНОЙ БД В другую или перенести все строки из одной таблицы в другую | reihtmonbern | БД в Delphi | 4 | 17.07.2012 23:25 |
Скопировать значения blob поля из одной таблицы в другую BDE Paradox | astecenko | БД в Delphi | 1 | 02.12.2011 11:26 |
Как скопировать данные таблицы из одной базы access в другую? | AK BULLETS | БД в Delphi | 2 | 31.03.2010 13:09 |