Форум: "Базы";
Текущий архив: 2003.06.19;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.014 c