Страница 1 из 1

красиво подписать столбцы DBGrid

Добавлено: 14 окт 2007, 13:20
londinium
Здравствуйте, Господа!

Есть такая таблица:

Код: Выделить всё

CREATE TABLE FIRM_REFERENCE (
    ID         INTEGER NOT NULL,
    FIRM_NAME  VARCHAR(50) NOT NULL,
    TELEPHONE  VARCHAR(10) DEFAULT null COLLATE PXW_CYRL
);

ALTER TABLE FIRM_REFERENCE ADD CONSTRAINT PK_FIRM_REFERENCE PRIMARY KEY (ID);
Это справочник фирм.

Выборка из него осуществляется с помощью компонента ТIBQuery таким образом

Код: Выделить всё

    MainDataModule->ReferencesQuery->SQL->Clear();
    MainDataModule->ReferencesQuery->SQL->Add("select  id,firm_name,telephone from firm_reference");
    MainDataModule->ReferencesTransaction->StartTransaction();
    MainDataModule->ReferencesQuery->Prepare();
    MainDataModule->ReferencesQuery->Open();
Затем захотелось мне странного: красиво подписать столбцы в DBGrid, т.е. первый столбец - "ИД", второй "Название фирмы", третий - "Телефон"
Нашел такой вариант:

Код: Выделить всё

  ReferencesForm->DBGrid->Columns->Items[0]->Field->DisplayLabel="ИД";
  ReferencesForm->DBGrid->Columns->Items[1]->Field->DisplayLabel="Название фирмы";
  ReferencesForm->DBGrid->Columns->Items[2]->Field->DisplayLabel="Телефон";

а потом придумал запрос, который решает все мои проблемы:

Код: Выделить всё

SELECT ID AS "ИД", FIRM_NAME AS "НАЗВАНИЕ ФИРМЫ",TELEPHONE AS "ТЕЛЕФОН" FROM FIRM_REFERENCE
но возник вопрос, с которым обращаюсь за помощью:

как выполнить такой запрос из TIBQuery, а еще лучше из хранимой процедуры, чтобы при выполнении запроса столбцы DBGrid подписались красиво без моего участия?

Работаю на C++Builder 6, IBX, FireBird 1.5.3 SS(разработка), работать будет под FireBird 2.0 SS

Добавлено: 14 окт 2007, 13:30
kdv
AS - это лишнее.
также можно использовать репозитарий имен столбцов и их имен для грида.
по большому счету репозитарий лучше, т.к. можно менять названия столбцов без изменения запроса.

можно вообще в программе у столбцов в дизайн-тайме прописать displayLabel. В общем, ты не на "красиво" должен ориентироваться, а на то, насколько удобно будет такое решение, когда тебе понадобится поменять надпись на одном из столбцов.

p.s.

Код: Выделить всё

MainDataModule->ReferencesQuery->Prepare();
MainDataModule->ReferencesQuery->Open()
зачем тут Prepare ?

Добавлено: 14 окт 2007, 21:25
londinium
AS - это лишнее.
Почему лишнее? Основной вопрос, из-за которого я ищу решение, такой: завтра мне захочется добавить в таблицу какое-то поле и выбирать его, и придется дописывать имя поля, например,

Код: Выделить всё

ReferencesForm->DBGrid->Columns->Items[2]->Field->DisplayLabel="Статус"; 

а если я оберну запрос с As, например, в хранимую процедуру, то столбцы подпишутся автоматом. Где я не прав?

Добавлено: 15 окт 2007, 00:22
kdv
Почему лишнее?
потому что это НЕОБЯЗАТЕЛЬНОЕ ключевое слово.
а если я оберну запрос с As, например, в хранимую процедуру, то столбцы подпишутся автоматом. Где я не прав?
именно тут. потому что можно написать в запросе внутри процедуры все что угодно, но наружу процедура выдает данные только через RETURNING параметры. Прежде чем теоретизировать - попробуйте, получится-ли это у Вас.