Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по MS SQL для профессионалов! [D5, MSSQL]


Мазут Береговой ©   (2002-11-13 00:35:00) 

Хлопцi!
Такая проблема.
Написал программу, которая работает с базой данных используя stored procedures. Причем, на рабочем десктопе она работает исключительно. На рабочем десктопе(windows2000 pro) имеется своя база. Когда создаю соединение к серверу(windows2000 server), то перестает работать одна из stored procedure, которая получает два параметра и пишет в одно из полей кое-какие данные. Вот Код

ADOSP := TADOStoredProc.Create(Self);
ADOSP.ConnectionString:=EConnectionString.Text;
ADOSP.ProcedureName := "P_##_Create_Login";
ADOSP.Parameters.Refresh;
try
ADOSP.Close;
ADOSP.Parameters[1].Value := Account;
ADOSP.Parameters[2].Value := Pref;
ADOSP.ExecProc;
finally
ADOSP.Destroy;
end;


Как только дохожу до строчки ADOSP.Parameters[1].Value := Account;, то получаю ошибку List index out of bounds(1)
Получается, что нехватает каких-то прав для логина, раз она не может вернуть кол-во параметров. Тогда вопрос: какими особенными своийствами должен обладать логин (и каких их создать) для удаленного компьютера, чтобы иметь правильный доступ в базу.
Думаю, что это вопрос к администраторам.
Спасибо.


Юрий   (2002-11-13 04:02:00) [1]

Вообще-то ADOSP.Parameters.Refresh убрать нельзя. Сначала я пробовал без этой строчки и тогда программа не знала ничего про параметры. А как только поставил - все заработало.

Я УЖЕ НАШЕЛ В ЧЕМ ПРИЧИНА - Я ПРОСТО ЗАБЫЛ ДОБАВИТЬЭТУ STORED PROCEDURE В БАЗУ СЕРВЕРА. ИХ ОКОЛО 20 ШТУК ТАМ. СРАЗУ И НЕ ЗАМЕТИЛ. ТАК ЧТО, ИЗВИНИТЕ ЗА БЕСПОКОЙСТВО.

СПАСИБО БОЛЬШОЕ ВСЕМ.


kaif   (2002-11-13 03:34:00) [2]

А нельзя просто убрать
ADOSP.Parameters.Refresh;
?
Я не знаток ADO, Но обычные TStoredProc погут хранить 2 параметра persistent. Создай 2 параметра persistent и присваивай им значения. Или просто добавь их в список параметров runtime (есть же такие методы), если нужно обязательно создавать компонент runtime. Мне кажется, что если тип и кол-во параметров заранее известно и постоянно, то можно хотя бы попытаться пойти этим путем.


Наверх

Титульная страница Поиск, карта сайта Написать письмо