Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Программное добавление колонки в DbGrid.


Автор: drenthe 17.12.2011, 21:38
 Всем привет!
 Есть такая проблема:
 необходимо добавить колонку в DbGrid по нажатию кнопки, при этом тип колонки должен быть вычисляемым.
 К примеру: есть таблица с колонками "цена" и "кол-во". Нужно добавить колонку, в которой будет отображаться сумма каждой записи.
 Для отображения таблицы использую компоненты DataSource и TTable.
 Слышал что есть возможность добавить колонку через запрос, при этом используя TQuery вместо TTable, но не знаю как это реализовать.
 Подскажите пожалуйста, как это можно сделать, желательно с примерами...


Автор: Данкинг 17.12.2011, 22:01
Ну так выбери сразу запросом в грид эту сумму. Что-то вроде того:
Код

select price, kolvo, price*kolvo as summa from table

Автор: drenthe 17.12.2011, 22:52
Данкинг, Сори, тип колонки не вычисляемый а вещественный.
Насчёт запроса, поменять ttable на tquery и сделать запрос ??

Автор: Данкинг 17.12.2011, 23:20
Цитата(drenthe @  17.12.2011,  23:52 Найти цитируемый пост)
Сори, тип колонки не вычисляемый а вещественный.

Какая разница-то в данном случае.
Цитата(drenthe @  17.12.2011,  23:52 Найти цитируемый пост)
Насчёт запроса, поменять ttable на tquery и сделать запрос ?? 

Разумеется.

Автор: drenthe 19.12.2011, 01:01
Данкинг, добавление получилось.
Код

Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select ID,cena,kolvo, cena*kolvo As Summa from baza');
Query1.open;


Как теперь удалить колонку??

Автор: Данкинг 19.12.2011, 12:03
Код

Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('alter table baza drop column cena');
Query1.ExecSQL;

Автор: drenthe 20.12.2011, 20:56
Данкинг, спасибо! smile 

Автор: drenthe 21.12.2011, 19:25
Появился новый вопрос.
Необходимо добавить в dbgrid по нажатию кнопки колонку из физической бд, при этом значения колонки чтобы были отформатированы.
Добавляй колонку при помощи такой кнопки:
Код

query1.close;
query1.sql.Clear;
query1.SQL.Add('select cena from asd');
query1.Open;


Как в этой кнопке добавить запрос на форматирование значений колонки?

Или же по другому.
Как добавить колонку из физ. бд через ttable в dbgrid?
Форматирование сделаю к примеру так:
Код

Table1Cena.DisplayFormat:='#.##';

А как добавить не знаю...

Автор: Данкинг 21.12.2011, 21:31
У query1 же тоже колонки есть. В данном случае - cena.

Автор: drenthe 21.12.2011, 21:38
Данкинг, сейчас у меня два грида на форме. Один отображает таблицу через Ttable, а другой связан с query, но query не активен, т.е. таблица не отображается во втором гриде.
Я просто добавляю туда колонку через запрос и теперь нужно её удалить оттуда (но не удалить из физ. бд).

Автор: Данкинг 21.12.2011, 22:02
Цитата(drenthe @  21.12.2011,  22:38 Найти цитируемый пост)
Я просто добавляю туда колонку через запрос и теперь нужно её удалить оттуда (но не удалить из физ. бд). 

При чём здесь форматирование тогда? Ну, сделай колонке .Visible:=False.

Автор: drenthe 21.12.2011, 22:11
Цитата(Данкинг @  21.12.2011,  22:02 Найти цитируемый пост)
При чём здесь форматирование тогда? Ну, сделай колонке .Visible:=False.


Просто у меня такое задание: добавить колонку с форматированием и потом удалить её.
Visible:=False. к сожалению не подходит...

Автор: Данкинг 21.12.2011, 22:23
Тогда поищи опытным путём методы удаления колонок из грида. Я, честно говоря, с таким не сталкивался.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)