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

Вниз

Куда девается полоса прокрутки в DBGrid   Найти похожие ветки 

 
_ZeKa   (2005-02-28 11:09) [0]

Проблема наверное неновая. Объясните: делаю ADODataset.Open, в том случае если набор данных не пустой прокрутка на месте, но если хоть раз ADODataset.IsEmpty = True, то прокрутка скрывается с концами.

Пробовал делать перед открытием SetScrollRange, в качестве nMinPos := 0, nMaxPos := ADODataset.RecordCount. Прокрутка появляется, но позиционирует неправильно.

Все FAQ перерыл, а там только советы как скрыть её. ПОМОГИТЕ ПОЖАЛУЙСТА!!!


 
DSKalugin ©   (2005-02-28 13:20) [1]

попробуй прогуляться вниз по набору данный, она и появится.
Почему тебя вообще этот вопрос беспокоит?
Дело еще в том, что данные при открытии ADODataset подгружаются не полностью, а порциями по мере "прокрутки" в целях экономии памяти


 
sniknik ©   (2005-02-28 14:05) [2]

> что данные при открытии ADODataset подгружаются не полностью, а порциями по мере "прокрутки"
только пр установленном серверном курсоре, и не по мере прокрутки, а любого обрашения. (например к последней записи, last, вызовет полний фетч рекордсета на клиента)


 
_ZeKa   (2005-02-28 20:58) [3]

Помогло. Сделал
ADODataset.Last;
ADODataset.First;

А на счет

> Почему тебя вообще этот вопрос беспокоит?

я же не объясню пользователю, извини мол виноваты не мы, а разработчики Delphi.

Спасибо за помощь...


 
sniknik ©   (2005-02-28 21:48) [4]

> Помогло. Сделал
> ADODataset.Last;
> ADODataset.First;
клиентский курсор сделал бы тоже самое, а вот скорость получения его на клиента будет немного больше.

> я же не объясню пользователю, извини мол виноваты не мы, а разработчики Delphi.
если вы не в курсе как работает используемая вами технология то виноват явно не борланд (в документации по ней все это есть).


 
_ZeKa   (2005-03-01 18:07) [5]


> клиентский курсор сделал бы тоже самое

А я и не говорил, что использую серверный курсор. Просто по непонятным мне причинам исчезает прокрутка, несмотря на то что данные выбераются в полном объёме.


 
sniknik ©   (2005-03-01 18:16) [6]

> А я и не говорил, что использую серверный курсор.
ну тогда, такого просто не может быть (с клиентским), если только ты не правил когдато "генофонд" ;о)), исходные модули дельфи, на предмет ее(прокрутки) отключения (тесты делал?).


 
_ZeKa   (2005-03-01 18:29) [7]

Может я что-то неправильно обрисовал?
Существует DBGrid, Datasource, ADODataset и Edit. При изменении текста в Editе произходит подстановка параметра в CommandText, а именно ...
Where Поле Like "*" + [Filter] + "*"
Так вот, если RecordCount в какой-то момент становится равным 0, то Прокрутка пропадает НАВСЕГДА.
А на счет тестов ответ отрицательный.


 
sniknik ©   (2005-03-02 08:09) [8]

> Может я что-то неправильно обрисовал?
> Существует ...
а теперь сделай новый проект, форму, положи туда описанные компоненты (курсор не забудь заявленый) и две кнопки одна с запросом возврашаюшим полный и пустой рекордсет... и нажимай по очереди. (только не копируй ии того проекта, ложи компоненты с панели)
???

> Where Поле Like "*" + [Filter] + "*"
* - ??? и хочеш сказать у тебя это работает? или у тебя на полное сравнение идет, и * вначале и в конце физически присутствуют?
если нет то этот запрос ВСЕГДА будет возврашать пустой рекордсет (ни на какие мысли не наводит?).


 
sniknik ©   (2005-03-02 08:27) [9]

> запрос ВСЕГДА будет возврашать пустой рекордсет
это потому что ADODataset, а значит и вполне конкретные провайдеры, и т.д. (можно "дополнить" недоговоренное). если же какойто неизвестный мне провайдер либо очень старый либо вообще BDE (у которого это как раз легальный символ любой подстроки) то запрос нормальный. (но шанс на это 0.2% в силу сказанного о исходных данных)


 
_ZeKa   (2005-03-02 10:26) [10]

Сори.
Where Поле Like "%" + [Filter] + "%"
Использую Jet 4.0 OLEDB.
Сделал как сказал, создал проект, компоненты доступа к БД, две кнопки:
procedure TForm1.Button1Click(Sender: TObject);
begin
 ADODataSet1.Close;
 ADODataSet1.CommandText := "select Pole1 from Table1";
 ADODataSet1.Open;
 // возвращает 3000 записей
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 ADODataSet1.Close;
 ADODataSet1.CommandText := "select Pole1 from Table1 where Pole1 = ""sdfsdf""";
 ADODataSet1.Open;
 // 0 записей. Следствие прокрутка исчезает и не появляется даже при нажатии на кнопку 1
end;


 
sniknik ©   (2005-03-02 12:05) [11]

> // 0 записей. Следствие прокрутка исчезает и не появляется даже при нажатии на кнопку 1
генофонд "подпорчен", явно, другого обьяснения не вижу, проверь скомпели тот же код на другой установке дельфей.
или речь идет не о DBGrid-е.



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

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

Наверх





Память: 0.48 MB
Время: 0.033 c
1-1110875571
awk
2005-03-15 11:32
2005.03.27
Как сделать форму


10-1012843591
michelson
2002-02-04 20:26
2005.03.27
JBoss Documentation


1-1110697743
_1
2005-03-13 10:09
2005.03.27
Формат ячеек в Excel


1-1110389726
John
2005-03-09 20:35
2005.03.27
Поиск файлов


1-1110808964
ki11er
2005-03-14 17:02
2005.03.27
Странная ошибка.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский