Proc. Nao funciona com ADO só com BDE
21/09/2005
0
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
Posts
21/09/2005
Rjun
22/09/2005
Tremonti
e passo os parametros...
Funciona com o BDE perfeitamente, e do mesmo jeitinho que uso no ADO
E agora?
22/09/2005
Rjun
23/09/2005
Tremonti
Me fala como deveria ser...Pois estou passando Normal
Abraços...
23/09/2005
Rjun
stpProximoNumero.Parameters.ParamByName(´@Campo´).Value := ´campo´; stpProximoNumero.ExecSql; ProxNum := stpProximoNumero.Parameters.ParamByName(´@ProxNumero´).Value;
29/09/2005
Tremonti
stpProximoNumero.ExecSql;
ProxNum := stpProximoNumero.ParamByName(´@ProxNumero´).Value;
Só isso
A mesma coisa do ado
30/09/2005
Tremonti
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
Clique aqui para fazer login e interagir na Comunidade :)