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




Вниз

Глюк DBGrid? 


Aaz   (2002-03-11 07:21) [0]

Странно, но полоса прокрутки имеет всего три положения - начало, середина конец. При прокрутке стоит на середине. Это глюк DBGrid или моих корявых ручек?



Anatoly Podgoretsky   (2002-03-11 07:56) [1]

Это нормально, для того что бы скроллер мог работать необходимы следующие веши: количество записей, порядковый номер записи - этого для таблиц нет



Aaz   (2002-03-11 08:17) [2]

В таком случае как это можно поправить?



sniknik   (2002-03-11 08:27) [3]

При наполнении таблици само поправится. А вот если данных в таблице много (не умещается в трех экранах Grid-а) то это глюк. Но скорей всего у тебя просто слишком маленькая таблица.



Aaz   (2002-03-11 09:44) [4]

7000 элементов? Даже слишком много.



Malder   (2002-03-11 09:57) [5]

Aaz прав. По крайней мере, в Delphi 5 DBGRID странно ведет себя.
Существует данная проблема даже если данных много, да и со скроллом (с колесиком на мышке) глюки.
Сам ищу какой-нибудь компонент свободный от данной проблемы или это невозможно сделать ? Да и в Delphi 6 как с этим ?
Скажите...



sniknik   (2002-03-11 11:07) [6]

В 6 без проблем но и когда в 5 работал не помню чтобы чтото подобное было. В 5 у меня другое было ADO глючило, при пустой таблице или если на последнюю запись встанеш давало ошибку типа предполагается операция а запись не найдена. 6-й с апдейтом это вылечил.



Hawk2   (2002-03-11 11:13) [7]

А я подметил следующую вещь. Когда я использую БД dBASE или FoxPro (dbf-файлы), то DBGrid глючит и как сказано было раньше это не зависит от количества записей в базе. А когда база Paradox, то все нормально.



sniknik   (2002-03-11 11:36) [8]

Точно!!! С Dbf - ом глюк как и сказано. Проверил в Delphi 6. В Db нет.



sniknik   (2002-03-11 11:48) [9]

Может дело в формате таблици. Если в заголовке Dbf нет информации о общем количестве записей то и гриду непонятно как скролинг делать? Вот он и ведет себя таким странным образом.



Shaman_Naydak   (2002-03-11 15:04) [10]

Народ, ну чего вы спорите.
Anatoly Podgoretsky же четко все сказал..
Это АБСОЛЮТНО нормальный режим работы грида, когда он не может определить общее количество записей или номер текущей..
в DBF-е он определить не может.
Чтобы увидеть так называемый "глюк" с парадоксовской таблицей, навесьте на нее фильтр



Anatoly Podgoretsky   (2002-03-11 22:04) [11]

Да будет тоже самое, так как выполнятся условие неопределенности, количества записей и позиции.



Malder   (2002-03-11 23:28) [12]

Не, ну вы неправильно рассуждаете... мож это и нормальный режим работы грида, но это надо как-то лечить. Лично мне клиенты предъявляли претензии насчет полосы прокрутки. Да к тому же скрол колесом можно двигаться по гриду только в пределах экрана. И не говорите, что он там чего-то не знает. Это не нормально. И, имхо, просто компонет дырявый. Все никак Дельфи 6 не поставлю, там по ходу этого нет.

P.S. Кстати, у меня данная проблема была как раз с Парадоксом...



Nest   (2002-03-12 09:27) [13]

2Malder ©
Ню-ню, и БДЕ дырявый и вообще WIN32...
Ты сам подумай, если такой умный, как компонент может скроллить нормально, если датасет не даёт ни номера записи корректно [ни кол-ва] ?
Люди и до тебя парились с этим, а ты вот так просто взял всё и решил - надо вылечить. Ню-ню.



koks   (2002-03-12 10:32) [14]

Я слышал, что данная проблема - не в компоненте DBGrid, а в DataSource... Он для Dbase - таблиц некорректно определяет номер текущей записи и кол-во записей.... А c DBGrid-ом все OK. Копать нужноь именно Datasource.
Для Paradox-а не знаю - пользуюсь DBase. Но (слышал, опять же) что проблема решается ТОЛЬКО сменой механизма доступа к данным или формата. Например, переход на ADO, или на C/S (Interbase).



Bachin   (2002-03-12 12:23) [15]

Расставим все точки над i :)))

Проблема действительно есть, но не с DBGrid или DataSource, а с DataSet. Точно знал, что была проблема в BDEшной реализации, сейчас проверил в ODBCExpress - то же самое. Native реализация (по крайней мере Informix/INAP2) работает чисто.

проверено Delphi 3/5/6



Aaz   (2002-03-12 12:28) [16]

>Anatoly Podgoretsky
> Это нормально
Совсем даже не очень
>для того что бы скроллер мог работать необходимы следующие вещи:
> количество записей
Можно определить например так: DBGrid1.DataSource.DataSet.RecordCount
> порядковый номер записи
определяем так DBGrid1.DataSource.DataSet.RecNo

Чо дальше? Куда это все хозяйство втисуть?
------------------------------------------------
>koks
> Я слышал, что данная проблема - не в компоненте DBGrid, а в DataSource...
> Он для Dbase - таблиц некорректно определяет номер текущей записи и кол-во записей....
Ну по преведенным выше функциям он определяет все тип-топ.
> А c DBGrid-ом все OK.
Чо-то сомневаюсь ...
> Копать нужноь именно Datasource.
Опять вопрос - куда втиснуть верные данные?

PS/ Кстати, Borland"овский SQL Explorier тоже также глючит.



Леха   (2002-03-12 12:52) [17]

Возьми навороченные гриды и не мучайся
если не беспокоит память то перед показом считывай все данные в DataSet



Romul   (2002-03-12 13:02) [18]

Компонент InfoPower3000. Однозначно.



Malder   (2002-03-12 15:03) [19]

Nest, просто видел базы данных у которого такого нет.

Ну то есть видел программу, в котором была куча записей, можно добавлять, удалять, фильтровать ну и т.д. Все это было в гриде. И проблем не было. Может она конечно не базы использовала, а текстовый файл... только навряд ли. И была эта программа локальная. Вот так. Значит, думаю, просто недоработка в гриде или в дате сос =)



Lusha   (2002-03-12 15:27) [20]

>Bachin
Дело не в DataSource
>Malder
Посмотрите исходники процедуры TCustomDBGrid.UpdateScrollBar. Там все весьма лаконично написано.
>Aaz
Просто написать свою процедуру UpdateScrollBar у TDBGrid, где самому определять внешний вид ScrollBar исходя из имеющихся у Вас данных и все дела... :-)


И всем вместе. Внимательно слушайте, что Вам говорят. В частности то, что говорили Anatoly Podgoretsky и Shaman_Naydak...


P.S.
>Moderator
А почему этот флейм до сих пор не в разделе "Потрепаться"? :-)



Anatoly Podgoretsky   (2002-03-12 22:08) [21]

koks © (12.03.02 10:32)
Aaz (12.03.02 12:28)

Все корректно, только это не тот номер, который нужен скроллеру, ему нужен порядковый номер записи полученного _набора_

RecNo это физический номер записи в таблице.

Нужно ли еще какие либо объяснения.



panov   (2002-03-12 22:20) [22]

>Lusha © (12.03.02 15:27)
потому что все высказывания по теме, и на личные споры никто не перешел...




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




Наверх





Память: 0.76 MB
Время: 0.051 c
7-9664            Unika                 2002-01-07 17:57  2002.04.04  
Как изменить атрибут файла скрытый ?


1-9492            RUSSIAN               2002-03-26 00:19  2002.04.04  
Скрин-сейвер некорректно завершается работу


14-9601           Nataliya              2002-02-18 10:26  2002.04.04  
сохранение пользовательского интерфейса


7-9665            Schummi               2002-01-06 09:27  2002.04.04  
*.reg


14-9616           vajo                  2002-02-22 10:08  2002.04.04  
Срочно! Зеркалирование дисков.