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

Вниз

Как предварительно назначить именна DBGrid колонкам   Найти похожие ветки 

 
NikNet ©   (2007-01-20 20:04) [0]

програмным образом... при каждом запросе...

Вообщем мне надо автоматизировать системы наименование колонак...
Составил такой код но он работает только при наборе данных...

type
tf = record
 e:string;
 r:string;
end;

const
fnc = 10;
fn:array[1..fnc] of tf =
(
(e:"OFFICE";        r:"Îôèñ"),
( e:"CITY";         r:"Ãîðîä"),
( e:"REGION";       r:"Ðåãèîí"),
( e:"MGR";          r:"Ìàíàäæåð"),
( e:"TARGET";       r:"Âûðó÷êà"),
( e:"SALES";        r:"Çàðïëàòà"),
( e:"PRODUCTID";    r:"Íîìåð ïðîäóêòà"),
( e:"ProductName";  r:"Èìÿ ïðîäóêòà"),
( e:"CategoryID";   r:"Êàòåãîðèÿ"),
( e:"SupplierID";   r:"Îòêðûò/Çàêðûò")
);

procedure TForm1.Button2Click(Sender: TObject);
var
 k,i: Integer;
 F: TFieldDef;
begin
 ADOQuery1.Open;
 ListBox1.Items.Clear;
 with ADOQuery1 do
 begin
   for i := 0 to FieldDefs.Count - 1 do
   begin
     F := FieldDefs.Items[i];
     DBGridEh6.Columns.Add;
     DBGridEh6.Columns[i].FieldName:=F.Name;
     for k:=1 to fnc do
     Begin
       if UpperCase(trim(fn[k].e))=UpperCase(trim(F.Name)) then
       DBGridEh6.Columns[i].Title.Caption:=fn[k].r;
     end;
   end;
 end;
ADOQuery1.Open;
end;


 
Desdechado ©   (2007-01-20 20:51) [1]

> Составил такой код но он работает только при наборе данных
Не понял. Тебе нужны колонки без данных?


 
NikNet ©   (2007-01-20 21:28) [2]

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


 
Johnmen ©   (2007-01-20 22:20) [3]

Ну в целом ты правильно делаешь. В чём проблема то?


 
sniknik ©   (2007-01-20 22:29) [4]

> Ну в целом ты правильно делаешь.
неправильно. он решает свою "заморочку" и спрашивает про нее, а не про то что нужно на самом деле.

> Нет мне надо предварительно найменовать колонки то есть ...
ну и? почему бы на спрашивать именно про это? нет, можно конечно и через предварительное создание полей, или в дбгриде колонки... но... решение -
procedure TForm1.Button1Click(Sender: TObject);
begin
 ADODataSet1.Open;
 ADODataSet1.Fields[0].DisplayLabel:= "fddfsdf";
end;

остальное думаю несложно домыслить.


 
Sergey Masloff   (2007-01-20 22:46) [5]

select one as "раз", two as "два" from my_dummy_table


 
Johnmen ©   (2007-01-20 23:15) [6]


> sniknik ©   (20.01.07 22:29) [4]


"в целом" относилось к обходу всех колонок и смене имён на соответствующие из массива.


 
sniknik ©   (2007-01-21 00:51) [7]

> "в целом" относилось к ...
эт я понял, у меня тоже в "целом" немного про другое. хотя... и там неправильно ;), он же их создает... дубли уже получается.


 
MsGuns ©   (2007-01-21 01:10) [8]

Неверен сам подход. Грид сам прекрасно умеет создавать свою коллекцию колонок при связке его с открытым датасетом и не надо без крайней нужды мешать ему ;)

"Русские" имена можно получить из дескрипторов полей в самой БД (какая БД не указана, но такая возможность есть в большинстве СУБД) либо "сделать" их в самом запросе по такой "рыбе":

Select FIO as "ФИО", Burned as "Дата рожд." ...

Ну и, наконец, можно переобозвать колонки чисто "клиентским" способом, как было указано выше, просто пробежавшись по филдам связанного с гридом датасета и для каждого определив "по-русски" сво-во DisplayLabel.


 
NikNet ©   (2007-01-21 09:27) [9]

СУБД Sybase

Мои подход прекрасно работает но не с первого раза!
То есть при первом запуске я получаю именна на англиском (оригинальные)
при втором я перейменовую...

Но! Два одних и тех же запросов запускать это глуппо
вот я и спрашиваю где взять именна всех столбцов... без запроса...

Может пустой запрос для начало запустить...? Что бы получить именна полей


 
sniknik ©   (2007-01-21 11:17) [10]

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

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


 
NikNet ©   (2007-01-21 15:17) [11]

MsGuns ©   (21.01.07 01:10) [8]
А как добраться до Дескрипта?


 
Anatoly Podgoretsky ©   (2007-01-21 17:18) [12]

Куда тебя Arazel занесло.


 
MsGuns ©   (2007-01-21 20:07) [13]

>NikNet ©   (21.01.07 15:17) [11]
>А как добраться до Дескрипта?

Из анкеты:

Интересное о себе
Очень красивый
Пользуюсь успехом Девчонок (Лет от 14 - 27)  
Очень хорошо знаю программирование

НУ да короче хватит и этого!


Если такой красивый, зачем пошел в программисты ?
А если такой хороший программист, то зачем ламерские вопросы задаешь ?

Короче, хватит и [8]
Если не хватит, спроси у девчонок от 14 до 27

ЗЫ. Кстати, и вовсе неинтересно
;)


 
sniknik ©   (2007-01-21 20:49) [14]

MsGuns ©   (21.01.07 20:07) [13]
> Пользуюсь успехом Девчонок (Лет от 14 - 27)  
завидно? ;о))
оно конечно, надо тогда в брачные аферисты идти... делать, так сказать то, что получается. хотя, судя по следующему, про программирование... парень скорее в обоих случаях выдает желаемое за действительное.


 
Павел Калугин ©   (2007-01-21 22:28) [15]

> [9] NikNet ©   (21.01.07 09:27)
> СУБД Sybase

какой Sybase???
он разный, однако...


 
delphim   (2007-01-22 05:29) [16]

Если я правильно понял, требуется визуализировать активный набор данных (DataSet) с помощью grid.
Тогда, может быть, так.
1. Где-то должен существовать ожидаемый список имён полей DataSet (пусть его имя fieldList).
2. Пишем цикл по этому набору fieldList

 for ...

   fieldname := fieldList.fieldName[i];
   if DataSet.FindField(fieldname) = nil then continue;

   col := grid.Columns.Add;
   col.FieldName := fieldname;
   col.Title.Caption := ...
// и, далее. при желании, по списку
// Width, EditMask, ReadOnly, ...
 end;


 
MsGuns ©   (2007-01-22 10:55) [17]

>sniknik ©   (21.01.07 20:49) [14]
>завидно? ;о))

Не-а

>delphim   (22.01.07 05:29) [16]

Не надо советовать глупостей


 
Sergey13 ©   (2007-01-22 11:21) [18]

ИМХО, целесообразнее хранить названия полей в отдельной таблице (имя таблицы, оригинальное название, русское название).



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

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

Наверх




Память: 0.52 MB
Время: 0.041 c
4-1159431891
dima_shapkin
2006-09-28 12:24
2007.02.11
Системные иконки


15-1169492223
Chort
2007-01-22 21:57
2007.02.11
Учебник 3Ds Max 6


15-1168979975
DevilDevil
2007-01-16 23:39
2007.02.11
Отказаться от обновления Рамблеровской Аськи?


15-1169277534
lookin
2007-01-20 10:18
2007.02.11
Верх удовольствия от утреннего просмотра "Ивана Васильевича"...


3-1163760861
s_t_d
2006-11-17 13:54
2007.02.11
Можно ли исп. экспоненту и логарифм в языке ХП FB 1.5