RES: RES: [firebase-br] Stored Procedures & Delphi 7

Rodrigo Schiavo schiavor em uol.com.br
Qui Fev 10 14:26:43 -03 2005


Se não for pedir muito, poderia por favor dar uma olhada em como se faz 
isso e me retornar o e-mail, por que isto esta me atrapalhando por aqui.

[ ]'s

Mauricio Torres Fernandes escreveu:

>Hummm... Prestando mais atenção na sua procedure percebo que ela retorna
>mais de um registro, portanto a forma que eu te passei não deve funcionar
>corretamente... Esse método funciona quando temos apenas 1 registro de
>retorno... Preciso dar uma olhada aqui para ver como faz, pois não utilizo
>isso a tempos...
>
>Mauricio.
>
>  
>
>>-----Mensagem original-----
>>De: lista-bounces em firebase.com.br 
>>[mailto:lista-bounces em firebase.com.br] Em nome de Rodrigo Schiavo
>>Enviada em: quinta-feira, 10 de fevereiro de 2005 12:41
>>Para: FireBase
>>Assunto: Re: RES: [firebase-br] Stored Procedures & Delphi 7
>>
>>Obrigado Mauricio, agora soh mais uma coisa, como devo 
>>modificar esta Stored Procedure para poder utilzar seu 
>>retorno no ClientDataSet?
>>
>>
>>Mauricio Torres Fernandes escreveu:
>>
>>    
>>
>>>A estrutura de acesso está correta, mas a forma como você 
>>>      
>>>
>>está executando a
>>    
>>
>>>procedure pode estar errada. Com Stored Procedures que não retornam
>>>datasets, você não pode usar "ClientDataSet1.Open" ou 
>>>      
>>>
>>"ClientDataSet1.Active
>>    
>>
>>>:= True". Use "ClientDataSet.Execute" e os valores serão 
>>>      
>>>
>>retornados em
>>    
>>
>>>parâmetros, como o exemplo abaixo:
>>>
>>>...
>>>ClientDataSet1.Execute;
>>>iFinalizadora :=
>>>ClientDataSet1.Params.ParamByName('FINALIZADORA').AsInteger;
>>>fSaldo := ClientDataSet1.Params.ParamByName('SALDO').AsFloat;
>>>...
>>>
>>>Espero ter ajudado,
>>>
>>>
>>>Mauricio.
>>>
>>> 
>>>
>>>      
>>>
>>>>-----Mensagem original-----
>>>>De: lista-bounces em firebase.com.br 
>>>>[mailto:lista-bounces em firebase.com.br] Em nome de Rodrigo Schiavo
>>>>Enviada em: quinta-feira, 10 de fevereiro de 2005 11:04
>>>>Para: FireBase
>>>>Assunto: [firebase-br] Stored Procedures & Delphi 7
>>>>
>>>>Bom dia amigos.
>>>>
>>>>Hoje comecei a trabalhar com Stored Procedures no Firebird 
>>>>1.5.1 e Delphi 7, porém algumas dúvidas surgiram aqui.
>>>>
>>>>Ateh hoje sempre trabalhei com o consjunto de componentes 
>>>>DBExpress, utilizando SQLQuery, DataSetProvider e 
>>>>ClientDataSet, agora que vou trabalhar com Stored procedures 
>>>>quais componentes devo utilizar?
>>>>
>>>>Tentei com o conjunto SQLStoredProc, DataSetProvider e 
>>>>ClientDataSet, mas quando eu ativo o SQLStoredProc ou abro o 
>>>>ClientDataSet eh retornado o erro: Cursor not returned from Query.
>>>>
>>>>Abaixo segue o código da Stored Procedure.
>>>>
>>>>SET TERM ^ ;
>>>>
>>>>CREATE PROCEDURE CAIXAS_SALDO_FINALIZADORAS (
>>>>   CAIXA SMALLINT,
>>>>   MOVIMENTO DATE)
>>>>RETURNS (
>>>>   FINALIZADORA SMALLINT,
>>>>   SALDO DECIMAL(10,3))
>>>>AS
>>>>DECLARE VARIABLE FIN SMALLINT;
>>>>DECLARE VARIABLE CREDITO NUMERIC(10,3);
>>>>DECLARE VARIABLE DEBITO DECIMAL(10,3);
>>>>begin
>>>>
>>>> -- Seleciona as finalizadoras do movimento
>>>> FOR SELECT DISTINCT(CD.FINALIZADORA)
>>>> FROM CAIXAS_DETALHES CD
>>>> WHERE ((CD.CODIGO=:CAIXA) AND (CD.DATA=:MOVIMENTO))
>>>> INTO :FIN
>>>> DO
>>>> BEGIN
>>>>
>>>>   -- Seleciona créditos
>>>>   SELECT COALESCE(SUM(C.VALOR),0)
>>>>   FROM CAIXAS_DETALHES C
>>>>   WHERE ((C.CODIGO=:CAIXA) AND (C.DATA=:MOVIMENTO) AND
>>>>(C.FINALIZADORA=:FIN) AND (TIPO='C'))
>>>>   INTO :CREDITO;
>>>>
>>>>   -- Seleciona débitos
>>>>   SELECT COALESCE(SUM(C.VALOR),0)
>>>>   FROM CAIXAS_DETALHES C
>>>>   WHERE ((C.CODIGO=:CAIXA) AND (C.DATA=:MOVIMENTO) AND
>>>>(C.FINALIZADORA=:FIN) AND (TIPO='D'))
>>>>   INTO :DEBITO;
>>>>
>>>>
>>>>   FINALIZADORA=:FIN;
>>>>   SALDO=CREDITO-DEBITO;
>>>>
>>>>   SUSPEND; -- Retorna registro
>>>> END
>>>>
>>>>end
>>>>^
>>>>
>>>>SET TERM ; ^
>>>>
>>>>[ ]'s Rodrigo Schiavo
>>>>   
>>>>
>>>>        
>>>>
>>>
>>>
>>>
>>>______________________________________________
>>>FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>>>Para editar sua configuração na lista, use o endereço 
>>>      
>>>
>>http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>>    
>>
>>> 
>>>
>>>      
>>>
>>______________________________________________
>>FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>>Para editar sua configuração na lista, use o endereço 
>>http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>>
>>
>>    
>>
>
>
>
>
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>
>  
>




Mais detalhes sobre a lista de discussão lista