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]<davi.wall%40mult.com.br> > >: > > > >> 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 > >> <delphi-br%40yahoogrupos.com.br><delphi-br% > 40yahoogrupos.com.br> [mailto: > >> delphi-br@yahoogrupos.com.br <delphi-br%40yahoogrupos.com.br><delphi-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 > >> <delphi-br%40yahoogrupos.com.br><delphi-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> > <djpardalrocha%40hotmail.com><mailto: > >> djpardalrocha%40hotmail.com <djpardalrocha%2540hotmail.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 > >>> <delphi-br%40yahoogrupos.com.br><delphi-br% > 40yahoogrupos.com.br><mailto: > >> delphi-br%40yahoogrupos.com.br <delphi-br%2540yahoogrupos.com.br>> > >> <delphi-br%40yahoogrupos.com.br> > >>> From: [EMAIL PROTECTED] <fellipeh%40gmail.com> <fellipeh%40gmail.com> > <mailto: > >> fellipeh%40gmail.com <fellipeh%2540gmail.com>> <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] <fellipeh%40gmail.com> <fellipeh%40gmail.com> > <mailto:fellipeh%40gmail.com <fellipeh%2540gmail.com><fellipeh% > 2540gmail.com>> > >> <fellipeh%40gmail.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] <fellipeh%40gmail.com> <fellipeh%40gmail.com> > <mailto:fellipeh%40gmail.com <fellipeh%2540gmail.com><fellipeh% > 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]