Форум: "Базы";
Текущий архив: 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.47 MB
Время: 0.115 c