Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2015, 14:19   #1
Jenny89
Пользователь
 
Регистрация: 14.07.2015
Сообщений: 30
По умолчанию Перенос данных из одной таблицы в другую

Всем доброго времени суток!

На форме имеются 2 DBGrid-а. С помощью кода:

Код:
ZQuery1.insert;
ZQuery1.FieldbyName('client').AsString:=ZQuery2.FieldbyName('client').AsString;

происходит перенос данных из одной таблицы в другую . Подскажите как сделать так чтобы не было повторного переноса одной и той же записи.
Jenny89 вне форума Ответить с цитированием
Старый 27.07.2015, 14:30   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Сделать некое ключевое поле с уникальным значением, и при переносе отлавливать исключение. Однако я вижу ZQuery1.
Это значит что ты используешь запросы. Верно?
Тогда может стоит написать запрос типа INSERT ... SELECT ?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.07.2015, 14:31   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
if not Query1.Locate( .... )  then begin
  query1.Insert;
  ...
end;
НО!!! это проверит ТОЛЬКО есть ли запись в "DBgird" (наборе данных связанном с DBGrid), но никоим образом не во ВСЕЙ базе данных.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 27.07.2015 в 14:34.
evg_m вне форума Ответить с цитированием
Старый 27.07.2015, 15:36   #4
Jenny89
Пользователь
 
Регистрация: 14.07.2015
Сообщений: 30
По умолчанию

спасибо! подскажите что в событии Locate вписать (я совсем новичок в этом)
Jenny89 вне форума Ответить с цитированием
Старый 27.07.2015, 16:06   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
происходит перенос данных из одной таблицы в другую .
Собственно без конкретики сказать трудно, но вообще это не по фень-шую ибо БД должна быть нормализована и все такое. Я бы тут еще на саму модель задумался... Нормальный путь это переносить не клиента, а его id из другой таблицы, но опять же сказано мало и туманно...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 27.07.2015, 16:11   #6
Jenny89
Пользователь
 
Регистрация: 14.07.2015
Сообщений: 30
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Собственно без конкретики сказать трудно, но вообще это не по фень-шую ибо БД должна быть нормализована и все такое. Я бы тут еще на саму модель задумался... Нормальный путь это переносить не клиента, а его id из другой таблицы, но опять же сказано мало и туманно...
ах да не упомянула, переносится не только клиент но и его id
Jenny89 вне форума Ответить с цитированием
Старый 27.07.2015, 16:20   #7
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Jenny89 Подскажите как сделать так чтобы не было повторного переноса одной и той же записи.
Суда смотрели ? http://www.programmersforum.ru/showthread.php?t=279303 на #5
xxbesoxx вне форума Ответить с цитированием
Старый 27.07.2015, 16:40   #8
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
ах да не упомянула, переносится не только клиент но и его id
Тем более в этом нет смысла. Достаточно переносить id
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 27.07.2015, 16:50   #9
Jenny89
Пользователь
 
Регистрация: 14.07.2015
Сообщений: 30
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
Суда смотрели ? http://www.programmersforum.ru/showthread.php?t=279303 на #5
попробывала, ошибка выскакивает: SQL Error: Column count doesn't match value count at row 1.
Что здесь нужно исправить

Код:
with ZQuery1 do
 begin
   Close;
   SQL.Text := 'INSERT INTO client  (client_id ) '+
               ' SELECT b.bclient_id, b.bclient'+
               ' FROM b_client as b LEFT JOIN client as c ON b.bclient_id = c.client_id  '+
               ' WHERE (((client_id) is null));';
               ExecSQL;
 end;
 with ZQuery2 do
 begin
   SQL.Text := 'SELECT * FROM client ';
   Open
 end;

Последний раз редактировалось Jenny89; 27.07.2015 в 17:03.
Jenny89 вне форума Ответить с цитированием
Старый 27.07.2015, 16:56   #10
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Мне бы хотелось чтобы в таблицу переносилось не только id но и сам клиент (в этом и был смысл)....
Или я вас не так поняла?
А зачем? Это нужно только показывать на экране, а хранить это нет смысла. Вот почитайте: https://ru.wikipedia.org/wiki/Нормальная_форма
Иными словами любое дублирование в хранении информации есть плохо.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос данных из одной таблицы в другую FtorKlork БД в Delphi 6 10.06.2015 17:02
Перенос данных из одной таблицы в другую atenon Фриланс 5 23.07.2014 06:18
Перенос данных из одной таблицы в другую atenon Microsoft Office Access 1 21.07.2014 21:36
Перенос данных из одной таблицы в другую nastena_r_v БД в Delphi 4 04.05.2014 21:59
Перенос данных из одной таблицы в другую D.O.G БД в Delphi 3 07.10.2010 12:23