Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.007 c
1-18802
olegd
2002-01-24 14:59
2002.02.07
Ресурсы


1-18890
well
2002-01-23 17:04
2002.02.07
TreeViev


3-18778
Alex Ignatenko
2002-01-14 13:55
2002.02.07
MS SQL Server 2000 и каскадное удаление


7-19007
Art
2001-11-04 13:45
2002.02.07
Как узнать S/N дискетки и флопи диска?


1-18885
AndrewK
2002-01-23 14:49
2002.02.07
Как в ComboBox занести два значения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский