div.main {margin-left: 20pt; margin-right: 20pt} Взаимодействие ADO Data Control и DataGrid ActiveX
Control
Кононенко
Роман
Начнем с того, что я расскажу чем я
занимаюсь, а занимаюсь я тем, что пишу бухгалтерские проги для малого
частного бизнеса под заказ. Почему для малого, потому что не веду план
счетов в проге, от этого прога становится легче и дешевле. Хотя мне
разницы нет. И вот по роду работы я очень часто использую DataGrid, и
всегда Access совские базы данных. Почему Access, да потому что легче
всего её конструировать. А так как данных в таблицах очень много, и за
разный период, то отображаю я это всё на экране при помощи DataGrid, и
изучил я его очень хорошо. И так начнем. На форме помещаем DataGrid (далее
DG) и Аdodc (далее ADO). АDO делаем невидимым, или помещаем за пределы
формы, в окне свойств кликаем на строке Пользовательский. Открывается
диалог настройки АDO. На вкладке General выбираем Use Connection String и
давим на кнопочку Build. В открывшемся диалоге на вкладке Поставщик данных
выбираем Microsoft Jet 3.51 OLE DB Provider (для Access 2000 и XP версия
Jet 4.0), потом кнопка Далее и в поля для ввода базы данных пишем имя
нашей базы. Если полный путь не указывать, то прога будет открывать базу
из своей папки, что дает некоторые преимущества, в частности нет привязки
к пути. Для успокоения совести кликаем на кнопке Проверить подключение.
Жмем Ок и возвращаемся к первому диалогу. Если требуется вход по паролю,
то вводим эти данные на вкладке Authentication, переходим на вкладку
RecordSource и вот здесь нужно решить как будет использоваться DG, если
нам необходимо отображать всю таблицу в том виде, в каком она заполняется,
то в списке Command Tupe выбираем 2-adCmdTable и ниже в списке выбираем
имя таблицы. А если нам нужно динамически менять условия отбора, то в
списке Command Tupe выбираем 1-adCmdText и в поле Command Text (SQL)
пишем "SELECT * FROM Имя_Таблицы". На этом настройка ADO
закончена. Теперь переходим к настройке
DG: В свойствах DataSourse выбираем имя нашего ADO.
Потом кликаем правой кнопкой на DG и выбираем меню Retrieve Fields. После
этого DG обращается к ADO и загружает список полей. После этого в этом же
меню выбираем Properties. В открывшемся диалоге будем настраивать DG.
Вкладка General основные настройки:
Caption - отвечает за содержимое текста над названиями
колонок.
ColumnHeaders - отвечает за то, будет ли отображаться
слева колонка для выбора строк.
HeadLines - количество строк отведенных под текст названия
колонок.
RowHeigth-высота строк в твипах. Всё остальное и так
понятно.
Вкладка Keyboard отвечает за то как будет DG реагировать на нажатие
кнопок при навигации по DG, я всё отключаю.
Вкладка Columns отвечает за порядок размещения и названия колонок, в
DG.
Вкладка Layout: Здесь задаются параметры для каждой колонки
Locked - что-то фиксирует не помню что, но я флажок
ставлю
AllowSizing - Разрешает изменение ширины колонки юзером, я
отключаю
Visible - отмечаем если нужно отобразить колонку.
WrapText - разрешает функцию переноса текста в
колонке.
Button - по моему если в данной колонке в таблице
находится список то разрешает использовать этот список и в DG
DividerStyle - тип сетки
Alignment - выравнивание текста
Width - ширина колонки.
Вкладки Color and Font - и так понятно.
Вкладка Split - это настройка области, DG позволяет иметь несколько
областей и настраивать каждую в отдельности, здесь убираем все флажки
кроме Locked, единственно что настраиваем, так это скролбар.
Вкладка Format - здесь настраивается формат отображения данных в
колонках.
Тут всё и так понятно, но есть маленькая хитрость. К примеру нужно
отображать цифры с 2 знаками после запятой и прижать их к правому краю,
так вот, крайняя правая цифра так близко к сетке, что почти сливается с
ней. Выход: выбираем колонку где эти самые цифры отображаются, Format Tupe
выбираем Custom в поле Format String пишем 0.00 (ноль точка ноль ноль и
всё без кавычек) количество нулей после точки определяет разрядность
дробной части и после нулей ставим пробел. Вот этот пробел при отображении
и вставляется после цифры, что и отодвигает число в ячейке чуть левее и не
даёт сливаться с сеткой.
Теперь пара нюансов для тех, кому нужно
отображение строк в DG по определённому условию и кто в ADO прописал
1-adCmdText и в поле Command Text (SQL) "SELECT * FROM
Имя_Таблицы". В ходе процедуры для изменения
содержимого делаем так: ... Adodc.RecordSource = "Здесь текст
команды SQL на выборку
данных" Adodc.Refresh DataGrid.Refresh ...
После этих строк DG отображает то, что Вы указали в запросе Adodc.
|