Fórum Dúvida: Query com DataSet normal (sem read-only)? #43284

23/03/2004

0

Bem... sei que o assunto do tópico ficou meio estranho. Minha dúvida é o seguinte:

Eu uso conexões ADO há mais ou menos 2 anos trabalhando com MS-Access e MS-SQL Server. No TADOQuery é possível usar normalmente (sem necessidade de nenhum outro componente) as operações:

TADOQuery.Active := true/false; (equivalente aos métodos Open e Close)
TADOQuery.Append; (insere no final da tabela)
TADOQuery.Insert; (insere após o registro atual)
TADOQuery.Edit; (edita o registro atual)
TADOQuery.ExecSQL; (executa um comando SQL qualquer)
TADOQuery.Post; (posta o resultado)

Bem, eu criei um framework inteiramente baseado nesta estrutura e gostaria de saber como posso migrá-lo para Firebird.

Estou enfrentando problemas porque o tal do TIBQuery põe o dataset como read-only sempre, e precisa do outro componente (TIBUpdateSQL) para executar as outras ações.

Como posso usar os métodos acima em componentes IBX? Minhas rotinas são todas do tipo:

TADOQuery.Append; (ou TADOQuery.Edit;)
// sequência de campos
TADOQuery.FieldByName(´meuCampo´) .AsInteger := 1;
// insere no banco
TADOQuery.Post;

Outra dúvida. Todas as minhas transações eu controlava pelo TADOConnection.

TADOConnection.BeginTrans;
TADOConnection.InTransaction;
TADOConnection.RollBack;

I aí? Como que eu faço? Quanto às transações acho que não terei dificuldades. Visto que eu posso simplesmente associar um TIBTransaction ao TIBDataBase e continuar trabalhando da mesma forma.

obs.: eu nunca fiz conexão com banco de dados usando BDE (o que tornou a nova estrutura uma barreira de paradigmas pra mim).

Minha pergunta é ´[b:ce97edee23]e agora José[/b:ce97edee23]´? hehehe.

Agradeço desde já todo o apoio que puderem me dar. :lol: [color=darkred:ce97edee23][/color:ce97edee23]


Paullus

Paullus

Responder

Posts

23/03/2004

Gandalf.nho

Tu deve usar IBDataSet para as manutenções no banco, ao invés de IBQuery, que é read-only.


Responder

Gostei + 0

23/03/2004

Afarias

Não tenho experiência de uso, mas vc pode usar ADO com IB (se desejar), basta instalar um driver ODBC/OleDB para Interbase.

Seja a escolha q fizer, NÃO use BDE!

Como o gandalf.nho falou, use IBDataSets para trabalhar como vc trabalhava no Access. Um IBDataSet = IBQuery+IBUpdateSQL


T+


Responder

Gostei + 0

23/03/2004

Paullus

Eu até aceito a idéia de mudar meus paradigmas de programação, e pode ter certeza que [b:0f3f67b962]BDE[/b:0f3f67b962] eu [b:0f3f67b962][size=18:0f3f67b962]nunca[/size:0f3f67b962][/b:0f3f67b962] vou usar. Se não usei no começo não tenho porque retroceder agora. Eu disse que o não uso do BDE tem sido uma barreira porque a estrutura dos componentes da paleta Interbase têm um comportamento parecido com os do BDE. :wink:

O problema é: Como utilizar as rotinas que eu uso hoje em TADOQuery com o TIBDataSet? :(

TIBDataSet.Append;
TIBDataSet.FieldByName(´meuInteiro´).AsInteger := 1;
TIBDataSet.Post;

A dúvida maior é como fazer isto. O meu framework já está bem consolidado e, apesar de aceitar trocar o TADOQuery por um TIBDataSet, o que não posso fazer é ter que reescrever todo o código do framework [u:0f3f67b962][b:0f3f67b962][size=18:0f3f67b962]E[/size:0f3f67b962][/b:0f3f67b962][/u:0f3f67b962] das classes que o utilizam. Entendem? :?:

:!: Se alguém tiver um exemplo de uso do TIBDataSet SEM USO DE TDBNavigator nem de componentes tipo TDBEdit ou TDBMemo seria muito bem vindo. :!:

Preciso desse tipo de estrutura porque a minha interface visual apenas recebe os resultados das minhas classes. Será que alguém pode me ajudar?

Quanto ao ADO eu sei que posso acessar o Interbase pelo ADO via OleDB só que aí eu perco a bendita portabilidade que os meus chefes tanto querem (os sistemas deverão estar preparados o máximo possível para serem compilados no Kylix caso seja necessário). :cry


Responder

Gostei + 0

23/03/2004

Afarias

|O problema é: Como utilizar as rotinas que eu uso hoje em TADOQuery
|com o TIBDataSet?
|TIBDataSet.Append;
|TIBDataSet.FieldByName(´meuInteiro´).AsInteger := 1;
|TIBDataSet.Post;

Exatamente! IGUAL!


|A dúvida maior é como fazer isto.

Veja o exemplo postado no topo deste fórum (exemplo básico com IBX)


|O meu framework já está bem consolidado e, apesar de aceitar trocar o
|TADOQuery por um TIBDataSet, o que não posso fazer é ter que
|reescrever todo o código do framework E das classes que o utilizam.
|Entendem?

Não será necessário (bom, não estou considerando o uso de transações e outros recursos como filtro e etc -- estes podem talvês exigir algumas pequenas alterações no framework)


|Se alguém tiver um exemplo de uso do TIBDataSet SEM USO DE
|TDBNavigator nem de componentes tipo TDBEdit ou TDBMemo seria
|muito bem vindo.

Veja o exemplo no topo do fórum (apenas cobre o uso de IBDataSets, não considera o uso ou não de controles DataWare)


|Preciso desse tipo de estrutura porque a minha interface visual apenas
|recebe os resultados das minhas classes. Será que alguém pode me
|ajudar?

O IBDataSet é só um DataSet, se seu framework trabalha bem com outros datasets, vc não terá maiores problemas.


|Quanto ao ADO eu sei que posso acessar o Interbase pelo ADO via
|OleDB só que aí eu perco a bendita portabilidade que os meus chefes
|tanto querem (os sistemas deverão estar preparados o máximo possível
|para serem compilados no Kylix caso seja necessário). :cry

Ok



T+


Responder

Gostei + 0

23/03/2004

Paullus

Confesso que dei uma olhada ´por cima´ do exemplo apresentado não chegando a implementá-lo. Vou tentar implementar o exemplo e ir modificando ele pra ir aprendendo um pouco mais... no entanto ainda acho que terei dificuldades nos pontos que abordei no decorrer do tópico.

Mesmo assim obrigado... mais tarde talvez eu importune vocês de novo. :wink:


Responder

Gostei + 0

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

Aceitar