Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

SQL+Deplhi+ADO

Rusta Starkov Профи (573), на голосовании 14 лет назад
SQL 2000 Server
Усть хранимая процедура Pass_upd
CREATE PROCEDURE Pass_UPD
@worker_surnamevarchar(50),
@password varchar(50)
AS
UPDATE worker SET password=@password WHERE worker_surname=@worker_surname
GO

На форме combobox и maskedit, ADOconnection, ado query & adostoredproc. В свойствах adostoredproc задано adoconnection и хранимая процедура.
Данные на сервак передаю следующим образом:

procedure TAdm_ChangePass.Button1Click(Sender: TObject);
var k: integer;
s: string;
begin
Try
ADOConnection1.BeginTrans;
with DM.ADOStoredProc1 do
begin
k:=Combobox1.ItemIndex;
s:=Combobox1.Items.Strings[k];
Parameters.ParambyName('@worker_surname').Value:=s;
Parameters.ParamByName('@password').Value:=MaskEdit1.Text;
end;
ADOStoredProc1.ExecProc;
ADOConnection1.CommitTrans;
Except
ADOConnection1.RollbackTrans;
ShowMessage('Невозможно выполнить. Повторите.');
end;

Когда пытаюсь активировать adostoredproc то в ответ получаю ругань adostoredproc1 command text does not return a result set.
Что не так?
Голосование за лучший ответ
Сергей Токмаков Мыслитель (6852) 14 лет назад
Делфи на данный момент не изучен, но из выдаваемой ошибки видно что какая то команда не правильно написана и эта переменная не возвращает ни какого результата, то есть ей ни чего не присваивается, если я правильно понял
Сизов Максим Мудрец (18743) 14 лет назад
Все верно. С какого это перепоя update возвращает датасет, просто из из SQL вызвать никак нельзя ?
Вообще явно списано с методички "как нельзя проектировать базы данных". И учите наконец английский - вопрос очень тупой.
Rusta StarkovПрофи (573) 14 лет назад
напиши тогда как нужно вместо того чтобы обострать
Сизов Максим Мудрец (18743) Тогда ты навсегда останешься недоученным. Тут нужен AdoCommand + строка SQL "UPDATE worker SET password="+password+" WHERE worker_surname="+worker_surname; и всё, где password и worker_name - простые переменные. Хранимки применяют при сложных запросах тут одна строчка обновляется - они не нужены.
Павел Мастяев Мастер (1235) 14 лет назад
Parameters.ParambyName('@worker_surname').Value:=s;
просто так не вытянешь переменную.. . лучше делай всё через ADOQuery
Rusta StarkovПрофи (573) 14 лет назад
а у меня и так все работает не плохо.
Похожие вопросы