Главная страница
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-60378
Ann
2003-06-03 08:44
2003.06.19
Преобразование


7-60445
Ixion
2003-04-12 03:18
2003.06.19
Управление TV с ИК порта


6-60286
asphix
2003-04-16 12:19
2003.06.19
Socket exception


4-60464
sosv
2003-04-17 14:06
2003.06.19
HWND


1-60186
Fantasy
2003-06-05 05:59
2003.06.19
Timer