Fórum ADOStoredProc em master detalhe com transação #347866

24/10/2007

0

Olá, estou com a seguinte dúvida estou trabalhando em um sistema que as manipulações de dados são feitas através de StoredProcedure (ADO) com SQLServer 2000.A dúvida está em um cadastro de master detalhe de Cliente e produtos, tendo um cliente, vários produtos alguém sabe se está correto?Em que posso melhorar meu código?Obrigado!


=======Delphi 7========================
procedure TFrmCadCliente.cadCliente(nome, CPF: string);
var
  i: Integer;
begin
  try
    DM.ADOConnection.BeginTrans;
    with ADOStoredProc do
    begin
      Close;
      ProcedureName := ´cadCliente´;
      Prepared := True;
      Parameters.Refresh;
      //Zerando parêmetros do ADOStoredProc
  for i := 0 to Parameters.Count - 1 do
         Parameters[i].Value := 0;
  //Alimentando parâmetros
      Parameters.ParamByName(´@nmCliente´).Value := nome;
      Parameters.ParamByName(´@CPF´).Value := CPF;
      ExecProc;
      //Caso @@Error retornar zero Executa procedure dos detalhes Produtos do cliente
      if Parameters.ParamByName(´@RETURN_VALUE´).Value = 0 then
        DM.commitTransaction;
      
    end;
  except//Em caso de algum problema na gravação do master"cliente" ou do detalhe "produto" executa o rollback
    ShowMessage(´Erro ao gravar cliente´);
    DM.ADOConnection.RollbackTrans;
  end;
end;

=========================================
=====SQL Server 2000=========================
CREATE PROCEDURE cadCliente 
@nmCliente varchar(205),
@CPF varchar(14),
@novoCodigo int output

AS
INSERT INTO CLIENTE VALUES (@nmCliente, @CPF)
SET @novoCodigo= (SELECT @@IDENTITY)
RETURN @@ERROR
GO

==========================================


Joaohenriquemf

Joaohenriquemf

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar