Главная страница
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.49 MB
Время: 0.013 c
3-18697
Mr.Hunter
2002-01-09 12:18
2002.02.07
Как определить имя БД , зная только название поля


6-18937
SemFLY
2001-11-17 23:37
2002.02.07
Почему NMSMTP пишет отправке Email <AuthenticationFailed> !?!?!?!


4-19019
Art
2001-12-10 17:20
2002.02.07
Ђ где взЯть справочную инфц по Api???


14-18958
fag2000@ok.ru
2001-12-17 14:57
2002.02.07
Установка MS-SQL Server


14-18955
Digitman
2001-12-17 14:39
2002.02.07
WinMe впервые доставила хлопот - нужен практический совет