![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как значения запросы правильно расположить в ДБГРИДЕ? [D6, MySQL]
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 и один дбгрид для отображения нескольких таблиц. также таблица очень большая (много колонок) второй вариант тоже не удобен.