Uma coisa é liberar uma instância de um objeto de consulta. Outra coisa é 
finalizar uma transação.
Sds.


________________________________

To: delphi-br@yahoogrupos.com.br
From: [EMAIL PROTECTED]
Date: Mon, 9 Jun 2008 16:28:50 -0300
Subject: Re: [delphi-br] Ajuda numa função que retorna DataSet.

Beleza galera, valeu.. minha duvida era se eu dar o Free no RetDados, ele
iria dar no cQ de dentro da função.. :D...

O problema agora, é a transacao... quando eu der o Free na funcao RetDados,
tudo nela é liberado, inclusive a transacao?

[]s

2008/6/9 Joao Morais <[EMAIL PROTECTED]>:

> Fellipe Henrique wrote:
>> Davi, na verdade queria usar algo simples, sem ter que declarar nada, no
>> estilo:
>>
>> with RetDados('select * from cliente') do
>> begin
>> ShowMessage(FieldByName('RAZAO').AsString);
>> end;
>
> with RetDados('select * from cliente') do
> try
> ShowMessage(FieldByName('RAZAO').AsString);
> finally
> Free;
> end;
>
> Sugestão da casa: economize nos with, use com moderação.
>
> --
> Joao Morais
>
>>
>> Seria pra facilitar, visto que, já tenho uma função que faz isso, porém
>> tenho que declarar variavel, igual vc me mostrou, mas queria simplificar,
>> claro se for possível.. :o)
>>
>> []s
>>
>>
>> 2008/6/9 Davi Eduardo Borges Wall <[EMAIL PROTECTED]
>>:
>>
>>> Ai ai ai ai, ta faltando teoria Felipe! Só botar a mão na massa sem
>>> entender o que está fazendo é perigoso.
>>>
>>> Você vai ter que retirar aquele CQ.FREE de dentro de sua função.
>>> Na outra ponta você faz assim:
>>>
>>> Var
>>> MeuDataSet: TDataSet;
>>> Begin
>>> MeuDataSet := RetDados('SELECT BLA FROM BLA');
>>> try
>>>
>>> //faço o que tenho que fazer
>>> finally
>>>
>>> MeuDataSet.Free;
>>>
>>> End;
>>>
>>> Felipe vc precisa de mais entendimento da linguagem e de ponteiros, que
> é
>>> necessário para praticar uma boa programação.
>>> Sugiro a você comprar algum livro de Delphi e estudar mais.
>>>
>>> []'s
>>>
>>> De: delphi-br@yahoogrupos.com.br  40yahoogrupos.com.br> [mailto:
>>> delphi-br@yahoogrupos.com.br  40yahoogrupos.com.br>] Em nome de
>>> Fellipe Henrique
>>> Enviada em: segunda-feira, 9 de junho de 2008 15:56
>>> Para: delphi-br@yahoogrupos.com.br  40yahoogrupos.com.br>
>>> Assunto: Re: [delphi-br] Ajuda numa função que retorna DataSet.
>>>
>>>
>>> Mas Rubem, isso eu havia entendido, porém.. se eu der um RetDados.Free;
>>> estarei liberando meu cQ que está dentro da função? E tipo, não tem como
> eu
>>> passar os dados, fechar a Query, liberar ela, e os dados permanecerem
> não?
>>> Minha preocupação é com o desenrolar do sistema, muitas querys abertas
> sem
>>> fechar..
>>>
>>> []s
>>>
>>> 2008/6/9 Rubem Nascimento da Rocha <[EMAIL PROTECTED]
> >> djpardalrocha%40hotmail.com >>:
>>>
>>>> É óbvio que tá dando erro! Preste atenção! Vc está liberando uma
> consulta
>>>> que está sendo o retorno da sua função. Se vc libera a consulta, logo
> vai
>>>> estar liberando o retorno! Esse é o erro! A consulta não deve ser
>>> liberada!
>>>> Atente para isso!
>>>>
>>>> Sds.
>>>>
>>>> ________________________________
>>>>
>>>> To: delphi-br@yahoogrupos.com.br  40yahoogrupos.com.br>>> 
>>>> delphi-br%40yahoogrupos.com.br >
>>> 
>>>> From: [EMAIL PROTECTED]  
> >> fellipeh%40gmail.com > 
>
>>>
>>>> Date: Mon, 9 Jun 2008 15:47:04 -0300
>>>> Subject: [delphi-br] Ajuda numa função que retorna DataSet.
>>>>
>>>>
>>>> Olá amigos, estou criando uma função, que me retorne um DataSet, com o
>>>> resultado de um SQL passado como parametro, porém não estou
> conseguindo..
>>>> estou fazendo assim:
>>>>
>>>> function RetDados(sSQL: string): TDataSet;
>>>> var
>>>> cQ: TIBCQuery;
>>>> cT: TIBCTransaction;
>>>> begin
>>>> cT := TIBCTransaction.Create(nil);
>>>> cT.AddConnection(DM.Conexao);
>>>>
>>>> cQ := TIBCQuery.Create(nil);
>>>> cQ.Transaction := cT;
>>>> cQ.UpdateTransaction := cT;
>>>> cQ.UniDirectional := True;
>>>> try
>>>> cQ.SQL.Text := sSQL;
>>>> cQ.Open;
>>>> Result := cQ;
>>>> finally
>>>> cQ.Free;
>>>> cT.Free;
>>>> end;
>>>> end;
>>>>
>>>> Porém, sempre me retorna NIL, pois de qualquer forma passa no cQ.Free,
> e
>>>> estou achando que quando faz isso eu perco o resultado. Seria isso
> mesmo?
>>>> Se
>>>> for, como concerto isso?
>>>>
>>>> Desde já agradeço.
>>>>
>>>> []s
>>>>
>>>> --
>>>> _________________________________
>>>> T.·.F.·.A.·.
>>>> Fellipe Henrique
>>>> [EMAIL PROTECTED]  
>  2540gmail.com>>
>>> 
>>>> Sou a favor da lei LEI 607/2007
>>>>
>>>> __________________________________________________________
>>>> Confira vídeos com notícias do NY Times, gols direto do Lance,
>>>> videocassetadas e muito mais no MSN Video!
>>>> http://video.msn.com/?mkt=pt-br
>>>>
>>>>
>>> --
>>> _________________________________
>>> T.·.F.·.A.·.
>>> Fellipe Henrique
>>> [EMAIL PROTECTED]  
>  2540gmail.com>>
>>>
>>>
>>> Sou a favor da lei LEI 607/2007
>>>
>>> [As partes desta mensagem que não continham texto foram removidas]
>>>
>>> [As partes desta mensagem que não continham texto foram removidas]
>>>
>>>
>>>
>>
>>
>>
>
>
>

--
_________________________________
T.·.F.·.A.·.
Fellipe Henrique
[EMAIL PROTECTED]

Sou a favor da lei LEI 607/2007

[As partes desta mensagem que não continham texto foram removidas]









_________________________________________________________________
Instale a Barra de Ferramentas com Desktop Search e ganhe EMOTICONS para o 
Messenger! É GRÁTIS!
http://www.msn.com.br/emoticonpack

Responder a