Fórum Ajuda com stored procedure #278444
22/04/2005
0
Estou fazendo a inclusão de registros via stored procedure. Consigo fazer a inclusão mas não consigo mostrar o código gerado. Tenho uma tela de cadastro, onde o usuário preenche todos os campos, menos o código. Depois que o post é dado, ele teria a stored procedure retorna o código mas ele não é mostrado na DBEdit.
procedure TdtmPrincipal.qryClienteBeforePost(DataSet: TDataSet); begin if dtsCliente.State in [dsInsert] then begin AjustaParametrosSTP(stpInsereCliente, qryCliente); stpInsereCliente.ExecProc; if stpInsereCliente.Parameters.ParamByName(´@RETURN_VALUE´).Value <> 0 then begin MessageDlg(stpInsereCliente.Parameters.ParamByName(´@MsgErro´).Value, mtInformation, mbOKCancel, 0); Abort; end else begin qryCliente.FieldByName(´Codigo´).ReadOnly := False; qryCliente.FieldByName(´Codigo´).Value := stpInsereCliente.Parameters.ParamByName(´@IdCliente´).Value; qryCliente.FieldByName(´Credito´).Value := stpInsereCliente.Parameters.ParamByName(´@Credito´).Value; qryCliente.FieldByName(´Bonus´).Value := stpInsereCliente.Parameters.ParamByName(´@Bonus´).Value; qryCliente.FieldByName(´Data_Cadastro´).Value := stpInsereCliente.Parameters.ParamByName(´@Data_Cadastro´).Value; qryCliente.FieldByName(´Codigo´).ReadOnly := True; end; end; end;
Esse é o trecho de código onde eu faço a inserção. Todos os campos de retorno são mostrados, exceto o Codigo.
O que pode estar errado ?
Rjun
Curtir tópico
+ 0Posts
22/04/2005
Rjun
Gostei + 0
25/04/2005
Rjun
Gostei + 0
26/04/2005
Ronaldo.cutu
ok
Ronaldo
Gostei + 0
21/05/2005
Rjun
Gostei + 0
21/05/2005
Ronaldo.cutu
Gostei + 0
23/05/2005
Rjun
Gostei + 0
23/05/2005
Ronaldo.cutu
after[/b:987914d16e], tente e post aqui
at
Ronaldo
Gostei + 0
23/05/2005
Rjun
Gostei + 0
23/05/2005
Ronaldo.cutu
Gostei + 0
23/05/2005
Rjun
Se alguem puder fazer um teste, seria mais ou menos assim.
Uma tabela simples, com codigo e nome. Sendo o codigo um inteiro auto incrementavel.
Uma query para exibir os dados (Select Codigo, Nome From Tabela), com a propriedade LockType setada para ltBacthOptimistic.
No evento before post da query, fica o seguinte codigo :
stpInsere.Parameters.ParamByName(´@Nome´).Value := qryCidade.FieldByName(´Nome´).Value; stpInsere.ExecProc; qryCidade.FieldByName(´Codigo´).ReadOnly := false; qryCidade.FieldByName(´Codigo´).Value := stpInsere.Parameters.ParamByName(´@ID´).Value; qryCidade.FieldByName(´Codigo´).ReadOnly := true;
E a stored procedure tem o seguinte código:
create procedure InsereCidade @Nome varchar(50), @ID int OUTPUT as insert into Cidade (Nome) values (@Nome) set @ID = @@IDENTITY return(0) go
O banco é MSSQL. No Delphi 7 utilizo ADO pra acessar os dados.
Gostei + 0
23/05/2005
Rjun
Gostei + 0
24/05/2005
Rjun
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)