![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Получить имя таблицы для поля в DBGrid [D4, D5, D6, D7, IB4.x, IB5.x, IB6.x, MSSQL, MySQL, dBase, FoxPro, Paradox]
sergvc © (2004-01-28 14:02:00)
Подскажите пожалуйста, как можно определить название таблицы для поля TField в Grid или DataSet?
sergvc (2004-01-29 12:15:00) [1]
Наверное TADODataSet должен знать имя таблицы, потому, что он может обновлять данные, переданные через хранимую процедуру, в разных таблицах, использую предположения. Т.е. если в хранимой процедуре используется запрос вида
SELECT T1.Field1,T2.Field2 FROM Table1 T1,Table2 T2 WHERE Table1.ID = Table2.ID
а потом в DBGrid обновить поле Field2, то изменится именно поле Field2 в таблице Table2.
Sandman25 (2004-01-29 12:06:00) [2]
[11] Reindeer Moss Eater © (28.01.04 17:18)
Понятно.
[12] sergvc (29.01.04 12:02)
Сделайте
SELECT T1.Field1 T1_Field1, T2.Field2 T2_Field2 FROM Table1 T1,Table2 T2 WHERE Table1.ID = Table2.ID
Тогда из названия поля (в Query) можно будет вытащить имя таблицы.
sergvc (2004-01-29 12:02:00) [3]
Объсню: DbGrid заполняется даннымииз DataSet, который получает данные из хранимой процедуры.
Хранимая процедура имеет запрос вида:
SELECT T1.Field1,T2.Field2 FROM Table1 T1,Table2 T2 WHERE Table1.ID = Table2.ID
Теперь, когда я вызываю событие OnCellClick в DBGrid я хочу вызвать форму и в этой форме показать все записи из Table2.
Для этого мне надо знать имя таблицы, соответствующее полю, на котором я кликнул мышкой.
Reindeer Moss Eater (2004-01-28 17:18:00) [4]
Я про префиксирование имен физических полей у физических таблиц в физической БД.
Впрочем не только полей, а любых объектов.
Sandman25 (2004-01-28 17:09:00) [5]
[8] Nikolay M. © (28.01.04 17:07)
Я понимаю :)
Sandman25 (2004-01-28 17:08:00) [6]
[7] Reindeer Moss Eater © (28.01.04 17:04)
Вы про create table ta_mytable ( ta_id INT, ta_descr CHAR(60)) или про select a.field101, b.field507 from a,b
или про select a.field101 a_field101, b.field507 b_field507 from a,b?
Nikolay M. (2004-01-28 17:07:00) [7]
> Sandman25 © (28.01.04 17:01) [6]
> Если бы можно было автоматически определять, вряд ли было
> бы создано событие OnGetTableName у TDataSetProvider.
Оно не для селектов, а для апдейтов и инсертов.
Reindeer Moss Eater (2004-01-28 17:04:00) [8]
Интересно.
Для чего нужно вычислять имя таблицы из которой получено поле?
Что бы сформировать лету UpdateSQL для сформированного на лету SQL?
Вот когда понимаешь, зачем советуют имена полей в таблицах префиксировать именем таблицы.
Sandman25 (2004-01-28 17:01:00) [9]
Если бы можно было автоматически определять, вряд ли было бы создано событие OnGetTableName у TDataSetProvider.
Sandman25 (2004-01-28 16:59:00) [10]
Возможно. Я никогда не использовал.
Reindeer Moss Eater (2004-01-28 16:51:00) [11]
Он кажется только у экземпляров созданных в design time присутствует.
Sandman25 (2004-01-28 16:44:00) [12]
Origin
sergvc (2004-01-28 16:07:00) [13]
А если этот DataSet построен с помощью составного запроса Select * from Table1,Table2?
Reindeer Moss Eater (2004-01-28 14:03:00) [14]
TTable(MyField.DataSet).TableName