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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2015, 15:50   #21
Vongud
Пользователь
 
Аватар для Vongud
 
Регистрация: 26.08.2014
Сообщений: 24
По умолчанию

Цитата:
Не правда, нет проблем для обновления другой Query сделать.
можно и над этим покумекать. никогда об этом не думал. в связи с этим несколько вопросов:
1) квери разместить на форме или на датамодуле или не важно? (как удобней)?
2) после переключения таблицы на Tchmp опять ту же операцию проводить?
3) почему халтурка?
P.S. у меня же явно источник данных не указан, он меняется при работе приложения по переключению радиобаттонов.
Vongud вне форума Ответить с цитированием
Старый 07.04.2015, 22:25   #22
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

1) кому удобней нам или тебе?
2) какая операция? если операция нужна по логике программы, то безусловно.

А теперь выскажу мысль которая сведет на нет ВСЕ предыдущее обсуждение.

ЕСЛИ у нас есть ДВЕ таблицы имеющие одинаковую структуру и требующее перемещения данных из одной в другую, то это по сути ОДНА таблица с дополнительным флагом (или атрибутом) tp позволяющим фильтровать данные.
0 - это помощник машиниста / 1 = машинист.
В этом случае не нужно и никаких переключений НД, а только смена параметра запроса(через тот же Radobutton).
WHERE tp=:tp
tp=0 --помощники | tp=1 машинисты
а перемещение
Код:
insert ... 
select .. from where tn=..
заменяется на
Код:
update ... set tp=0|1 
where ...
А учитывая упоминание (TN табельный номер) и упоминания о занимаемых должностях, можно утверждать необходимость ДВУХ (и даже ТРЕХ) совершенно других таблиц.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 07.04.2015 в 22:35.
evg_m вне форума Ответить с цитированием
Старый 08.04.2015, 14:42   #23
Vongud
Пользователь
 
Аватар для Vongud
 
Регистрация: 26.08.2014
Сообщений: 24
По умолчанию

Цитата:
то это по сути ОДНА таблица
но ведь физически (в Access) это две таблицы. хоть и с одинаковыми полями.
Я вот не понимаю: для удаления достаточно написать Delete в запросе и удаляется та строка, где установлен курсор. почему же так не делается при переносе то? почему переносятся все?
Vongud вне форума Ответить с цитированием
Старый 08.04.2015, 15:55   #24
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
для удаления достаточно написать Delete в запросе и удаляется та строка, где установлен курсор
Если написать в запросе
Код:
ADOQuery.SQLText('Delete From Table')
то будут удалены ВСЕ записи.
А если ПРИМЕИНИТЬ (использовать) DataSet операцию.
Код:
ADOQuery.Delete;
то будет удалена текущая.
Тоже можно и для перемещения.
Код:
ADOquery.Insert; +F1 ( ===смотри в справке!!!)
НО ВСЕ поля ручками, ручками...
ДА и второй НД тоже нужен.

Цитата:
но ведь физически (в Access) это две таблицы.
Именно, что две. Хотя Достаточно ОДНОЙ.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 09.04.2015, 14:40   #25
Vongud
Пользователь
 
Аватар для Vongud
 
Регистрация: 26.08.2014
Сообщений: 24
По умолчанию

Цитата:
Если написать в запросе
Код:

ADOQuery.SQLText('Delete From Table')

то будут удалены ВСЕ записи.
А если ПРИМЕИНИТЬ (использовать) DataSet операцию.
Код:

ADOQuery.Delete;

то будет удалена текущая.
Вот спасибо, разъяснили.
А можете вот эту конструкцию
Код:
ADOquery.Insert;
хоть не всю, а чем начинается и заканчивается (пример) моего случая описать, пожалуйста?
Цитата:
Именно, что две. Хотя Достаточно ОДНОЙ.
ну как ОДНОЙ, если в них хранятся данные о разных специальностях?
вот скрин одной формы (там потом одну таблицу на другую надвину).
Изображения
Тип файла: jpg 2015-04-09 14-36-46 FormTchmi.jpg (23.7 Кб, 120 просмотров)
Vongud вне форума Ответить с цитированием
Старый 09.04.2015, 15:42   #26
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
хоть не всю, а чем начинается и заканчивается (пример) моего случая описать, пожалуйста?
А посмотреть самому
Цитата:
ADOquery.Insert; +F1 ( ===смотри в справке!!!)
1.JPG

Цитата:
ну как ОДНОЙ, если в них хранятся данные о разных специальностях?
Цитата:
то это по сути ОДНА таблица с дополнительным флагом (или атрибутом) tp позволяющим фильтровать данные.
0 - это помощник машиниста / 1 = машинист.
Разговор долгий, просто почитайте про нормальные формы.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 09.04.2015 в 15:46.
evg_m вне форума Ответить с цитированием
Старый 09.04.2015, 18:47   #27
Vongud
Пользователь
 
Аватар для Vongud
 
Регистрация: 26.08.2014
Сообщений: 24
По умолчанию

Цитата:
просто почитайте про нормальные формы
да читал я при них-5 штук, достаточно четырёх. Мне бы чтоб программа работала, а это всё дела не мои)
Буду листать справку
Vongud вне форума Ответить с цитированием
Старый 10.04.2015, 14:33   #28
Vongud
Пользователь
 
Аватар для Vongud
 
Регистрация: 26.08.2014
Сообщений: 24
По умолчанию

Спасибо, всё сделал, Всё получилось)
Цитата:
begin
if RBTchm.Checked = true then
begin
try
DM1.ADOQueryTchmp.Edit;
DM1.ADOQueryTchmp.Insert;
DM1.ADOQueryTchmp.FieldByName('TN') .AsInteger:=DM1.ADOQueryTchm.FieldV alues['TN'];
DM1.ADOQueryTchmp.FieldByName('Name 1').AsString:=DM1.ADOQueryTchm.Fiel dValues['Name1'];
DM1.ADOQueryTchmp.FieldByName('Name 2').AsString:=DM1.ADOQueryTchm.Fiel dValues['Name2'];
DM1.ADOQueryTchmp.FieldByName('Name 3').AsString:=DM1.ADOQueryTchm.Fiel dValues['Name3'];
DM1.ADOQueryTchmp.FieldByName('KolN ').AsInteger:=DM1.ADOQueryTchm.Fiel dValues['KolN'];
DM1.ADOQueryTchmp.FieldByName('Staz S').AsDateTime:=DM1.ADOQueryTchm.Fi eldValues['StazS'];
DM1.ADOQueryTchmp.FieldByName('Klas s').AsInteger:=DM1.ADOQueryTchm.Fie ldValues['Klass'];
DM1.ADOQueryTchmp.FieldByName('Ucha stok').AsString:=DM1.ADOQueryTchm.F ieldValues['Uchastok'];
DM1.ADOQueryTchmp.FieldByName('Talo n').AsString:=DM1.ADOQueryTchm.Fiel dValues['Talon'];
DM1.ADOQueryTchmp.FieldByName('Phon e').AsString:=DM1.ADOQueryTchm.Fiel dValues['Phone'];
DM1.ADOQueryTchmp.FieldByName('Addr ess').AsString:=DM1.ADOQueryTchm.Fi eldValues['Address'];
DM1.ADOQueryTchmp.Post;
DM1.ADOQueryTchm.Delete;
DM1.ADOQueryTchmp.Refresh;
except on e:Exception do
end;
end;
Только вот ещё проблемка такая возникла:
при перемещении записи почему-то требует, чтобы все поля были заполнены (не пустые). хотя в бд access у меня все поля необязательные. что посоветуете?
Там, где пустые поля пишет, что невозможно преобразовать Null в Integer или String

Последний раз редактировалось Vongud; 10.04.2015 в 14:37.
Vongud вне форума Ответить с цитированием
Старый 10.04.2015, 21:47   #29
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
что невозможно преобразовать Null в Integer или String
Это означает что TField.AsString (AsInteger) не понимает как можно Value ===NULL превратить в string (integer). НО НЕ Access!!!!
Цитата:
что посоветуете?
поискать другие свойства TField +F1 +properties or Methods.
TFields +F1
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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