![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите с копированием строк [D7, Paradox]
Karnegi © (2003-09-03 13:39:00)
У меня на форме имеются Table1 и Table2 (соответсвенно и две таблицы Paradox), подскажите как мне сделать так чтобы при нажатии кнопки выбранная строка копировалась из table1 в Table2(поля у этих таблиц одинаковые).
Karnegi (2003-09-03 15:38:00) [61]
Ето то понятно мне бы разобраться как вот этот код присвоить кнопке?? Подсажи если знаешь
procedure TTableRecordCopy(Source, Destination: TTable);
var
i, lCount: Integer;
begin
lCount := Source.FieldCount;
for i := 0 to lCount - 1 do
if (not Source.Fields[i].IsNull) and (Source.Fields[i].CanModify) then
Destination.FieldByName(Source.Fields[i].FieldName).Assign(Source.Fiel ds[i]);
end;
stone (2003-09-03 15:36:00) [62]
Autoincrement означает что значение поле устанавливается autoматически, т.е. ему нельзя присвоить произвольное значение
Karnegi (2003-09-03 15:34:00) [63]
Anatoly Podgoretsky всмысле Auto? Можно поподробннее а то ето моя первая БД
Anatoly Podgoretsky (2003-09-03 15:30:00) [64]
Karnegi (03.09.03 14:14) [8]
Тебя слово Auto не удивляет?
Karnegi (2003-09-03 15:25:00) [65]
Нашел код по копированию строк из одной таблицы в другую
procedure TTableRecordCopy(Source, Destination: TTable);
var
i, lCount: Integer;
begin
lCount := Source.FieldCount;
for i := 0 to lCount - 1 do
if (not Source.Fields[i].IsNull) and (Source.Fields[i].CanModify) then
Destination.FieldByName(Source.Fields[i].FieldName).Assign(Source.Fiel ds[i]);
end;
Только как сделать чтобы он копировал при нажатии кнопки?
Karnegi (2003-09-03 14:24:00) [66]
Если копирует только индексные поля, это значит что мне надо все поля индексировать?
Smashich (2003-09-03 14:19:00) [67]
Karnegi (03.09.03 14:14) [8]
автоикримент удалячть не надо, вставлять в него значения тоже. если конечно тебе не принципиально значение ключа(боюсь спросить а слово ключ знакомо?). если не принципиально то - просто не редактируй. елси принципиально - смени автоинримент на integer
Karnegi (2003-09-03 14:18:00) [68]
Msguns и почему то он копирует только индексирование поля, а остальные поля получаются пустыми
Karnegi (2003-09-03 14:14:00) [69]
MsGuns спасибо, копирует но только выдает ошибку "Field "Nomer" cannot be modified", описание поле "Nomer" у меня стоит "+"(Autoincrement), может из таблицы вообще удалить это поле?
Smashich (2003-09-03 14:10:00) [70]
если тебе нужно заменить значения то соотвественно редактируешь запись в которой меняешь значения. детский сад какой то..
Smashich (2003-09-03 14:08:00) [71]
2 Karnegi (03.09.03 14:00) [4]
ты даешь. а что такое копировать? взять(SELECT) из одного места и вставить(INSERT) в другое. или тебе нечто другое нужно?
MsGuns (2003-09-03 14:07:00) [72]
>MsGuns © (03.09.03 13:59) [3]
только вместо Insert надо поставить Edit. Поля текущей записи первой таблы (выделенная в 1 гриде) скопируются в поля текущей записи второй таблы (выделенной во 2 гриде)
Karnegi (2003-09-03 14:00:00) [73]
Так insert это же втавить запись в таблицу, а мне нужно уже заполненую данными строку (Ф.И.О дата рожд. телефон и т.д.) копировать в другую таблицу с точно такими же полями.
MsGuns (2003-09-03 13:59:00) [74]
>Karnegi (03.09.03 13:53) [1]
>Извеняюсь за неточность, наверно копировать не из Table1 в Table2 а из Dbgrid1 в Dbgrid2
Извиняться не за что - в первый раз получилось точнее.
with Table2 do
begin
insert
for i :=0 to Fields.count-1 do
Fields[i].Value := Table1.Fields[i].Value;
try
post;
except
Showmessage("Не лизе, батько !");
cancel;
exit;
end;
end
table2.Refresh;
Но это при одинаковых структурах
stone (2003-09-03 13:56:00) [75]
> Karnegi (03.09.03 13:53) [1]
Как раз в сабже было правильно. Только в чем проблема? Метод Insert неизвестен?
Karnegi (2003-09-03 13:53:00) [76]
Извеняюсь за неточность, наверно копировать не из Table1 в Table2 а из Dbgrid1 в Dbgrid2