![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Копирование записи в IBTable [D7, IB6.x]
merko$ © (2007-03-22 06:17:00)Уважаемые Мастера, подскажите пожалуйста как скопировать запись из IBTable1 в ту же IBTable1 с новым ID?
ID у меня формируется:
procedure TDM.tORGNewRecord(DataSet: TDataSet);
begin
IBStoredProc11.ExecProc;
DataSet['ID_ORG']:=IBStoredProc11.ParamByName('UORG').AsInteger;
end;
end.
Заранее благодарю.
ustas (2007-03-23 15:15:00) [1]> ANB © (22.03.07 11:07)
Извращенец :)
:) Категорически не согласен. Просто что первое под руку попалось то и запостил. Естественно что квери создавать и туда параметры передавать по именам полей или вообще sql по ходу генерить.
merko (2007-03-23 08:53:00) [2]спасибо всем проблему решил
ANB (2007-03-22 11:07:00) [3]
> ustas (22.03.07 09:49) [7]
Извращенец :)
insert into Table1 (ID, F1, F2 . . . /*все поля*/)
select GenerID /*тута сгенерить новый ID*/, F1, F2 . . .
Все это запихать в кверю и выполнить Exec (точно метод не помню)
ustas (2007-03-22 09:49:00) [4]Я делал это следующим образом. Создавал дополнительно запрос по таблице куда выбирал все поля таблицы по ID на котором установлен курсор в таблице, а затем таблицу переводил в состояни Append и пробегался по всем полям запроса и переносил их значения в таблицу (если есть счетчик, ID который определяется тригером из генератора, то нужно это поле пропустить соответсвенно). Пример (краткая вырезка из проекта):
...
var i,e,kodrec,kodnewrec: Integer;
begin
kodrec := QMain.FieldByName('id').AsInteger;
if kodrec = 0 then Exit;
QForCopy.Close;
QForCopy.ParamByName('id_param').Value := QMain.FieldByName('id').AsInteger;
QForCopy.Open;
if not Table.Active then Table.Active := True;
Table.Append;
for i := 0 to QForCopy.FieldCount - 1 do begin
if i > 0 then begin Table.Fields[i].Value := QForCopy.Fields[i].Value;
end;
Table.Post;
Table.Active := True;
Table.Last;
kodnewrec := Table.FieldByName('id').AsInteger;
...
end;
Jan (2007-03-22 09:36:00) [5]
> Если можно приведите пример кода копирования записи
>
Как добавить запись знаем? А копирование, подразумевает, что поля заполняются из текущей записи таблицы, которая источник.
merko$ (2007-03-22 09:12:00) [6]> Sergey13
Если можно приведите пример кода копирования записи
Sergey13 (2007-03-22 08:30:00) [7]> [0] merko$ © (22.03.07 06:17)
> Уважаемые Мастера, подскажите пожалуйста как скопировать
> запись из IBTable1 в ту же IBTable1 с новым ID?
А как ты вставляешь новые записи? Так же и копировать, только значения, которые вводишь сначала надо "посмотреть" в копируемой записи.
ЗЫ: Но методы твоей работы с СКЛ сервером очень далеки от "идеала".
merko$ (2007-03-22 07:10:00) [8]Я это прекрасно понимаю, а фраза - переместить запись из DBGrid1 в DBGrid2 использована мной для представления ситуации
Mike Kouzmine (2007-03-22 07:05:00) [9]Копируют записи не в компонентах, а в таблицах базы данных. А комп. только отображают и дают механизмы работы с данными.
merko$ (2007-03-22 06:34:00) [10]Либо как-то переместить запись из DBGrid1 в DBGrid2