Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.09.11;
Скачать: CL | DM;

Вниз

Сделать нормальной ширину колонки в DBGRID   Найти похожие ветки 

 
Очень злой   (2011-05-28 12:14) [0]

при использовании запросов типа
select field1, sum(field2) ...
поля, где используются агрегатные функции неприятно выглядят в дбгриде (т.е. растягиваются на огромную ширину.)
как этого избежать попроще?

Заранее установить какие поля отображать и ширину каждого из них непододит ибо используется много разных селектов с различным набором полей...

Нет ли какого-нить простого способа сделать так, чтобы ДБгрид устанавливал ширину колонок такой, какая требуется для отображения данных независимо от того какую выборку ему придется отображать?


 
Очень злой   (2011-05-28 12:22) [1]

проблема, как я понял заключается в том, что у датасета в таких полях DisplayWidth=256


 
sniknik ©   (2011-05-28 12:28) [2]

ну так поменяй его после запроса (афтеропен).


 
Очень злой   (2011-05-28 13:16) [3]

Поменять, поменял...


...
with Dataset do
   begin
   Close;
   CommandText:=SqlText;
   Parameters.ParamByName("bd").DataType:=ftDateTime;
   Parameters.ParamByName("ed").DataType:=ftDateTime;
   Parameters.ParamByName("bd").Value:=trunc(DTPbegin.DateTime);
   Parameters.ParamByName("ed").Value:=trunc(DTPEnd.DateTime);
   Open;
   for i:=0 to FieldCount-1 do if Fields[i].DisplayWidth=256 then fields[i].DisplayWidth:=15;
   end;
...


И естественно оно работает. Но...

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


 
sniknik ©   (2011-05-28 14:03) [4]

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


 
Очень злой   (2011-05-28 16:35) [5]

Provider=OraOLEDB.Oracle.1 (родной оракловый от 9і)
и на что его поменять?
на Provider=MSDAORA.1 разве что... Не уверен, что это что-то даст? Хотя честно говоря не пробовал...


 
KSergey ©   (2011-05-28 17:06) [6]

У меня есть какое-то смутное воспоминание, что если у грида изначально задать колонки и установить ширину их отличную от дефолтной - то ширина столбцов уже остается постоянной.
Может в эту сторону посмотреть?


 
Игорь Шевченко ©   (2011-05-28 20:15) [7]

CAST (expr AS VARCHAR2(нужная ширина)) в запросе ?


 
sniknik ©   (2011-05-28 20:21) [8]

> CAST (expr AS VARCHAR2(нужная ширина)) в запросе ?
он говорит у него число - "sum(field2)", а не строка.


 
sniknik ©   (2011-05-28 20:23) [9]

понимаю, можно и число привести к строке, но разве у чисел бывает такая размерность?


 
Игорь Шевченко ©   (2011-05-28 21:02) [10]

sniknik ©   (28.05.11 20:21) [8]

Не могу поверить, чтобы числовые поля имели по умолчанию ширину 256.

http://download.oracle.com/docs/cd/B19306_01/server.102/b14220/datatype.htm#i16209

Или автор не договаривает или одно из двух.


 
sniknik ©   (2011-05-28 21:36) [11]

в том то и дело. в аксесс есть варианты, привел ([4]) когда бывает увеличенный размер строк, ну там все понятно, а если подобное у чисел... где то проблема/кривизна.


 
Игорь Шевченко ©   (2011-05-28 21:49) [12]


> в аксесс есть варианты, привел ([4])


и в oracle точно так же есть


 
Очень злой   (2011-05-29 23:15) [13]


> sniknik ©   (28.05.11 21:36) [11]
>
> в том то и дело. в аксесс есть варианты, привел ([4]) когда
> бывает увеличенный размер строк, ну там все понятно, а если
> подобное у чисел... где то проблема/кривизна.


Да я не претендую на отсутствие кривизны... Но дело в том что код там простейший, и я его привел.
Из того что не привел, так это то, что dataset:TADODataSet
Но это и так вроде как ясно.


> KSergey ©   (28.05.11 17:06) [6]
>
> У меня есть какое-то смутное воспоминание, что если у грида
> изначально задать колонки и установить ширину их отличную
> от дефолтной - то ширина столбцов уже остается постоянной.
>
> Может в эту сторону посмотреть?


Есть такое... Но в гриде не хочется явно задавать колонки, ибо в одном гриде отображаются разные выборки, с разным числом полей и разными типами полей... Т.е. придется для каждого запроса задавать свои наборы колонок для грида...


> Игорь Шевченко ©   (28.05.11 20:15) [7]
>
> CAST (expr AS VARCHAR2(нужная ширина)) в запросе ?


Завтра попробую так... Вернее подобным образом...


 
sniknik ©   (2011-05-30 00:05) [14]

> Да я не претендую на отсутствие кривизны...
тогда почему не исправишь? зачем "залечки"?

> Но дело в том что код там простейший, и я его привел.
приведенное
select field1, sum(field2) ...
не дает широких строк... вернее, я знаю, в аксесс не дает (в mssql и вычисления строк не дают, правильней там длинны считаются), Игорь говорит и оракл тоже...
хотя я бы на пробу поменял провайдера, посмотреть. мало ли, может в нем дело, а Игорь пользуется другим.


 
KSergey ©   (2011-05-30 14:08) [15]

> Очень злой   (29.05.11 23:15) [13]
> Есть такое... Но в гриде не хочется явно задавать колонки,
>  ибо в одном гриде отображаются разные выборки, с разным
> числом полей и разными типами полей... Т.е. придется для
> каждого запроса задавать свои наборы колонок для грида..

Я не знаю что за приложение, но сильно подозреваю, что завтра пользователь захочет настраивать ширины колонок "под себя как удобно" и чтобы они сохранялись между сеансами работы программы.
Есть смысл заранее это уже сделать и радоваться :)


 
Игорь Шевченко ©   (2011-05-30 17:36) [16]

sniknik ©   (30.05.11 00:05) [14]

Игорь вообще провайдером не пользуется. За ненадобностью.



Страницы: 1 вся ветка

Текущий архив: 2011.09.11;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.009 c
15-1305627810
Den
2011-05-17 14:23
2011.09.11
SQL запрос


2-1306344649
xozain
2011-05-25 21:30
2011.09.11
Работа с ТХТ


15-1306158593
Leon-Z
2011-05-23 17:49
2011.09.11
Зачем программисту несколько мониторов?


6-1235892446
Vladimir
2009-03-01 10:27
2011.09.11
TSocketClient и TSocketServer работа с потоками


2-1306447304
barsik
2011-05-27 02:01
2011.09.11
Как подключить ClientSocket к ServerSocket через шлюз?