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

Вниз

Щелкаю по гриду и хочу узнать к какой таблице он привязан.   Найти похожие ветки 

 
Drone   (2007-03-14 13:04) [0]

Подскажите пожалуйста,как же узнать?


 
Сергей М. ©   (2007-03-14 13:08) [1]

TSomeTableComponent(DBGrid.dataSource.DataSet).SomethingLikeTableName


 
Drone   (2007-03-14 13:13) [2]

Попробую...На всякий случай-Спасибо!


 
Drone   (2007-03-14 13:22) [3]

Дело вот в чем.Есть 3 грида.И один динамический запрос на удаление с параметрами "имя таблицы","значение поля"..Хочу чтобы запрос сам понимал,из какой таблицы я хочу удалить строку.Проблема в том чтобы достать имя таблицы к которой привязан грид по которому я щелкаю.Проясните пожалуйста...


 
Сергей М. ©   (2007-03-14 13:30) [4]


> Проясните пожалуйста...


Что в [1] не понятно ?


 
Drone   (2007-03-14 13:32) [5]

Кидать эту функцию на OnClick грида?


 
Рамиль ©   (2007-03-14 13:37) [6]


> Drone   (14.03.07 13:32) [5]

Да, будет выглядеть так
TSomeTableComponent(TDbGrid(Sender).dataSource.DataSet).SomethingLikeTableName
При условии если онклик откуда нибудь из другого места не вызывается (тогда надо предварительно проверить: Sender is TDBGrid)


 
Kolan ©   (2007-03-14 13:38) [7]

> Кидать эту функцию на OnClick грида?

Перевести в лингво Some и Something для начала..


 
S@shka ©   (2007-03-14 13:46) [8]

Позволю себе расшифровать....
)))
в случае использования IBX-компонент:

TIBTable(DBgrid1.DatoSource.Dataset).TableName

иначе вместо TIBTable и .TableName указать соответствующий класс и свойство объекта


 
Drone   (2007-03-14 13:52) [9]

Все-работает!Спасибо всем!


 
Drone   (2007-03-14 13:57) [10]

Теперь возник вопрос как в запрос кинуть параметр с именем таблицы...Знаю про методы TSession.getTableNames...Но как его использовать в связке с SQL SERVER 2K?


 
Drone   (2007-03-14 13:59) [11]

И про Format тоже не понятно...


 
Сергей М. ©   (2007-03-14 14:03) [12]


> Drone   (14.03.07 13:57) [10]


> Drone   (14.03.07 13:59) [11]


Справка - она для кого писана ?


 
Ega23 ©   (2007-03-14 14:03) [13]

А вот интересно, а что будет в случае вот такого запроса:

Select P.PersName, O.OrgName
from Persons P, Organisations O
where O.OrgID=P.OrgID

?
К какой таблице мы должны обратиться?


 
Drone   (2007-03-14 14:06) [14]

Немного не понятно что ты имеешь в виду :)


 
Сергей М. ©   (2007-03-14 14:07) [15]


> К какой таблице мы должны обратиться?
>


Что значит "должны" ?)

Что, кому и почемы "вы должны" - это вас нужно спросить, а не нас)


 
Ega23 ©   (2007-03-14 14:22) [16]


> Что значит "должны" ?)
> Что, кому и почемы "вы должны" - это вас нужно спросить,
>  а не нас)


Хорошо. К какой в таком случае таблице будет обращаться автор?
А такие выборки в сложных системах - сплошь и рядом.


 
Сергей М. ©   (2007-03-14 14:25) [17]


> Ega23 ©   (14.03.07 14:22) [16]
>
>


Как это к какой ?
Разумеется, к Persons и Organizations, коль уж скоро они фигурируют в тексте запроса ...


 
Ega23 ©   (2007-03-14 14:35) [18]


> Разумеется, к Persons и Organizations, коль уж скоро они
> фигурируют в тексте запроса ...
>


Мне не совсем понятно, как он про них узнает...


 
Drone   (2007-03-14 14:47) [19]

Я работаю с гридами,у которых один источник данных


 
Drone   (2007-03-14 14:50) [20]

Когда я формирую запрос на удаление записи из одной таблицы мне же не надо обращаться к другим :) :)


 
Ega23 ©   (2007-03-14 14:53) [21]


> Я работаю с гридами,у которых один источник данных
>


Извини меня, источник данных в моём примере тоже один. Это какой-то из потомков TDataSet.


> Когда я формирую запрос на удаление записи из одной таблицы
> мне же не надо обращаться к другим :) :)


Я тебе показал вполне чёткий пример. Не знаю, как в твоих клиентах (может ты вместо организации её ID привык клиенту показывать. Или у тебя вообще до 1НФ денормализация доведена), но в моих такие запросы - сплошь и рядом.
И потом есть ещё такие вещи, как View и Stored Procedure.


 
Reindeer Moss Eater ©   (2007-03-14 14:57) [22]

В чем проблема-то?
Юзер сам на рантайме пишет запросы?
Наверное нет.
Запросы переключает программист.
А стало быть и без всякого грида знает какая у него в данный момент таблица в гриде отображается.


 
Сергей М. ©   (2007-03-14 15:05) [23]


> Ega23 ©   (14.03.07 14:35) [18]


Простая "телепатия" (хоть и не склонен я к ней, бо дурно она пахнет зачастую) - у Автора дейтасурс ссылается на singletable-ориентированный DataSet-компонент.


 
Ega23 ©   (2007-03-14 15:08) [24]


> Простая "телепатия" (хоть и не склонен я к ней, бо дурно
> она пахнет зачастую) - у Автора дейтасурс ссылается на singletable-
> ориентированный DataSet-компонент.
>


Если так, то это надо оговаривать заранее. Если нет, то "универсализм" никогда не достижим.

Это не в твой огород, а автору на заметку.


 
Ega23 ©   (2007-03-14 15:08) [25]


> Сергей М. ©   (14.03.07 15:05) [23]


Вдогонку: это не решает проблему, когда используется view.


 
Сергей М. ©   (2007-03-14 15:13) [26]


> Ega23 ©   (14.03.07 15:08) [24]



> Если так, то это надо оговаривать заранее


Не то слово)

А то ведь Автора можно было бы сразу нахлобучить "дубиной" типа "грид как таковой НЕ обязан быть ПРИВЯЗАННЫМ чем-либо к чему-либо"


 
Drone   (2007-03-14 15:39) [27]

Согласен-все это есть.И работает.Просто ты топик не тот выбрал,так как моя задача очень специфична и можно сказать тренировочная.


 
Drone   (2007-03-14 15:46) [28]

Все началось с того,что я решил использовать одну кнопку из popupmenu,которое привязал к трем гридам, для удаления записей из каждого из них на выбор(по какому ткнул-из такого и удалил,просто подставив в запрос название таблицы).Я понимаю что когда гриды выражают поля из нескольких связанных таблиц,то задача становится сложнее-об этом и начал говорить Ega23.Теперь мне и самому интересно.


 
Reindeer Moss Eater ©   (2007-03-14 16:03) [29]

Все интереснее и интереснее.
Гридов уже трое и у каждого свой датасет.
И при этом программист не знает у кого какой датасет именно.


 
ANB ©   (2007-03-14 16:57) [30]


> И при этом программист не знает у кого какой датасет именно.

Вполне так себе ситуевина.
Кстати, как параметр имя таблицы передать нельзя, только динамически запрос формировать.

Кистате, с вьюхами все намного проще - вешаешь на нее триггер instead of и в нем делаешь что нужно, при удалении. А клиент всего лишь дает команду delete from Viewname where . . .


 
Reindeer Moss Eater ©   (2007-03-14 17:27) [31]

А без инстедоф разве не удалить?


 
Drone   (2007-03-14 17:58) [32]

Да я сделаЛ уже и динамический запрос с параметром-таблицей :)


 
Drone   (2007-03-14 18:00) [33]

2 АВN
в идеале клиент лишь вызывает хранимку которая удаляет из вьюхи,у которой срабатывает инстид триггер.


 
ANB ©   (2007-03-14 18:41) [34]


> А без инстедоф разве не удалить?

не всегда - зависит от вьюхи



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

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

Наверх




Память: 0.55 MB
Время: 0.042 c
15-1176195272
ocean
2007-04-10 12:54
2007.05.13
Visual C++ Express


2-1177312593
vitv
2007-04-23 11:16
2007.05.13
Ошибка при передаче параметра в запрос


15-1176751428
vasIZmax
2007-04-16 23:23
2007.05.13
Дети рисуют Путина)))


2-1177050341
Venja
2007-04-20 10:25
2007.05.13
Графика


2-1177342420
ppcumax
2007-04-23 19:33
2007.05.13
RichEdit