Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2007, 16:11   #1
MoGiLsHiKK
Новичок
Джуниор
 
Регистрация: 09.08.2007
Сообщений: 1
По умолчанию Многотабличные запросы! (модификация данных). MSSQL +Delphi

Здраствуйте, подскажите пожалуйста, как модифицировать данные, полученные с помощью многотабличного запроса , если структура запроса (и самой БД) неизвестна ?
Сейчас, алгоритм работы примерно такой:

1) Получаю список всех пользовательских обьектов БД
2) пользователь выбирает нужный обьект из списка
3) в зависимости от типа (представление, таблица, хр. п) выполняю следующее : а) Если -таблица, просто открываю ее б) Если-представление без параметров, открываю как таблицу, если с параметрами, то прошу пользователя заполнить эти параметры в)примерно также с х.п.
4) Далее пользватель выбирает,что делать с полученной "recordSet" (добавить,изменить, удалить, поиск по , фильтр)
5) Если пользователь пытается работать с данными полученными через представление (view),построенное на нескольких таблицах, начинаются проблемы. Так как заранее не известно сколько таблиц , какие поля и какая схема данных используется. Например в книге Е.Мамаева "MSSQL SERVER 2000" написано так :"если нужно изменить данные во всех столбцах представления, построенного на основании четырех таблиц, то такую операцию нужно будет разбить на четыре этапа ". Я пытаюсь сделать так как написано, но все время натыкаюсь на разные грабли. Кол-во таблиц и полей в запросе я определяю так :

IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = '##TempTable')
DROP TABLE ##TempTable
CREATE TABLE ##TempTable
( [name] varchar(128),
type varchar(128),
updated varchar(128),
selected varchar(128),
[column] varchar(128)
)
insert ##tempTable execute SP_depends '[Имя обьекта]'
select [name],[column] from ##TempTable order by [name]

drop table ##TempTable

Но как с полученными данными работать дальше я не знаю.
Заранее спасибо!
P.S. если не понятно о чем я, спрашивайте попробую обьяснить получше.
MoGiLsHiKK вне форума Ответить с цитированием
Старый 25.12.2007, 16:21   #2
Domovoy
Форумчанин
 
Регистрация: 24.10.2007
Сообщений: 254
По умолчанию

Используя SP_depends '[Имя объекта]' ты узнаешь какие таблицы завязаны на выборке(view). В данном случае нужно на клиенте в момент так называемой имитации DML процедур "ручками" вносить изменения в те или иные таблички. Ну и гемарой же это!!!
Domovoy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL - запросы в Delphi zetrix БД в Delphi 41 08.06.2010 14:07
Запросы SQL в Delphi antoni БД в Delphi 13 02.09.2008 00:53
MsSql-Запросы Diamand SQL, базы данных 4 18.06.2008 06:30