Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.12.26;
Скачать: [xml.tar.bz2];

Вниз

Master-Detail   Найти похожие ветки 

 
Andriy Tysh   (2003-12-03 10:29) [0]

Есть два ДатаСет"а связаные по мастер-детаил настроенные на разные ДатаСеты.
И есть маленький глюк: когда кольосико мышки быство прокручивать, то появляются дублирующие записи в детаиле, а их физически, конечно, нет. Причём чем дольше прокручивать, тем больше дублей.
Может кто встречался с таким, просьба поделится.


 
Vemer   (2003-12-03 10:43) [1]

Я сделал так:
1. Обрубаем нафиг связь между датасетами.
2. Пихаем на форму невидимый DbEdit, цепляем к нему ID (почти всегда есть + короткое) поле главного Dataseta.
3. В OnChange DbEdit пишем что-то похожее на это:

If MasterID.Value.IsNull = True Then Exit; //нет обновлению при Master.Close
Detail.Сlose;
Detail.Prepare;
Detail.Params[0].Value := MasterID.value;
Detail.Open;


Этот способ также позволяет задавать несколько параметров для отбора в Detail.


 
Silver Alex   (2003-12-03 11:33) [2]


> 2. Пихаем на форму невидимый DbEdit, цепляем к нему ID (почти
> всегда есть + короткое) поле главного Dataseta.

зачем ?
можно на OnDataChange главного DataSource делать рефреш

procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
Detail.Сlose;
Detail.ParamByName("PArentID"):= Master.FieldByname("id") .AsInteger;
Detail.Open;
end;

но у меня еще есть компонент TTMDataSource (где-то в кладовке выкладывал), и все выше приведенное делаю на OnTMDataChange, происходит задержка на определенное время и лишний раз не рефрешится.Все наверное знают что OnDataChange срабатывает например два раза на открытие DataSet или в главном гриде бежишь по записям так вот задержка здесь спасает


 
Andriy Tysh   (2003-12-03 12:50) [3]

Наколько я понял, оба варианта хотят обновлений даных(Овпен или Рефреш)? Но если все даные есть в клиенте, мне не нужно их снова с сервера выбирать. Мне нужно просто бегать локально по записям.
Оба датасеты информацию держат уже локально, когда я по ним перемещаюсь. Тоесть, я сначала беру информацию с помощью Provider и заганяю в Client. Здесь потом работаю.


 
Silver Alex   (2003-12-03 13:33) [4]

а какая разница?не понятно правда зачем все данные по детализации тащить на клиент, но даже если так то вместо "Опен или Рефреш" делай тогда фильтр.А лучше посмотреть бы как ты это все делаешь


 
Andriy Tysh   (2003-12-03 14:54) [5]

?
> Silver Alex © (03.12.03 13:33) [4]

Если ставить фильтр, то работет чётко.
Но мне интересно, почему дублируются даные при прокручивании мышки, если физически в клиенте они не дублируются



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.12.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
14-86532
raymond
2003-12-03 11:54
2003.12.26
Теплая у вас тут отмосфера!


7-86564
Ал
2003-10-22 10:14
2003.12.26
Как узнать, что запущен скринсэйвер и корректно завершить его?


1-86365
kalliopiy
2003-12-15 18:25
2003.12.26
Вызов DLL, написанной на C++


14-86496
Думкин
2003-12-04 17:28
2003.12.26
С днем рождения! 4 декабря.


1-86345
Артем
2003-12-12 16:29
2003.12.26
Анимированная кнопка через обработку события onTimer





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский