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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2015, 16:50   #1
Vongud
Пользователь
 
Аватар для Vongud
 
Регистрация: 26.08.2014
Сообщений: 24
Лампочка Перемещение ОДНОЙ записи из одной таблицы в другую

Есть такой код:
Код:
      DM1.ADOQueryTchm.SQL.Add('INSERT INTO Tchmp (TN, Name1, Name2, Name3, KolN, StazS, Klass, Uchastok, Talon, JoinTN, Phone, Address)');
      DM1.ADOQueryTchm.SQL.Add('SELECT TN, Name1, Name2, Name3, KolN, StazS, Klass, Uchastok, Talon, JoinTN, Phone, Address');
      DM1.ADOQueryTchm.SQL.Add('FROM Tchm');
Delphi+Access.
Проблема в том, что он переносит ВСЕ записи из одной таблицы в другую! А как сделать, чтобы переносилась только та, на которой установлен курсор (которая выделена)? И только одна.

Последний раз редактировалось Stilet; 06.04.2015 в 17:13.
Vongud вне форума Ответить с цитированием
Старый 06.04.2015, 16:51   #2
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

WHERE + F1
lomastr_ вне форума Ответить с цитированием
Старый 06.04.2015, 16:57   #3
Vongud
Пользователь
 
Аватар для Vongud
 
Регистрация: 26.08.2014
Сообщений: 24
По умолчанию

Цитата:
Сообщение от lomastr_ Посмотреть сообщение
WHERE + F1
Я, конечно, догадываюсь, что там должен быть WHERE. Но почему именно F1? И да, так не работает.
P.S. Я записал после "FROM Tchm"

Кстати, и перед фромом тоже не пашет

Например: WHERE &, где & - это название курсора

Последний раз редактировалось Stilet; 06.04.2015 в 17:14.
Vongud вне форума Ответить с цитированием
Старый 06.04.2015, 17:18   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
  DM1.ADOQueryTchm.SQL.Add('INSERT INTO Tchmp (TN, Name1, Name2, Name3, KolN, StazS, Klass, Uchastok, Talon, JoinTN, Phone, Address)');
      DM1.ADOQueryTchm.SQL.Add('SELECT TN, Name1, Name2, Name3, KolN, StazS, Klass, Uchastok, Talon, JoinTN, Phone, Address');
      DM1.ADOQueryTchm.SQL.Add('FROM Tchm');
      DM1.ADOQueryTchm.SQL.Add('Where ключевое поле=:p');
 DM1.ADOQueryTchm.ParamByName('p').Value=<Тут значение из грида, из поля на записи где стоит курсор :)>
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.04.2015, 17:21   #5
Vongud
Пользователь
 
Аватар для Vongud
 
Регистрация: 26.08.2014
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
  DM1.ADOQueryTchm.SQL.Add('INSERT INTO Tchmp (TN, Name1, Name2, Name3, KolN, StazS, Klass, Uchastok, Talon, JoinTN, Phone, Address)');
      DM1.ADOQueryTchm.SQL.Add('SELECT TN, Name1, Name2, Name3, KolN, StazS, Klass, Uchastok, Talon, JoinTN, Phone, Address');
      DM1.ADOQueryTchm.SQL.Add('FROM Tchm');
      DM1.ADOQueryTchm.SQL.Add('Where ключевое поле=:p');
 DM1.ADOQueryTchm.ParamByName('p').Value=<Тут значение из грида, из поля на записи где стоит курсор :)>
Ну это программно получается. А когда пользователь выделит другую запись в гриде? Не будешь же переписывать.
Вернее потом из приложения ничего не изменить будет.

Как вообще можно курсор обозвать?

Последний раз редактировалось Stilet; 06.04.2015 в 18:28.
Vongud вне форума Ответить с цитированием
Старый 06.04.2015, 17:38   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
<Тут значение из грида, из поля на записи где стоит курсор
Код:
DBGrid.Datasource.DataSet.FieldByName(<тут имя поля по которому МЫ можем идентифицировать запись>).Value;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 06.04.2015, 18:53   #7
Vongud
Пользователь
 
Аватар для Vongud
 
Регистрация: 26.08.2014
Сообщений: 24
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Код:
DBGrid.Datasource.DataSet.FieldByName(<тут имя поля по которому МЫ можем идентифицировать запись>).Value;
Так не прокатывает... А через SQL то никак не сделать?
Ошибка-несовместимость типов TDBEdit и String, а с кавычками одинарными поле не найдено...
Vongud вне форума Ответить с цитированием
Старый 06.04.2015, 19:11   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Так не прокатывает... А через SQL то никак не сделать?
А про что распинаются здесь? Покажи код формирования запроса и присвоения значения параметру. Как параметр в запрос подставляешь используя #4 и #6. Какой тип у ключевого поля?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.04.2015, 19:23   #9
Vongud
Пользователь
 
Аватар для Vongud
 
Регистрация: 26.08.2014
Сообщений: 24
По умолчанию

Мне нужно из таблицы Tchm перенести запись, которая выделена в дбгриде в таблицу Tchmp. Тем кодом, что сверху привёл, копируются (но это не важно, потом удалять скопированные буду) все записи таблицы Tchm. А надо по одной. Тип у ключевого поля числовой, TN называется (табельный номер). Вот весь код процедуры:
Код:
procedure TFEditTchmi.RedirectClick(Sender: TObject); //Переопределить должность
begin
  if RBTchm.Checked = true then
    begin
      DM1.ADOQueryTchm.Active := false;
      DM1.ADOQueryTchm.SQL.Clear;
      DM1.ADOQueryTchm.SQL.Add('INSERT INTO Tchmp (TN, Name1, Name2, Name3, KolN, StazS, Klass, Uchastok, Talon, JoinTN, Phone, Address)');
      DM1.ADOQueryTchm.SQL.Add('SELECT TN, Name1, Name2, Name3, KolN, StazS, Klass, Uchastok, Talon, JoinTN, Phone, Address');
      DM1.ADOQueryTchm.SQL.Add('FROM Tchm');
      DM1.ADOQueryTchm.ExecSQL;
      DM1.ADOQueryTchm.SQL.Text := 'SELECT TN, Name1, Name2, Name3, KolN, StazS, Klass, Uchastok, Talon, JoinTN, Phone, Address FROM Tchm ORDER BY Name1';
      DM1.ADOQueryTchm.Active := true;
    end;
end;
P.S. RBTchm-это радиобаттон, на него можно не обращать внимания.
Vongud вне форума Ответить с цитированием
Старый 06.04.2015, 19:27   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Так не прокатывает...
Фейспалъм...
Код:
procedure TFEditTchmi.RedirectClick(Sender: TObject); //Переопределить должность
begin
  if RBTchm.Checked = true then
    begin
      DM1.ADOQueryTchm.Active := false;
      DM1.ADOQueryTchm.SQL.Clear;
      DM1.ADOQueryTchm.SQL.Add('INSERT INTO Tchmp (TN, Name1, Name2, Name3, KolN, StazS, Klass, Uchastok, Talon, JoinTN, Phone, Address)');
      DM1.ADOQueryTchm.SQL.Add('SELECT TN, Name1, Name2, Name3, KolN, StazS, Klass, Uchastok, Talon, JoinTN, Phone, Address');
      DM1.ADOQueryTchm.SQL.Add('FROM Tchm');
      DM1.ADOQueryTchm.SQL.Add('TN=:p');
 DM1.ADOQueryTchm.ParamByName('p').Value=DBGrid.Datasource.DataSet.FieldByName('TN').Value

      DM1.ADOQueryTchm.ExecSQL;
      DM1.ADOQueryTchm.SQL.Text := 'SELECT TN, Name1, Name2, Name3, KolN, StazS, Klass, Uchastok, Talon, JoinTN, Phone, Address FROM Tchm ORDER BY Name1';
      DM1.ADOQueryTchm.Active := true;
    end;
end;
Если и это не поможет, то я пас.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос записи из одной таблицы в другую используя sql X_ALONE_X БД в Delphi 11 12.03.2013 17:58
MS SQL SERVER 2005 копирование таблицы из ОДНОЙ БД В другую или перенести все строки из одной таблицы в другую reihtmonbern БД в Delphi 4 17.07.2012 23:25
Переместить записи из одной таблицы в другую tiktak C/C++ Базы данных 1 01.07.2011 13:50
Перемещение данных из одной ячейки таблицы в другую. mastero444ek Общие вопросы Delphi 0 12.06.2011 16:44
Передача данных из одной таблицы в другую, при выборе одной ячейки MickMick Microsoft Office Excel 6 06.10.2008 13:57