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

Вниз

Подскажите можно ли из DBGrid-а узнать какую таблицу он отражает?   Найти похожие ветки 

 
Lamer666   (2007-01-08 01:53) [0]

ПРИВЕТ НАРОД! ВСЕМ РЕСПЕКТ!!!
Подскажите можно ли из DBGrid-а узнать какую таблицу он отражает?
ADOConnection->ADOQuery->DataSourese->DBGrid


 
sniknik ©   (2007-01-08 01:59) [1]

через раз, чаще всего нельзя, хотябы попросту потому, что отображается view или процедура, или вообще не связанный с базой рекордсет.


 
Lamer666   (2007-01-08 02:02) [2]

А из Query который поставляет данный в DBGrid?


 
Германн ©   (2007-01-08 02:07) [3]


> Lamer666   (08.01.07 02:02) [2]
>
> А из Query который поставляет данный в DBGrid?
>

А что Query всегда связан с одной таблицей?


 
sniknik ©   (2007-01-08 02:10) [4]

а какая разница? запрос он и есть запрос, и он только в крайне малом количестве случаев прямое отражение таблицы.
гарантировано только для ADO в случае с типом команды = cmdTable/cmdDirectTable можно узнать.


 
Lamer666   (2007-01-08 02:14) [5]


> А что Query всегда связан с одной таблицей?

Логично!!!!


 
Lamer666   (2007-01-08 02:15) [6]

Ну ХОРОШО, натом СПАСИБО!


 
MsGuns ©   (2007-01-08 16:45) [7]

Можно узнать КАКИМ ОБРАЗОМ получен датасет, проанализировав TDBGrid.DataSource.DataSet.
Для этого нужно сначала определить какого он класса (используя св-во ClassType или ClassName).
Если это TXXTable, то, в зависимости от типа компоненты доступа, можно "вытащить" и имя таблицы.
Если не TXXTable, то "вытащить" текст запроса (св-во SQL, CommandText или другие).
Затем полученный текст просканировать в поисках того, что стоит за Select  From. Если запрос простой, то, как правило, то, что стоит за выражением From до первого пробела и есть имя таблицы (таблиц) или ХП(функции, представления и т.д.).
Далее просто. Полученное имя ищем среди списка таблиц БД, котороый легко получить. Если нашли, то это и есть та самая таблица

Хотя, в общем случае, это сделать весьма затруднительно, иногда невозможно. Да и не нужно это.
Есть предположение, что ы хотите написать некоторый универсальный код, который сможет работать с любым НД и которому передается не датасет, а собственно грид.
В этом случае Вам не нужно знать имя таблицы. Достаточно иметь лишь указатель на датасет для того, чтобы управлять им (поиски, сортировки, фильтры и т.д.)


 
Lamer666   (2007-01-08 19:52) [8]

ТАК И СДЕЛАЛ, УВАЖАЕМЫЙ!!!! РЕСПЕКТ!



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

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

Наверх




Память: 0.48 MB
Время: 0.049 c
2-1173110211
pasha star
2007-03-05 18:56
2007.04.01
RichEdit add lines down


15-1173428362
Ega23
2007-03-09 11:19
2007.04.01
Коллеги, подскажите, как работают UPS-ы (не APC)?


2-1173854080
JohnKorsh
2007-03-14 09:34
2007.04.01
Ищу RxLib для D7.


4-1163515236
Max_2006
2006-11-14 17:40
2007.04.01
Вывести bmp-рисунок на окно на API


15-1173602438
$Pl@Sh
2007-03-11 11:40
2007.04.01
Где скачать?