Форум: "Базы";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];
ВнизКопирование записи в IBTable Найти похожие ветки
← →
merko$ © (2007-03-22 06:17) [0]Уважаемые Мастера, подскажите пожалуйста как скопировать запись из IBTable1 в ту же IBTable1 с новым ID?
ID у меня формируется:
procedure TDM.tORGNewRecord(DataSet: TDataSet);
begin
IBStoredProc11.ExecProc;
DataSet["ID_ORG"]:=IBStoredProc11.ParamByName("UORG").AsInteger;
end;
end.
Заранее благодарю.
← →
merko$ © (2007-03-22 06:34) [1]Либо как-то переместить запись из DBGrid1 в DBGrid2
← →
Mike Kouzmine © (2007-03-22 07:05) [2]Копируют записи не в компонентах, а в таблицах базы данных. А комп. только отображают и дают механизмы работы с данными.
← →
merko$ © (2007-03-22 07:10) [3]Я это прекрасно понимаю, а фраза - переместить запись из DBGrid1 в DBGrid2 использована мной для представления ситуации
← →
Sergey13 © (2007-03-22 08:30) [4]> [0] merko$ © (22.03.07 06:17)
> Уважаемые Мастера, подскажите пожалуйста как скопировать
> запись из IBTable1 в ту же IBTable1 с новым ID?
А как ты вставляешь новые записи? Так же и копировать, только значения, которые вводишь сначала надо "посмотреть" в копируемой записи.
ЗЫ: Но методы твоей работы с СКЛ сервером очень далеки от "идеала".
← →
merko$ © (2007-03-22 09:12) [5]> Sergey13
Если можно приведите пример кода копирования записи
← →
Jan (2007-03-22 09:36) [6]
> Если можно приведите пример кода копирования записи
>
Как добавить запись знаем? А копирование, подразумевает, что поля заполняются из текущей записи таблицы, которая источник.
← →
ustas (2007-03-22 09:49) [7]Я делал это следующим образом. Создавал дополнительно запрос по таблице куда выбирал все поля таблицы по 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;
← →
ANB © (2007-03-22 11:07) [8]
> ustas (22.03.07 09:49) [7]
Извращенец :)
insert into Table1 (ID, F1, F2 . . . /*все поля*/)
select GenerID /*тута сгенерить новый ID*/, F1, F2 . . .
Все это запихать в кверю и выполнить Exec (точно метод не помню)
← →
merko © (2007-03-23 08:53) [9]спасибо всем проблему решил
← →
ustas (2007-03-23 15:15) [10]> ANB © (22.03.07 11:07)
Извращенец :)
:) Категорически не согласен. Просто что первое под руку попалось то и запостил. Естественно что квери создавать и туда параметры передавать по именам полей или вообще sql по ходу генерить.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.039 c