Proc. Nao funciona com ADO só com BDE

21/09/2005

0

Galera, tenho a Procedure Abaixo no SQL Server:

Create proc sp_ProxNumero3(@Campo varchar(20), @ProxNumero varchar(20) OUTPUT) AS --10:14
DECLARE @AnoStr char(4)
DECLARE @Num varchar(20)
DECLARE @n int
DECLARE @UltValor float
DECLARE @Ano smallint
DECLARE @TamCampo tinyint
DECLARE @UsaAno char(1)
DECLARE @ResultStr varchar(20)
DECLARE @AnoAtual smallint
SELECT @AnoAtual = DATEPART(year, GETDATE())
SELECT @Ano = Ano, @UsaAno = UsaAno FROM NrContr WHERE CdCampo = @Campo
IF @UsaAno = ´S´ AND @AnoAtual <> @Ano
Begin
BEGIN TRAN
UPDATE NrContr SET Ano = @AnoAtual, UltValor = 0 WHERE CdCampo = @Campo
COMMIT
End

DECLARE cursor_prox CURSOR FOR SELECT UltValor, Ano, TamCampo, UsaAno FROM NrContr
WHERE CdCampo = @Campo

OPEN cursor_prox

FETCH NEXT FROM cursor_prox INTO @UltValor, @Ano, @TamCampo, @UsaAno

UPDATE NrContr SET UltValor = @UltValor + 1
WHERE CURRENT OF cursor_prox

CLOSE cursor_prox
DEALLOCATE cursor_prox

SELECT @AnoStr = STR(@Ano,4)
SELECT @Num = STR(@UltValor+1, @TamCampo)

SELECT @n = 1
while @n <= @TamCampo
begin
if substring(@Num, @n, 1) = ´ ´
SELECT @ResultStr = @ResultStr + ´0´
else
SELECT @ResultStr = @ResultStr + Substring(@Num, @n, 1)
SELECT @n = @n + 1
end
SELECT @Num = @ResultStr
if @UsaAno = ´S´
SELECT @ProxNumero = @AnoStr + @Num
else
SELECT @ProxNumero = @Num

Quando uso os componentes da paleta BDE, me retorna um valor, certinho

Quando uso ADO não...

Alguem pode me explicar?

abraços e aguardo respostas

[color=green:9c3c25bdae]Movido de Delphi para SQL Server[/color:9c3c25bdae]


Tremonti

Tremonti

Responder

Posts

21/09/2005

Rjun

Como que você esta fazendo? Que componentes você esta utilizando?


Responder

22/09/2005

Tremonti

Utilizo o ADOConnection para a conexão e o adostoredproc para a procedure...

e passo os parametros...

Funciona com o BDE perfeitamente, e do mesmo jeitinho que uso no ADO

E agora?


Responder

22/09/2005

Rjun

Eu uso direto esses componentes sem problemas. O que está acontecendo? Que valor você não esta conseguindo retornar? Você pode postar o trecho de código onde vc passa os parâmetros, executa a stp e retorna o valor?


Responder

23/09/2005

Tremonti

Cara, vamos fazer melhor entao...

Me fala como deveria ser...Pois estou passando Normal

Abraços...


Responder

23/09/2005

Rjun

Assim fica meio complicado...mas vamos tentar...vou considerar que seu componente TADOStoredProcedure esteja configurado corretamente.

stpProximoNumero.Parameters.ParamByName(´@Campo´).Value := ´campo´;
stpProximoNumero.ExecSql;
ProxNum := stpProximoNumero.Parameters.ParamByName(´@ProxNumero´).Value;



Responder

29/09/2005

Tremonti

Nao funcionou


:(


Responder

29/09/2005

Rjun

Você pode postar o código utilizando os componentes do BDE?


Responder

29/09/2005

Tremonti

stpProximoNumero.ParamByName(´@Campo´).Value := ´campo´;
stpProximoNumero.ExecSql;
ProxNum := stpProximoNumero.ParamByName(´@ProxNumero´).Value;


Só isso

A mesma coisa do ado


Responder

30/09/2005

Tremonti

COM BDE

function ProxNumero(prNmCampo: String): String;
begin
with dtmConfig.stpProxNumero do begin
ParamByName(´@Campo´).AsString := prNmCampo;
try
ExecProc;
except
ProxNumero := ProxNumero(prNmCampo);
Exit;
end;
ProxNumero := ParamByName(´@ProxNumero´).AsString;
end;
end;

Na hora de Usar

Valor := ProxNumero(´NrHistCOmpra´);


Abraços


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar