Fórum Parametros SQLDataSet em tempo de execução #343453
19/07/2007
0
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
Curtir tópico
+ 0Posts
19/07/2007
Emerson Nascimento
Gostei + 0
20/07/2007
Brener Leão
Gostei + 0
20/07/2007
Emerson Nascimento
faço assim:
with sqldataset1 do begin close; commandtext := ´select * from cliente where cnpj = :cnpj´; parambyname(´cnpj´).asstring := strCNPJ; open; end;
Gostei + 0
20/07/2007
Brener Leão
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
20/07/2007
Emerson Nascimento
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
20/07/2007
Martins
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
20/07/2007
Brener Leão
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
21/07/2007
Martins
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
22/07/2007
Adriano Santos
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
24/07/2007
Brener Leão
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
24/07/2007
Adriano Santos
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
Clique aqui para fazer login e interagir na Comunidade :)