Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-60160
child_sun
2003-06-06 23:26
2003.06.19
Помогите написать скринсейвер


14-60334
AlekAMD
2003-06-02 04:40
2003.06.19
Работа с Microsoft Oulook из Delphi


6-60312
vinnety
2003-04-15 22:43
2003.06.19
Текстовое сообщение через DcomConnection


1-60263
Mateus
2003-06-06 09:53
2003.06.19
Подсчет контрольной суммы.


14-60380
Asrw
2003-06-02 20:47
2003.06.19
100+2 и т.д





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский