Текущий архив: 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.49 MB
Время: 0.044 c