Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.07;
Скачать: [xml.tar.bz2];




Вниз

Как определить БД зная только название поля 


Mr.Hunter   (2002-01-09 12:14) [0]

Господа мастера!! Кто нибудь может подсказать решение вот какого вопроса: у меня на форме лежит DBGrid и Query. Могу ли я как нибудь зная название поля узнать к какой БД оно относиться!! Мне нужно сделать что то вроде, кликнул на Title в Gride (как называется поле я естес-но могу определить), и выдать к какой БД оно относиться!! С TTable все понятно, там есть TableName и проблем никаких нет,а вот в Query, может быть выполнен запрос из разных таблиц!! Как быть?? Заранее благодарен!!



GrEG   (2002-01-09 12:30) [1]

После выполнения (успешного запроса) формируется временная таблица в которой и хранятся результаты запроса. Достать имя таблицы можно через BDE.
Вот моя функция.


function TableTypeToFileExt(TableType:string):string;
begin
Result:="";
TableType:=AnsiUpperCase(TableType);
if TableType = "DBASE" then
Result:="dbf"
else
if TableType = "PARADOX" then
Result:="db"
else
if TableType = "ASCIIDRV" then
Result:="txt"
end;


function NameFromCursor(hCur:hDbiCur; var TableName:string):integer;
var
cp:CurProps;
begin
Result:=dbiGetCursorProps(hCur,cp);
if Result = DBIERR_NONE then
TableName:=string(cp.szName)+"."+TableTypeToFileExt(cp.szTableType)
else TableName:=""
end;




Turalyon   (2002-01-09 12:31) [2]

Воспользуйся методом GetFieldNames он возвращяает список TStrings и по нему ищи. т.е. Берешь отдельный Query, делаешь выборку по 1 таблице и берешь список столбцов. Ну и дальше ищешь в нем свое поле.



GrEG   (2002-01-09 12:33) [3]

Да, вызывать функцию нужно следующим образом:
NameFromCursor(MyQuery.Handle,FileName);



Mr.Hunter   (2002-01-09 12:41) [4]

FileName?? Дак в запросе может быть выполнен выборкой из разных файлов!!



Mr.Hunter   (2002-01-09 13:36) [5]

GrEG, твоя функция работает, но к сожалению это не совсем то что нужно! Она выдает имя временной БД, которую создал SQL, а мне нужно имя той таблицы к которой непосредственно принадлежит поле с определенным названием!



Виктор Щербаков   (2002-01-09 13:41) [6]

А как же вычисляемые поля? Одно такое поле может иметь отношение к нескольким полям нескольких таблиц.



AlexR_R   (2002-01-09 22:02) [7]

А потом я что-то не понял, у тебя один запрос сразу к нескольким DB. Имя DB у Query в DataBaseName

Другое дело таблицы
В принципе у полей есть проперти Origin
Которое если добавлять поля в дизайн-time заполняется тем что тебе нужно. Честно не знаю, если там что-то если поля создаются в run-time. Но видимо искать надо где-то здесь



dymka   (2002-01-10 09:17) [8]

Origin работает только при создании компонентов типа TField...
Без создания там просто пустая строка... Как в рунтайме создать поле как это делается в десигн я не знаю... просто не пробывал...
но раз в десигне дельфа это делает и Origin работает, то можно покопать в этом направлении.




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.07;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.024 c
1-18809           Муть                  2002-01-24 11:54  2002.02.07  
TRichEdit и горячие клавиши


1-18793           Tkach                 2002-01-23 18:13  2002.02.07  
OLE


14-18984          nil                   2001-12-20 12:47  2002.02.07  
Report Tool


1-18881           vlv                   2002-01-23 13:44  2002.02.07  
TListView


7-19012           T2                    2001-10-29 16:59  2002.02.07  
События Windows