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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2009, 03:40   #1
MargoNik
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 32
По умолчанию Работа с хранимой процедурой

Здравствуйте,
никогда не работала с хранимыми процедурами, подскажите, кто знает:
в первом модуле программы создается таблица, куда польз-ль вводит список изделий. Во 2-ом модуле программы необходимо получить состав этих изделий, введенных в таблицу из 1-ого модуля. В бд есть процедура, позволяющая получить состав изделий, GET_ART_STRUCTURE. Как подключиться к этой процедуре через ADOStoredProcedure я разобралась, а что дальше? Сервер MS SQL 2005.
MargoNik вне форума Ответить с цитированием
Старый 12.05.2009, 08:00   #2
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

Что означает:
Цитата:
Сообщение от MargoNik Посмотреть сообщение
Во 2-ом модуле программы необходимо получить состав этих изделий, введенных в таблицу из 1-ого модуля.
?
Отобразить полученные данные в контролах на форме? В гриде? Или что-то другое?

Цитата:
Сообщение от MargoNik Посмотреть сообщение
В бд есть процедура, позволяющая получить состав изделий, GET_ART_STRUCTURE. Как подключиться к этой процедуре через ADOStoredProcedure я разобралась, а что дальше? Сервер MS SQL 2005.
Имхо, вместо ADOStoredProcedure лучше использовать TADODataSet для хранимок возвращающих набор данных. Для всего остального - ADOCommand.

Ну и в качестве примера:

Код:
  try
    ADODataSet1.Close;
    ADODataSet1.CommandType := cmdStoredProc;

    ADODataSet1.CommandText := 'GET_ART_STRUCTURE';
    
    // передаваемые параметры ( если они есть )

    ADODataSet1.Parameters.Refresh;
    ADODataSet1.Parameters.ParamByName( '@par1' ).Value :=  par1;
    ADODataSet1.Parameters.ParamByName( '@par2' ).Value := par2;
     ......

    ADODataSet1.Open;
  except on E:Exception do
    begin
       .....
    end;
  end;
edgy вне форума Ответить с цитированием
Старый 12.05.2009, 09:14   #3
MargoNik
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 32
По умолчанию

Цитата:
Сообщение от edgy Посмотреть сообщение
Отобразить полученные данные в контролах на форме? В гриде? Или что-то другое?
Т.е. в 1-ом модуле пользователь будет вводить список изделий, а во 2-ом необходимо по нажатию кнопки и выбору той или иной таблицы со списком изделий(которые предварительно введутся полз-ем в 1-ом модуле и будут хранится в бд) показать состав всех этих изделий в DBGrid.
MargoNik вне форума Ответить с цитированием
Старый 12.05.2009, 09:29   #4
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

И в чем проблема?
Если хранимка возвращает нужные данные, то просто связываете ADODataSet и DataSource. В свойстве DBGrid'а указываете нужный DataSource.
edgy вне форума Ответить с цитированием
Старый 13.05.2009, 06:12   #5
MargoNik
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 32
По умолчанию

Цитата:
Сообщение от edgy Посмотреть сообщение
И в чем проблема?
Если хранимка возвращает нужные данные, то просто связываете ADODataSet и DataSource. В свойстве DBGrid'а указываете нужный DataSource.
Выдает ошибку:
function 'GET_ART_STRUCTURE' expects parameter '@ProjectAID', which was not supplied.
Может нужно какие-то параметры указать?
я, наверно, неправильно объяснила - нужно, чтоб во втором модуле появлялся состав изделий только тех, которые были занесены в таблицу в первом модуле, а не вообще всех существующих изделий.
MargoNik вне форума Ответить с цитированием
Старый 13.05.2009, 06:59   #6
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

Цитата:
Сообщение от MargoNik Посмотреть сообщение
Выдает ошибку:
function 'GET_ART_STRUCTURE' expects parameter '@ProjectAID', which was not supplied.
Может нужно какие-то параметры указать?
Да, нужно передать этот параметр. Выше я уже приводил пример, как это можно сделать.

Код:
    ADODataSet1.Parameters.ParamByName( '@ProjectAID' ).Value :=  эначение параметра;
Цитата:
Сообщение от MargoNik Посмотреть сообщение
нужно, чтоб во втором модуле появлялся состав изделий только тех, которые были занесены в таблицу в первом модуле, а не вообще всех существующих изделий.
Эта логика видимо должна быть прописана в вашей хранимой процедуре, которую вы вызываете

Последний раз редактировалось edgy; 13.05.2009 в 07:37.
edgy вне форума Ответить с цитированием
Старый 13.05.2009, 07:49   #7
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

Можно было бы дать и более развернутый ответ на ваш вопрос. Но, к сожалению, я не знаю стуруктуру ваших таблиц и того, что выполняет ХП "GET_ART_STRUCTURE".
edgy вне форума Ответить с цитированием
Старый 13.05.2009, 08:14   #8
MargoNik
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 32
По умолчанию

Огромное спасибо и за это. Попробую.
Я и сама не знаю, что эта за ХП и какие у неё там параметры. Она совершенно из другой бд, мне всучили совершенно "полное описание" этой процедуры, где о её параметрах нет ни слова. Попробую разобраться.
MargoNik вне форума Ответить с цитированием
Старый 13.05.2009, 08:50   #9
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
Радость

Цитата:
Сообщение от MargoNik Посмотреть сообщение
мне всучили совершенно "полное описание" этой процедуры, где о её параметрах нет ни слова.
Ну тогда, если есть возможность, трясите автора хранимой процедуры, чтобы выдал все секреты.
edgy вне форума Ответить с цитированием
Старый 14.05.2009, 02:19   #10
MargoNik
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 32
По умолчанию

Цитата:
Сообщение от edgy Посмотреть сообщение
Ну тогда, если есть возможность, трясите автора хранимой процедуры, чтобы выдал все секреты.
Система покупная, автор в Белоруссии
Спасибо за помощь, основной принцип работы понятен, просто надо разбираться с самой процедурой.
MargoNik вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачка с процедурой Katenka Паскаль, Turbo Pascal, PascalABC.NET 5 15.12.2008 13:53
Помогите с процедурой... Arkuz Помощь студентам 10 15.05.2008 08:56
Выполнение хранимой процедуры с output параметром Иванчо БД в Delphi 5 26.10.2007 14:59
проблему возможно решить с помощью хранимой процедуры на SQL? yulia БД в Delphi 8 24.05.2007 20:25