Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование в Delphi хранимой процедуры SQL 
:(
    Опции темы
anya87
  Дата 9.6.2007, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 9.6.2007

Репутация: нет
Всего: нет



Создала хранимую процедуру на SQL сервере. Кто знает полный алгоритм подключения через компонент ADOStoredProcedure к необходимой процедуре на Delphi? И какой код программы (можно на каком-нибудь примере)? Ещё при подключении через этот компонент возникает ошибка вроде: Stored Procedure ecpected parameter @Kat (в моём случае). Что это за ошибка и как её исправить?!! 
Параметры задала в программе, синтаксис самой процедуры правильный...  smile 

PM MAIL   Вверх
ils
Дата 9.6.2007, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 8.9.2006
Где: Москва

Репутация: нет
Всего: нет



Примерно так

Код

var
  sp: TADOStoredProc;
begin
  sp := TADOStoredProc.Create(nil);
  try
    sp.Connection := MyConnection; // Настроенное соединение
    sp.ProcedureName := StoredProcName;

    sp.Parameters.ParamByName('@param1').Value := 'Значение параметра';
    sp.Parameters.ParamByName('@param2').Value := null;
// и т.д.

    sp.Open; // или sp.Exec если не возвращается набор данных

// тут обрабатываем данные
  finally
    sp.Free;
  end
end;

PM MAIL ICQ   Вверх
Medved
Дата 14.9.2009, 07:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 1
Всего: 154



Код не рабочий. 


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Frees
Дата 14.9.2009, 07:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



Цитата(Medved @  14.9.2009,  10:10 Найти цитируемый пост)
Код не рабочий. 

голословен!

какая ошибка? что не так делается?


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Medved
Дата 14.9.2009, 08:13 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 1
Всего: 154



Цитата(Frees @  14.9.2009,  10:27 Найти цитируемый пост)
голословен!

какая ошибка? что не так делается? 


А ты соседнюю тему почитай, там я написал почему: Delphi 7 использование хранимых процедур, программно

В этом коде объект TADOStoredProc  создается программно:
Код

var
  sp: TADOStoredProc;
begin
  sp := TADOStoredProc.Create(nil);


А используется этот экземпляр объекта, так, как будто-бы он создан в режиме Design Mode, т.е. когда компонент TADOStoredProc  добавлен на форму. 
Код

sp.Parameters.ParamByName('@param1').Value := 'Значение параметра';


Метод ParamByName применяется только к уже ранее созданным параметрам (программно, или мышкой). Ну оно и понятно. Логично, что к параметру можно обратиться только к тому, который существует. 

На этапе компиляции данная ошибка не обнаруживается. Если скомпилировать и запустить этот код, то при выполнении его, Delphi ругается на то что такого параметра не существует.

Чтобы программно использовать TADOStoredProc, необходимо вручную задавать параметры, например так:
Код

with ADOStoredProc1.AddParameter do begin
  Name := 'NameParam1';
  DataType := ftString;
  Direction := pdInput;
  Size := 50;
  Value := 'Значение1';
end;
    


или так:

Код

ADOStoredProc1.CreateParameter('NameParam1', ftString, pdInput, 50, 'Значение1');



Это сообщение отредактировал(а) Medved - 14.9.2009, 08:28


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1184 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.