Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.10;
Скачать: CL | DM;

Вниз

Копирование записи в 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
2-1179425992
Alexdeil
2007-05-17 22:19
2007.06.10
График


9-1153207029
Lam3r
2006-07-18 11:17
2007.06.10
DirectX обучение


1-1176835029
DimKa
2007-04-17 22:37
2007.06.10
Динамическое создание объекта TTcpClient


2-1179526975
Heart_Beat
2007-05-19 02:22
2007.06.10
HELP!


2-1179743066
dmdel
2007-05-21 14:24
2007.06.10
Richedit