Dúvida: Query com DataSet normal (sem read-only)?
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]
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
Curtidas 0
Respostas
Gandalf.nho
23/03/2004
Tu deve usar IBDataSet para as manutenções no banco, ao invés de IBQuery, que é read-only.
GOSTEI 0
Afarias
23/03/2004
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+
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+
GOSTEI 0
Paullus
23/03/2004
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
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
GOSTEI 0
Afarias
23/03/2004
|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+
|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+
GOSTEI 0
Paullus
23/03/2004
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:
Mesmo assim obrigado... mais tarde talvez eu importune vocês de novo. :wink:
GOSTEI 0