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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2011, 14:45   #1
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию Как узнать значение поля по RecNo

Всем привет. Вопрос такой...
Делаю drad-n-drop из дочерней таблицы в родительскую. При OnDragOver над родительской таблицей (над Гридом) получаю RecNo записи над которой висит мышь по координатам мыши (и даже подсвечиваю цветом эту запись). А как узнать значение поля (например, ID) записи, где RecNo = N ? Если переместиться на эту запись, то станет другим содержимое дочерней таблицы.

Table.Lookup() здесь не катит (не знаю ведь значение ключевого поля)
Grid.MoveBy(), вроде, тоже.. или я не в ту сторону думаю?
_SERGEYX_ вне форума Ответить с цитированием
Старый 26.10.2011, 14:51   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Без перемещения никак. Или запомнить до перемещения, или при перемещении DataSource.Enable:=False, вернуться назад и восстановить Enable. Если через AfterScroll родителя дочерние отображаются, то можно на момент перемещения его в nil сбрасывать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.10.2011, 14:54   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

насколько я понимаю (хотя на практике ни разу не пользовался)
Код:
TDataSet.First;
TDataSet.MoveBy(RecNo);
и дадут Вам нужный эффект!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.10.2011, 14:55   #4
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Цитата:
DataSource.Enable:=False
Ага, я уже над этим думал. Спасибо. Буду пробовать.
_SERGEYX_ вне форума Ответить с цитированием
Старый 26.10.2011, 14:59   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
и дадут Вам нужный эффект!
Не-а, нужного эффекта не будет. Просто перемещение указателя вперед-назад на заданное число позиций.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.10.2011, 15:09   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Не-а, нужного эффекта не будет. Просто перемещение указателя вперед-назад на заданное число позиций.
не понял. как это - не будет эффекта?!
Указатель - это текущая запись в датасете.
Датасет.First - сделает текущей первую запись. теперь все обращения к полям вернут значения ПЕРВОЙ записи из набора данных.
Датасет.Last - сделает текущей ПОСЛЕДНЮЮ запись. теперь все обращения к полям вернут значения ПОСЛЕДНЕЙ записи из набора данных.
ну и т.д.

в чём подвох?...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.10.2011, 15:11   #7
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Еще вот такая мысль пришла...
Таблица у меня сортируется по ID asc. Можно сделать запрос
Код:
select ID as XYZ from Table where (что-то чему-то) order by ID desc LIMIT RecNo'
XYZ и будет нужным значением. Или слишком заумно?
_SERGEYX_ вне форума Ответить с цитированием
Старый 26.10.2011, 15:12   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Эффект будет, но не тот который ТС нужен. Ему надо находясь на одной записи родителя получить данные из другой, но чтобы отображение в дочерних гридах не менялось. Причем Lookup не катит в его ситуации
Цитата:
Или слишком заумно?
Можно, но в многопользовательском варианте возможны проблемы, а вдруг кто-то чего-то удалил?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 26.10.2011 в 15:15.
Аватар вне форума Ответить с цитированием
Старый 26.10.2011, 15:46   #9
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
А как узнать значение поля (например, ID) записи, где RecNo = N ? Если переместиться на эту запись,
А при получении родительской таблицы строить список (RecNo, ID) и при получении (DragDrop) воспользоваться оным.
или же
1.запомнить все нужное из дочерней (подозреваю все тот же ID но дочерней записи).
2.запомнить текущие в главной и в дочерней
3.отключить дочернюю (а может и отключать не надо см п.1 ну "моргнет" лишний раз)
4.перейти в главной (recNo)
5.узнать ID (выполнить нужное используя п.1)
6.вернуться на текущую
7.подключить дочернюю.(если был п.3)
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 26.10.2011 в 16:04.
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как же узнать реальное начало поля в Ворде Ципихович Эндрю Microsoft Office Word 4 16.09.2011 17:00
как получить следующее значение поля ID amator_roma Помощь студентам 5 22.06.2011 16:01
как получить значение поля грид на основе значения другого lookUp поля malayka БД в Delphi 0 21.04.2010 19:06
Как узнать какие поля поменялись в таблице D-mon БД в Delphi 0 03.08.2007 11:53
как узнать название текущего поля в ComboBox doncova1 Компоненты Delphi 1 19.12.2006 12:52