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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2009, 10:33   #1
Highlander1981
Пользователь
 
Регистрация: 12.11.2009
Сообщений: 20
По умолчанию Проблемы с прокруткой DBGridEh (видимо свзяан с RecNo)

Добрый день!
Есть БД используются таблицы Paradox, не спрашивайте почему, так было сделано, а теперь слишком много изменять придется.
На форме расположен DBGridEh который связан с Query (копию экрана прикрепил).
Делается запрос вида:
Код:
Form1.Query1.Active:=false;
Form1.Query1.SQL.Clear;
Form1.Query1.SQL.Add('SELECT *');
Form1.Query1.SQL.Add('FROM Rabota');
Form1.Query1.SQL.Add('WHERE (TabelNumber='+''''+Form1.Query2.FieldByName('TabelNumber').AsString+''''+')');
Form1.Query1.SQL.Add('AND (Rabota."Month"='+''''+MonthForProc+''''+')');
Form1.Query1.Active:=true;
В результате прокрутка работает только на 5 позиций, хотя строк на самом деле 76. Точнее не прокрутка, а положение бегунка, сами строки при этом скроллируются нормально. Кстати на картинке это видно текущая строка первая, а бегунок расположен не в самом верху.
Стал копать. В статусную строку к виду работ добавил через нижнее подчеркивание Query1.RecNo (видно на картинке). И что обнаружил при скроле, вместо 1,2,3..., вижу 11,23,35...
Причем если закомментировать в запросе строку со вторым условием:
Код:
Form1.Query1.Active:=false;
Form1.Query1.SQL.Clear;
Form1.Query1.SQL.Add('SELECT *');
Form1.Query1.SQL.Add('FROM Rabota');
Form1.Query1.SQL.Add('WHERE (TabelNumber='+''''+Form1.Query2.FieldByName('TabelNumber').AsString+''''+')');
//Form1.Query1.SQL.Add('AND (Rabota."Month"='+''''+MonthForProc+''''+')');
Form1.Query1.Active:=true;
То все работает как надо. Предполагаю что проблем связана с RecNo, видимо DBGridEh при отрисовке позиции скролла обрабатывает именно его.
Как решить сию проблему? Может кто сталкивался.
Изображения
Тип файла: gif Безимени-1.gif (13.5 Кб, 123 просмотров)
Highlander1981 вне форума Ответить с цитированием
Старый 23.12.2009, 12:12   #2
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Это у тебя к DBGridEh приставлен StringGrid и скрол StringGrid'а или это возможности DBGridEh?

Последний раз редактировалось Evgeniy26; 23.12.2009 в 12:16.
Evgeniy26 вне форума Ответить с цитированием
Старый 23.12.2009, 13:02   #3
Highlander1981
Пользователь
 
Регистрация: 12.11.2009
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Evgeniy26 Посмотреть сообщение
Это у тебя к DBGridEh приставлен StringGrid и скрол StringGrid'а или это возможности DBGridEh?
Ни то, ни другое. Это на самом деле три DBGridEh, ссылающиеся на один и тот же набор данных DataSource, просто у первого и последнего выключены ScrollBar'ы.
Highlander1981 вне форума Ответить с цитированием
Старый 24.12.2009, 06:21   #4
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию

А почему бы первый и второй Грид не сделать в одном? Если честно, то я не понял смысла, зачем поле "Код" выносить в отдельный грид????
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Старый 24.12.2009, 08:36   #5
М_Виктор
Пользователь
 
Регистрация: 18.09.2009
Сообщений: 49
По умолчанию

Цитата:
Сообщение от Vit@L Посмотреть сообщение
А почему бы первый и второй Грид не сделать в одном? Если честно, то я не понял смысла, зачем поле "Код" выносить в отдельный грид????
Скорее всего, для того, чтобы при перемещении вправо во втором DBGrid, постоянно видеть поле "Код". Если поле "Код" добавить во второй DBGrid, то при перемещении вправо оно скроется.
Мне несколько раз приходилось прибегать к подобному способу; здесь главное экспериментальным путем установить высоту DBGrid1 и DBGrid2, иначе при изменении размеров формы в DBGrid1 и DBGrid2 будут выделены разные строки.
В DBGrigEh есть свойство FrozenCols, установив его значение 1,2,3 и т.д. можно слева "зафиксировать" одну, две и т.д. колонок.
Они не будут скрываться при горизонтальном скролл.

Последний раз редактировалось М_Виктор; 24.12.2009 в 09:47.
М_Виктор вне форума Ответить с цитированием
Старый 24.12.2009, 13:53   #6
Highlander1981
Пользователь
 
Регистрация: 12.11.2009
Сообщений: 20
По умолчанию

Цитата:
Сообщение от М_Виктор Посмотреть сообщение
Скорее всего, для того, чтобы при перемещении вправо во втором DBGrid, постоянно видеть поле "Код".
Да, именно для этого.

Цитата:
Сообщение от М_Виктор Посмотреть сообщение
В DBGrigEh есть свойство FrozenCols, установив его значение 1,2,3 и т.д. можно слева "зафиксировать" одну, две и т.д. колонок.
Они не будут скрываться при горизонтальном скролл.
Я в курсе. Но в этом случае полоса скролла была бы и под "Код", а мне блин захотелось, чтоб скролл был только там, где он что-то реально двигает. Вообщем было у меня именно такое видение формы.

А по теме, так никто ничего и не сказал.

Эксперементальным путем проблему решил. В таблице Rabota, на этапе проектирования были созданы поля:

TabelNumber
VidRabotKod
VidRabotText
Month
D1
D2
...
и т.д.

Так вот первые 4 я сделал ключевыми (честно говоря уже и не помню зачем). И когда я изменил порядок полей, передвинув поле "Month" на вторую позицию, то все заработало как надо. Но при этом осталось досадное ощущение, что сути загвоздки я так и не понял. Видимо все таки BDE, как-то по своему реализует запросы.
Highlander1981 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
окно с горизонтальной прокруткой v-victoria HTML и CSS 0 13.08.2009 23:05
отдельное окно в <td> с горизонтальной прокруткой как на картинке v-victoria HTML и CSS 0 13.08.2009 22:24
Проблема... видимо с материнокой Ketu Компьютерное железо 10 11.08.2008 09:34
Видимо ошибка в функции(помогите исправить) GAGARIN-NEW Общие вопросы Delphi 18 07.05.2008 12:30
Видимо очередной вопрос по БД... Amaranth Помощь студентам 1 16.12.2007 00:56