Форум: "Базы";
Текущий архив: 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 работает, то можно покопать в этом направлении.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.02.07;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c