Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.016 c
1-60195
Xeon
2003-06-05 11:06
2003.06.19
Самораспаковка


14-60320
Сергей Суровцев
2003-06-03 20:13
2003.06.19
Принтер HP LJ1000 - перевод страницы.


1-60234
stream
2003-06-05 16:19
2003.06.19
загрузка курсора


9-60008
fsn
2002-12-19 01:04
2003.06.19
DELPHI X


6-60292
temp
2003-04-11 12:45
2003.06.19
Как настроить чтобы при обращении к CGI появлялось окно с паролем




   Наверх