Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.19;
Скачать: CL | DM;

Вниз

DBGrid&Query - как правильно делать update НД   Найти похожие ветки 

 
delfin   (2003-05-01 12:43) [0]

Использую DBGridEh из библиотеки EhLib.
В качестве набора данных выступает TQuery.
Например существует форма на которой есть грид.
У этого грида выставленны нужные названия колонок их длинна и видимость.
В процессе работы нужно постоянно обновлять содержимое датасета.
Я сейчас делаю вот-так:

q.Close;
q.Open;

В результате чего все настройки колонок грида сбрасываются.
Обломавшись я решил после каждого закрыть открыть заново выставлять параметры колонок
И тут я обломалься второй раз. По непонятным причиннам во время присвоения значений
параметрам колонки примерно вот таким образом:

DBGrid.Columns[0].Visible:=false;
DBGrid.Columns[1].Title.Caption:="№";
DBGrid.Columns[1].Width:=30;
DBGrid.Columns[2].Title.Caption:="Название";
DBGrid.Columns[2].Width:=300;
DBGrid.Columns[2].Font.Style:=DBGrid.Columns[2].Font.Style+[fsBold];

Выкидывается исключения типа "Значение за пределами массива". Тоесть почему то количество колонок уменьшается
а в большинстве случаев их просто нет. При пошаговом прохождения этого куска глюк не появляется.

Вопросы:
1. Можно ли делать update чтобы не исчезали настройки колонок.
2. Что за глюк с количеством колонок.

P.S. DisableControl перед Open Close не помогает.


 
delfin   (2003-05-06 11:07) [1]

Что, никто не знает?


 
Sergey13 ©   (2003-05-06 11:43) [2]

Чудеса какие то. И так со всеми гридами на всех формах? Тогда это или библиотеку криво установил или еще чего. Если только этот конкретный грид, то попробуй сотри его и создай снова. Не должно такого быть.


 
MsGuns ©   (2003-05-06 11:44) [3]

1. Названия колонок надо выставлять не у грида, а в св-ве DisplayLabel филдов датасета.

2. При переборе колонок во время присвоения им нужных свойств (хотя надо только центровать заголовок и выставлять ширину), видимо, ты индексируешь несуществующую колонку. Либо каким-то образом поменялось число возвращаемых запросом полей (как результат изменерия текста самого запроса) либо неверно определяется число колонок. Вообще перед сменой датасета (но не перед перечиткой) в гриде по-хорошкму надо очищать массив колонок RebuildColumns. После открытия НД массив колонок грида автоматически перестроится.


 
Delfin   (2003-05-06 11:55) [4]

У меня настройка грида программно происходит и DataSourse и TQuery тоже через Create.
Запрос возвращает фиксированный набор колонок. Ошибку выкидует не регулярно. Вот пошагово только один раз получилось эту ошибку поймать.
В другом форуме посоветовали программно добавить колонки в грид.
Что вы об этом думаете? И как это сделать?


 
MsGuns ©   (2003-05-06 12:22) [5]


Grid1.DataSource.Enable := false; // Не показывать изменения
Grid1.DataSource.DataSet.Close;
Grid1.Columns.RebuildColumns; // Очистка колонок
// Модификация запроса
// Выполнение запроса
Grid1.Columns.RebuildColumns; // Заполнение колонок
For i := 0 to Grid1.Columns.Count-1 do
begin
// высталяешь ширину, заголовки, выравнивание и т.д.
end;
Grid1.DataSource.Enable := true;


 
Юрий   (2003-05-21 12:20) [6]

Извини но я програмирую в FoxPro. Но и там есть такой гляк. Я боролся так : до обновления сохранял установки грида , а после востанавливал. Сохранял соклько колонок, названия и ширину.


 
Ann ©   (2003-05-21 12:45) [7]

Странно, тоже использую DBGridEh, но при close-open ничего не сбивается. Правда пользуюсь FibDataSet


 
alienka   (2003-05-27 13:23) [8]

У меня похожая ситуация.
Использую ADOQuery. Во время визуальной разработки указываю у ненужных (для отображения) мне полей visible=false (по умолчанию стоит true).
Когда данные передаются в Grid, то уже не нужно указывать какие колонки скрывать, а какие нет, и соотв. немного сбивается нумерация. Если в запросе скрываем поле с номером 1, то в гриде под номером 1 будет уже другое поле, следующее.
Вот. Надеюсь поможет!


 
alienka   (2003-05-27 13:28) [9]

забыла добавить! в коде не нужно повторять все эти свойства. Во время выполнения программы, если открываешь или закрываешь запрос (обновляешь), свойства его сохраняются, поля неотображаемые остаются неотображаемыми. Сорри за непограммистский язык ;) ОБъяснила своиим словами.



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

Текущий архив: 2003.06.19;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
14-60422
Danilka
2003-06-03 15:55
2003.06.19
Автоматизация учета


14-60319
DVM
2003-06-03 18:39
2003.06.19
Периодическое обращение к диску A: в Win2000Server


14-60397
YonnyN
2003-06-01 02:24
2003.06.19
Странное поведение диалоговых окон под XP


8-60278
Mel26
2003-03-02 21:28
2003.06.19
Фильтр баланса цветов


6-60298
korvet
2003-04-18 10:55
2003.06.19
Простая функция PING