Fórum Como Criar parametro em tempo de execução no ClientDataSet #267038
01/02/2005
0
ClientDataSet .Close;
ClientDataSet .SQL.Text := ´ SELECT * FROM FORNECEDORES ´+
´ WHERE UPPER(Nome_Forn) LIKE :parFORNECEDOR ´;
ClientDataSet .ParamByName(´parFORNECEDOR´).AsString := Edit1.Text + ´¬´;
ClientDataSet .Open;
da erro quando executo
Leorez
Curtir tópico
+ 0Posts
02/02/2005
Bon Jovi
//ClientDataSet1 estando conectado ao Provider->Query->Connection.
ClientDataSet1.[b:bd6656386b]FetchParams[/b:bd6656386b];
ClientDataSet1.Params.ParamByName(´parFORNECEDOR´).ParamType := ptInput;
ClientDataSet1.Params.ParamByName(´parFORNECEDOR´).DataType := ftString;
ClientDataSet1.Params.ParamByName(´parFORNECEDOR´).AsString := ´xxx´;
//pode dar open agora...
------------------------------------------------------
Talvez nao precise pro seu caso, mas pra realmente criar na mãozona vc pode usar CreateParam:
ClientDataSet1.Params.CreateParam(ftString, ´parFORNECEDOR´, ptInput);
--------------------
Shaman forever
--------------------
[img:bd6656386b]http://www.shamanonline.com.br/images/news/551.jpg[/img:bd6656386b]
Gostei + 0
23/11/2006
Macario
Estou tento dificuldade em utilizar parametros em runtime.
Tenho a seguinte instrucao ´fixa´ dentro do SQLDataSet:
select * from TABELA where CAMPO = :PARAMCAMPO
Onde CAMPO e do tipo varchar.
Mas agora preciso passar este comando em runtime, no evento BeforeOpen do SQLDataSet.
Ocorre o seguinte erro: [b:a8bce215f8]No valur for parameter PARAMCAMPO[/b:a8bce215f8]
Quando efetuo o Open do ClientDataset ligado ao SQLDataSet com a instrucao.
Ja tentei o meto CreateParam mas nao obtive sucesso.
Alguem teria um exemplo funcional?
Grato. :roll:
Gostei + 0
23/11/2006
Brunolspp
Inclusive com criação dinamica de sql e parametrização de comandos em:
http://cc.borland.com/Author.aspx?ID=795118
No mais, estou as ordens
Abração
Gostei + 0
24/11/2006
Marco Salles
também acho que isto deve ser feito com o clientDatset Fechado
Gostei + 0
24/11/2006
Macario
Detalhando melhor o meu problema.
[u:36ca53701c]Exemplo 1[/u:36ca53701c]
O exemplo 1 trata de uma situação normal onde esta instrução esta no componente TSQLDataSet ja em tempo de projeto. E as duas tabelas encontram-se no mesmo database.
No codigo delphi fica.
DM.cdsConsultaVenda.close; DM.cdsConsultaVenda.params.parambyname(´CODCLI´).AsInteger := iCodigo; DM.cdsConsultaVenda.Open;
[u:36ca53701c]Exemplo 2[/u:36ca53701c]
O exemplo 2 trata de uma situação onde ja nao posso mais deixar a instrução estatica no componente SQLDataSet, pois apenas em tempo de execução é passado o nome dos Bancos, As tabelas podem estar em posições inversas(Venda em BancoB e Cliente em BancoA).
Uso este codigo em varios pontos do sistema
DM.cdsConsultaVenda.close; DM.cdsConsultaVenda.params.parambyname(´CODCLI´).AsInteger := iCodigo; DM.cdsConsultaVenda.Open;
Agora nao estou conseguindo manter desta forma por que nao consigo trabalhar com o parametro.
Estou tentando criar os parametros no BeforeOpen do SQLDataSet esta forma é a correta?
No BeforeOpen do SQLDataSet tenho o seguinte codigo:
var iValueParam : integer; begin iValueParam := cdsConsultaVenda.params.parambyname(´CODCLI´).AsInteger; sdsConsultaVenda.CommandText := ´select V.Nota, C.NomeCli, sum(V.Venda) as Total from ´+[color=red]sDataBaseDBOTabelaVEnda[/color]+´ V inner join ´+[color=red]sDataBaseDBOTabelaCliente[/color]+´ C on (V.CODCLI = C.CODCLI) where V.CODCLI = :CODCLI´ if(Agora devo criar o parametro no SQLDataSet ou no ClientDataSet) then sdsConsultaVenda.params.CreateParam(ftInteger, ´CODCLI´, ptInPut); else cdsConsultaVenda.params.CreateParam(ftInteger, ´CODCLI´, ptInPut); end;
Gostei + 0
24/11/2006
Brunolspp
para fazer isso e necessario q a propriedade allowcommandtext do datasetprovider esteja habilitada.
dai vc faria td pelo clientdataset mesmo, tomando cuidado de modificar o sql somente no where e não nos campos retornados se o seu clientdataset tiver os tfields ja tipificados.
no mais, estou as ordens
http://cc.borland.com/Author.aspx?ID=795118
Abração
Gostei + 0
24/11/2006
Macario
Entao seria uma saida passar tudo diretamente, mas no meu caso torna-se uma grande alteração dentro do sistema(um ERP com varios modulos) .
Gostei + 0
24/11/2006
Marco Salles
Esses parametros ja estão previamente definidos ????
Gostei + 0
24/11/2006
Macario
Esses parametros ja estão previamente definidos ????
[/quote:2fec42ee69]
Sim como mencionei estao no CLientDataSet.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)