Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как продублировать запись в таблице? 
:(
    Опции темы
Mick Winder
  Дата 27.10.2004, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 15.10.2004
Где: Москва Рязанка

Репутация: нет
Всего: -1



Использую компонент DBGridEh.
Задача. Продублировать всю запись (в запись входят все поля в строчку).
Как это можно сделать? :qstn
PM MAIL   Вверх
<Spawn>
Дата 27.10.2004, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 2
Всего: 64



А что с этим дублем нужно сделать?

Взять можно так, если ты используеш, например, TQuery:

Код
procedure TForm1.Button1Click(Sender: TObject);
var
 i: integer;
begin
 for i := 0 to Query1.FieldCount - 1 do
   <Куда то сохраняешь дубль> := Query1.Fields[i].AsVariant;
end;


PS. Понял. Тебе нужно вставить новую запись, идентичную какой то существующей?
Первый вариант, это продолжение вышенаписаного кода - ты должен сохранить данные какой то записи в массиве, а потом вставить новую, примерно так:

Код
Insert;
for I := 0 to Query1.FieldCount - 1 do
 Query.Fields[i].AsVariant := SavedFieldsArray[i];
Post;


Другой вариант - сделать все через SQL(Так можно продубировать n-ое количество записей разом). Примерно так:

Код
INSERT INTO Table (Val1, Val2, Val3)
SELECT Val1, Val2, Val3 FROM Table Where Condition1 and Condition2 ...


Это сообщение отредактировал(а) <Spawn> - 27.10.2004, 12:15


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Mick Winder
Дата 27.10.2004, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 15.10.2004
Где: Москва Рязанка

Репутация: нет
Всего: -1



Да нет же...
Выделить одну запись (как в Excel), скопировать и продублировать ее один раз, чтобы изменить потом какое-нибудь одно поле...
PM MAIL   Вверх
<Spawn>
Дата 27.10.2004, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 2
Всего: 64



Ну дак дублируй сколько влезет, код то я тебе дал. Сохраняешь в любом массиве и меняешь как нужно. Только я не пойму зачем это нужно, когда все можно изменить в набре данных, а в случае ошибочных изменений отменить сделаные изменения.


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Mick Winder
Дата 27.10.2004, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 15.10.2004
Где: Москва Рязанка

Репутация: нет
Всего: -1



Мне это не нужно... :)
Это нужно моему боссу.. :angry:
Ты меня не совсем понял... Понимаешь... :rolleyes
Вот в таблице у меня есть строка, состоящая из нескольких полей, например, из ПРОЕКТА, МЕНЕДЖЕРА ПРОЕКТА, МЕНЕДЖЕРА ОБРАБОТКИ, ДАТА ПОЛУЧЕНИЯ ЗАДАНИЯ, ДАТА ОКОНЧАНИЯ ОБРАБОТКИ и т.д.
Вот одну такую запись (всю строку со всеми значениями полей сразу, а не по одному значению) моему боссу, прости его Господи :inlove , нужно скопировать и вставить в новую с тем, чтобы изменить одно единственное значение, например, МЕНЕДЖЕРА ОБРАБОТКИ, а все поля остаются без изменений... Все довольны и счастливы, особенно я... :hehe
Вот и бьюсь я головой об стол, до стены далече будет... :stena

Добавлено @ 15:24
Впрочем, поробую и твой пример... Может извлеку из него толику пользы... Спасибо! :)
PM MAIL   Вверх
<Spawn>
Дата 27.10.2004, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 2
Всего: 64



Ну дак а в чем проблема? Один пример я тебе дал уже, вот через SQL:

Код
Query1.SQL.Text := 'INSERT INTO Table1 (Value1, Value2, Value3, Manager, ..., ValueN) ' +
'SELECT Value1, Value2, Value3, :Manager, ...,ValueN FROM Table1 WHERE Condition ...'; //Condition однозначно идентифицирует нужную запись
Query1.ParamByName('Manager').AsString := 'Вася Пупкин';
Query1.ExecSQL;



--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0478 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.