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

Вниз

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

 
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 работает, то можно покопать в этом направлении.



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

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

Наверх




Память: 0.48 MB
Время: 0.012 c
1-18872
AndrewK
2002-01-23 09:54
2002.02.07
Как правильно создать и уничтожить форму


1-18848
Eraser
2002-01-21 15:38
2002.02.07
Погибаю в пучине потоков (уже давно)


14-18961
Kirill
2001-12-13 10:32
2002.02.07
Delphi 6 не хочет закрываться


1-18921
Arb
2002-01-24 11:20
2002.02.07
Komponenty dlya postroeniya grafikov


6-18944
volodya
2001-11-14 16:33
2002.02.07
Как получить доступ по локальной сети к реестру и редактировать его