Parametros SQLDataSet em tempo de execução
Caros amigos, sou novo por aqui e tenho um pequeno problema e acredito que algum filho de Deus nesse forum possa me ajudar.
O problema é o seguinte: Estou utilizando o componente TSQLDataSet da paleta DBExpress (claro) para fazer um consulta em um BD Firebird, quando preencho a propriedade COMMANDTEXT com uma expressão parecida com essa (Select * From Grupos Where ID_Grupo = :ID_Grupo) em design time o próprio componente já reconhece que ID_Grupo é um parâmetro, mas o mesmo não ocorre em Run Time, e o que eu preciso é criar o Select dinamicamente com parâmetro, só que quando vou atribuir um valor para o parâmetro recebo a menssagem de erro ´List index out bound (0)´. Por algum motivo em Run Time o delphi não recohece que exista parâmetros passados no CommandText....
A pergunta é: tem como fazer com que esse parâmetro seja reconhecido atravéz de algum comando? existe algum macete para isso?
O problema é o seguinte: Estou utilizando o componente TSQLDataSet da paleta DBExpress (claro) para fazer um consulta em um BD Firebird, quando preencho a propriedade COMMANDTEXT com uma expressão parecida com essa (Select * From Grupos Where ID_Grupo = :ID_Grupo) em design time o próprio componente já reconhece que ID_Grupo é um parâmetro, mas o mesmo não ocorre em Run Time, e o que eu preciso é criar o Select dinamicamente com parâmetro, só que quando vou atribuir um valor para o parâmetro recebo a menssagem de erro ´List index out bound (0)´. Por algum motivo em Run Time o delphi não recohece que exista parâmetros passados no CommandText....
A pergunta é: tem como fazer com que esse parâmetro seja reconhecido atravéz de algum comando? existe algum macete para isso?
Brener Leão
Curtidas 0
Respostas
Emerson Nascimento
19/07/2007
vc está usando clientdataset?
GOSTEI 0
Brener Leão
19/07/2007
Bem, estou utilizando Firebird + Delphi 2006 e o componente em questão é um SQLDataSet conforme mencionado anteriormente, que em run time não consigo fazer com que ele reconheça os parâmetros mencionados em sua propriedade CommandText, como ocorre em Design Time.
GOSTEI 0
Emerson Nascimento
19/07/2007
eu trabalho com sqldatasets e nunca me deparei com tal problema.
faço assim:
faço assim:
with sqldataset1 do begin close; commandtext := ´select * from cliente where cnpj = :cnpj´; parambyname(´cnpj´).asstring := strCNPJ; open; end;
GOSTEI 0
Brener Leão
19/07/2007
É... seria o ideal, mas como esse código tem que ser dinâmico eu não sei quem será o parametro, entâo ficaria mais ou menos assim:
Params[0].AsInteger:= cVariavelQualquer --> essa linha é que da o erro ´list index out bounds(0)´
Então é isso, eu não sei qual será a tabela e nem o nome do parâmetro, por esse motivo achei mais fácil referencia-lo pelo índice.
Sei que eu poderia referencia-lo pelo ´parambyname´ usando uma variávell, mas de teimoso que sou, gostaria de descobrir uma maneira de fazer o SQLDataSet ´enxergar´ em ´run time´ que existe um parâmetro no índice (0).
cLinhaCMD:= ´Select * From ´ + cNomeTabela + ´ where ´ + cCampo + ´ = :´ + cCampo; With SQLDataSet1 do begin commandText:= cLinhaCMD; Params[0].AsInteger:= cVariavelQualquer end
Params[0].AsInteger:= cVariavelQualquer --> essa linha é que da o erro ´list index out bounds(0)´
Então é isso, eu não sei qual será a tabela e nem o nome do parâmetro, por esse motivo achei mais fácil referencia-lo pelo índice.
Sei que eu poderia referencia-lo pelo ´parambyname´ usando uma variávell, mas de teimoso que sou, gostaria de descobrir uma maneira de fazer o SQLDataSet ´enxergar´ em ´run time´ que existe um parâmetro no índice (0).
GOSTEI 0
Emerson Nascimento
19/07/2007
cLinhaCMD:= ´Select * From ´ + cNomeTabela + ´ where ´ + cCampo + ´ = :´ + cCampo; With SQLDataSet1 do begin close; commandText := cLinhaCMD; parambyname(cCampo).value := cVariavelQualquer; open; end
isso deveria funcionar...
GOSTEI 0
Martins
19/07/2007
cLinhaCMD:= ´Select * From ´ + cNomeTabela + ´ where ´ + cCampo + ´ = :´ + cCampo; With SQLDataSet1 do begin close; commandText := cLinhaCMD; parambyname(cCampo).value := cVariavelQualquer; open; end
Também penso q agora deve funcionar, infelizmente não posso testar, mas acredito q agora vai dar certo.
GOSTEI 0
Brener Leão
19/07/2007
Caros amigos, muito obrigado pela ajuda, graças a colaboração de vocês, o caso foi encerrado com sucesso.
Baseado nas dicas que me forneceram descobri que eu estava me esquecendo de ligar o SQLDataSet a um SQLConnection. Parece estranho se esquecer de algo assim, mas acontece que eu estou desenvolvendo um componente de busca auxiliar, e portanto não rola nada visual, somente texto, então acabei me esquecendo de criar uma propriedade SQLConnection para o componente que é derivado de um TEdit e serve para fazer buscas auxiliares a um banco de dados via DBXpress.
Caso tenham interesse neste componente, posso fornecer o código fonte a vocês para que possam analiza-lo, e também estarei receptivo a críticas e sugestões que colaborem com o enriquecimento do código.
Mais uma vez, muito obrigado a voces. Vlw!
Baseado nas dicas que me forneceram descobri que eu estava me esquecendo de ligar o SQLDataSet a um SQLConnection. Parece estranho se esquecer de algo assim, mas acontece que eu estou desenvolvendo um componente de busca auxiliar, e portanto não rola nada visual, somente texto, então acabei me esquecendo de criar uma propriedade SQLConnection para o componente que é derivado de um TEdit e serve para fazer buscas auxiliares a um banco de dados via DBXpress.
Caso tenham interesse neste componente, posso fornecer o código fonte a vocês para que possam analiza-lo, e também estarei receptivo a críticas e sugestões que colaborem com o enriquecimento do código.
Mais uma vez, muito obrigado a voces. Vlw!
GOSTEI 0
Martins
19/07/2007
[quote:88c344bb0c=´Brener Bento Leão´]Caros amigos, muito obrigado pela ajuda, graças a colaboração de vocês, o caso foi encerrado com sucesso.
Baseado nas dicas que me forneceram descobri que eu estava me esquecendo de ligar o SQLDataSet a um SQLConnection. Parece estranho se esquecer de algo assim, mas acontece que eu estou desenvolvendo um componente de busca auxiliar, e portanto não rola nada visual, somente texto, então acabei me esquecendo de criar uma propriedade SQLConnection para o componente que é derivado de um TEdit e serve para fazer buscas auxiliares a um banco de dados via DBXpress.
Caso tenham interesse neste componente, posso fornecer o código fonte a vocês para que possam analiza-lo, e também estarei receptivo a críticas e sugestões que colaborem com o enriquecimento do código.
Mais uma vez, muito obrigado a voces. Vlw![/quote:88c344bb0c]
Ok! Um boa iniciativa, e disponha para trocarmos idéias aqui no fórum mesmo ou MP.
bons códigos
martinsbios@gmail.com
Baseado nas dicas que me forneceram descobri que eu estava me esquecendo de ligar o SQLDataSet a um SQLConnection. Parece estranho se esquecer de algo assim, mas acontece que eu estou desenvolvendo um componente de busca auxiliar, e portanto não rola nada visual, somente texto, então acabei me esquecendo de criar uma propriedade SQLConnection para o componente que é derivado de um TEdit e serve para fazer buscas auxiliares a um banco de dados via DBXpress.
Caso tenham interesse neste componente, posso fornecer o código fonte a vocês para que possam analiza-lo, e também estarei receptivo a críticas e sugestões que colaborem com o enriquecimento do código.
Mais uma vez, muito obrigado a voces. Vlw![/quote:88c344bb0c]
Ok! Um boa iniciativa, e disponha para trocarmos idéias aqui no fórum mesmo ou MP.
bons códigos
martinsbios@gmail.com
GOSTEI 0
Adriano Santos
19/07/2007
[quote:b2f33437fe=´Brener Bento Leão´]Caros amigos, muito obrigado pela ajuda, graças a colaboração de vocês, o caso foi encerrado com sucesso.
Baseado nas dicas que me forneceram descobri que eu estava me esquecendo de ligar o SQLDataSet a um SQLConnection. Parece estranho se esquecer de algo assim, mas acontece que eu estou desenvolvendo um componente de busca auxiliar, e portanto não rola nada visual, somente texto, então acabei me esquecendo de criar uma propriedade SQLConnection para o componente que é derivado de um TEdit e serve para fazer buscas auxiliares a um banco de dados via DBXpress.
Caso tenham interesse neste componente, posso fornecer o códigos fonte a vocês para que possam analiza-lo, e também estarei receptivo a críticas e sugestões que colaborem com o enriquecimento do código.
Mais uma vez, muito obrigado a voces. Vlw![/quote:b2f33437fe]
Brener, muito boa iniciativa mesmo. Se precisar de um servidor para hospedar o componente pode me dar um toque. Criei um blog pra exportar esse tipo de iniciativa e divulgar todo e qualquer tipo de conteúdo pra comunidade. Se quiser eu coloco no ar, com os devidos créditos claro.
Abs
Baseado nas dicas que me forneceram descobri que eu estava me esquecendo de ligar o SQLDataSet a um SQLConnection. Parece estranho se esquecer de algo assim, mas acontece que eu estou desenvolvendo um componente de busca auxiliar, e portanto não rola nada visual, somente texto, então acabei me esquecendo de criar uma propriedade SQLConnection para o componente que é derivado de um TEdit e serve para fazer buscas auxiliares a um banco de dados via DBXpress.
Caso tenham interesse neste componente, posso fornecer o códigos fonte a vocês para que possam analiza-lo, e também estarei receptivo a críticas e sugestões que colaborem com o enriquecimento do código.
Mais uma vez, muito obrigado a voces. Vlw![/quote:b2f33437fe]
Brener, muito boa iniciativa mesmo. Se precisar de um servidor para hospedar o componente pode me dar um toque. Criei um blog pra exportar esse tipo de iniciativa e divulgar todo e qualquer tipo de conteúdo pra comunidade. Se quiser eu coloco no ar, com os devidos créditos claro.
Abs
GOSTEI 0
Brener Leão
19/07/2007
Muito obrigado, e parabéns pro ter criado esse Blog, acredito que será de grande utilidade para nossa comunidade. A respeito do componente que estou desenvolvendo, e gostaria sim de estar disponibilizando a quem se interessar por ele. Estou em finalizando algumas imlpementações nele e crei que em breve já poderei disponibiliza-lo.
Um pouco sobre meu componete:
Trata-se de um edit que faz consultas SQL a bancos conectados via DBXPress. Caso o código digitado pelo usuário seja encontrado no banco de dados ele preenche um Edit normal, indicado anteriormente nas propriedades de nosso componente, com o detalhe do registro. Por exemplo, em um cadastro de Cidades, o usuário digita ´4´ e tecla enter, caso seja encontrada alguma ocorrência, o componente preenche um outro edit com o nome da cidade. Caso não seja encontrado nenhum registro ele retorna ´código não encontrado´ e ainda, caso o usuário tecle enter sem preencher o campo, é aberto um form para que seja feita uma busca atravéz de um outro campo como o nome da cidade ou CEP.
Um pouco sobre meu componete:
Trata-se de um edit que faz consultas SQL a bancos conectados via DBXPress. Caso o código digitado pelo usuário seja encontrado no banco de dados ele preenche um Edit normal, indicado anteriormente nas propriedades de nosso componente, com o detalhe do registro. Por exemplo, em um cadastro de Cidades, o usuário digita ´4´ e tecla enter, caso seja encontrada alguma ocorrência, o componente preenche um outro edit com o nome da cidade. Caso não seja encontrado nenhum registro ele retorna ´código não encontrado´ e ainda, caso o usuário tecle enter sem preencher o campo, é aberto um form para que seja feita uma busca atravéz de um outro campo como o nome da cidade ou CEP.
GOSTEI 0
Adriano Santos
19/07/2007
[quote:f587623a70=´Brener Bento Leão´]Muito obrigado, e parabéns pro ter criado esse Blog, acredito que será de grande utilidade para nossa comunidade. A respeito do componente que estou desenvolvendo, e gostaria sim de estar disponibilizando a quem se interessar por ele. Estou em finalizando algumas imlpementações nele e crei que em breve já poderei disponibiliza-lo.
Um pouco sobre meu componete:
Trata-se de um edit que faz consultas SQL a bancos conectados via DBXPress. Caso o código digitado pelo usuário seja encontrado no banco de dados ele preenche um Edit normal, indicado anteriormente nas propriedades de nosso componente, com o detalhe do registro. Por exemplo, em um cadastro de Cidades, o usuário digita ´4´ e tecla enter, caso seja encontrada alguma ocorrência, o componente preenche um outro edit com o nome da cidade. Caso não seja encontrado nenhum registro ele retorna ´código não encontrado´ e ainda, caso o usuário tecle enter sem preencher o campo, é aberto um form para que seja feita uma busca atravéz de um outro campo como o nome da cidade ou CEP.[/quote:f587623a70]
Parabén velho, muito bom. A hora que quiser me contacte em particular ou meu email que disponibilizo pra galera o arquivo do componente.
Abs
Um pouco sobre meu componete:
Trata-se de um edit que faz consultas SQL a bancos conectados via DBXPress. Caso o código digitado pelo usuário seja encontrado no banco de dados ele preenche um Edit normal, indicado anteriormente nas propriedades de nosso componente, com o detalhe do registro. Por exemplo, em um cadastro de Cidades, o usuário digita ´4´ e tecla enter, caso seja encontrada alguma ocorrência, o componente preenche um outro edit com o nome da cidade. Caso não seja encontrado nenhum registro ele retorna ´código não encontrado´ e ainda, caso o usuário tecle enter sem preencher o campo, é aberto um form para que seja feita uma busca atravéz de um outro campo como o nome da cidade ou CEP.[/quote:f587623a70]
Parabén velho, muito bom. A hora que quiser me contacte em particular ou meu email que disponibilizo pra galera o arquivo do componente.
Abs
GOSTEI 0