Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как значения запросы правильно расположить в ДБГРИДЕ? [D6, MySQL]


Страницы:   1 2

Janb ©   (2005-01-19 07:51:00) 

Уважаемые мастера, у меня такой вот вопрос с помощью adoquery делаю запрос:
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select *, p8-p5 as r1, p9-p6 as r2, p10-p7 as  r3, p12-p11 as r4 from  p1');

В принципе все работает, запрос возвращает правильные значения.
Но, вот эти вот r1, r2.. должны находится среди колонок, т.е. типа колонка1, колонка2, колонка1-колонка2,

А они у меня выходят в конце грида.
Пожалуйста очень надо. Помогите!


Danilka   (2005-01-19 16:07:00) [1]

[19] sniknik ©   (19.01.05 15:37)
> потом это пример

понятно. я сразу не допер, что только 2 поля из-за того, чтобы сюда много кода с примером не фигачить. :)

тогда, могу предложить все-таки хранить, в ини или, еще где, полное описалово всех полей, иначе, предположим, юзер поудалял все поля, оставив 2, а завтра ему понадобилось еще одно, а описалова (имя столбца, размер и т.д.) больше нет.


Janb   (2005-01-19 15:41:00) [2]


> Danilka ©   (19.01.05 15:09) [17]

Если бы мне было нужно только две я бы даже вопрос не ставил бы.

Все равно всем спасибо!


sniknik   (2005-01-19 15:37:00) [3]

> Не слишком красиво, на мой взгляд, тащить на клиента всю кучу полей, когда необходимо только 2..
см. условие вопроса и ход обсуждения.
и потом это пример, или ты хочеш на 128 +- 96 реальных полях обьяснять как можно поля создавать? обьясни сам тогда.


msguns   (2005-01-19 15:33:00) [4]

Чтобы грид перезаполнялся полями изменившегося (нового) запроса, надо после закрытия и отсоединения старого датасета (TDBGrid.DataSource.DataSet := nil), давать Columns.RebuildColumns, а потом присваивать новый (или динамически модифицированный старый), предварительно открытый датасет. Правда, ширину и порядок колонок, стиль и тексты заголовка и т.д. придется крыжать ручками.


Danilka   (2005-01-19 15:09:00) [5]

[16] sniknik ©   (19.01.05 15:06)
> допустим есть запрос select *  from Table1
> с кучей полей (под * скрываюшимися) а нам нужно только два
> и запрос править не хотим...

Не слишком красиво, на мой взгляд, тащить на клиента всю кучу полей, когда необходимо только 2..


sniknik   (2005-01-19 15:06:00) [6]

> Можно подробнее
допустим есть запрос select *  from Table1
с кучей полей (под * скрываюшимися) а нам нужно только два и запрос править не хотим... первое Dat а оно последнее в списке нужно первым и второе Name а оно первое.
описываем поля (для переменного числа можно массив сделать)

 private
   ADODat: TField;
   ADOName: TField;
 public

при старте(на создании формы к примеру) программы создаем поля в нужном порядке

 ADODataSet1.Close;
 ADODat:= TDateTimeField.Create(self);
 ADODat.DisplayLabel:= 'Дата';
 ADODat.FieldName:= 'Dat';
 ADODat.DataSet:= ADODataSet1;

 ADOName:= TStringField.Create(self);
 ADOName.DisplayLabel:= 'Имя (ФИО)';
 ADOName.FieldName:= 'Name';
 ADOName.DataSet:= ADODataSet1;
 ADODataSet1.Open;

все, будет в том порядке как создали, порядок должен быть гдето описан.
после того как создано менять его элементарно (по тем 2 что создали)

 if ADOName.Index = 0 then ADOName.Index:= 1
                      else ADOName.Index:= 0;

ну и естественно сохранять этот порядок после (вместе с типом), в зависимости от индекса в полях.  

> Спасибо помогло! только вот не по гриду а по query оказся
по гриду тоже можно.


Janb   (2005-01-19 13:39:00) [7]

Спасибо помогло! только вот не по гриду а по query оказся


Соловьев   (2005-01-19 12:57:00) [8]

>смотрю дбгрид

Даблклик по гриду и удалить колумны


Janb   (2005-01-19 12:40:00) [9]

Поставил несколько компонентов query
открываю sql пишу
adoquery1.SQL.Add('select *, p8-p5 as r1, p9-p6 as r2, p10-p7 as  r3, p12-p11 as r4 from  p1');

Делаю adoquery1.active=true

смотрю дбгрид только те поля которые существуют а r1,r2.. нет


Соловьев   (2005-01-19 12:36:00) [10]

>запрос не возвращает значение с вычислениями (колонка1-колонка2 as
>к3)

запрос ??? Это одно из важным умений запроса!


Janb   (2005-01-19 12:29:00) [11]


> Соловьев ©   (19.01.05 11:10) [8]
> >В том то и дело что я использую один query и один дбгрид
> для
> >отображения нескольких таблиц. также таблица очень большая
> (много
> >колонок) второй вариант тоже не удобен.
>
> Чем это обусловлено? На чем экономим?


попробовал это метод но почему то запрос не возвращает значение с вычислениями (колонка1-колонка2 as к3) а показывает только те что физически существуют


Janb   (2005-01-19 11:21:00) [12]

А с помощью Table можно сделать такое?


Danilka   (2005-01-19 11:12:00) [13]

[7] Janb   (19.01.05 11:08)
> Для нескольких таблиц с множеством количеств полей неудобно

Очень удобно для семисот таблиц и полутора тысяч вьюх, некоторый из которых возвращают по 50-100 полей.


Соловьев   (2005-01-19 11:10:00) [14]

>В том то и дело что я использую один query и один дбгрид для
>отображения нескольких таблиц. также таблица очень большая (много
>колонок) второй вариант тоже не удобен.

Чем это обусловлено? На чем экономим?


Janb   (2005-01-19 11:08:00) [15]

sniknik ©   (19.01.05 09:06) [4]
Можно подробнее

Danilka ©   (19.01.05 09:20) [5]
Для нескольких таблиц с множеством количеств полей неудобно


Danilka   (2005-01-19 09:20:00) [16]

[4] sniknik ©   (19.01.05 09:06)
Кажись, эхлиб так умеет, ничего дописывать не надо, сам сохраняет в реестр или ини. Правда точно не уверен.


Danilka   (2005-01-19 09:19:00) [17]

[2] janb   (19.01.05 08:42)
> второй вариант тоже не удобен.

чем не удобен? один раз лениво перечислить необходимые поля (работы на полторы минуты)?
вообще, на мой взгляд, использовать * просто некрасиво и страшно. например, если в процессе работы понадобится еще одно поле добавить в таблицу, которое нужно для рассчетов, но не нужно для отображения, придется перерывать все исходники и крячить, крячить, крячить.. :))


sniknik   (2005-01-19 09:06:00) [18]

третьим можно считать переупорядочивание вручную. (то же что первый вариант но в рантайме (програмно, пишеш код на очистку/и создание полей в компонентах, упорядочиваеш, в принципе порядок можно записывать (в ini) для каждого запроса, тогда он будет настраиваемым самим юзером)


ЮЮ   (2005-01-19 08:44:00) [19]

третьего не дано


janb   (2005-01-19 08:42:00) [20]

В том то и дело что я использую один query и один дбгрид для отображения нескольких таблиц. также таблица очень большая (много колонок) второй вариант тоже не удобен.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо