Fórum Migração do D7 para o D2010 #509926
07/02/2015
0
Estou migrando uma pequena aplicação escrita em D7 para D2010 e o problema é a atribuição do tipo de um parametro. Um exemplo:
No D7 está como cdsXXX.Params.Parambyname('parametro').AsString := 'aaaaa'; ....... --> funciona normalmente.
No D2010 só funciona como cdsXXX.Params.Parambyname('parametro').Value := 'aaaaa';
So ocorre em parametros que esperam o tipo String.
Diga-se de passagem que aplicações escritas no D2010 também têm que estar com o tipo VALUE para parametros que esperam um String.
Alguem pode explicar o porque e se há como manter no D2010 os parametros que recebem String como .....('parametro').AsString ?
Agradeço.
Anconsultoria
Curtir tópico
+ 0Posts
11/02/2015
Douglas
Até aonde eu sei, tem como manter os parâmetros que recebem String. Até porque a definição do tipo value é quando não se sabe o tipo de dado esperado. Agora, que erro é gerado quando você defini que o seu parâmetro é "AsString"?
Gostei + 0
12/02/2015
Anconsultoria
Naturalmente os parametros estão certos, se eu troco o .AsString por .Value tudo funciona bem.
Eu citei no início sobre migração do D7 para o D2010, mas veja bem, isto acontece em qq projeto no D2010 Uma curiosidade é que se eu carrego uma variável String com o valor de um parâmetro de retorno, posso colocar String ( em StoredProcedures, por exemplo ):
Variavel1 : String;
Variavel1 := cdsTeste.Params.ParamByName('S_NOMEUSUARIO').AsString; ===> Funciona, parametro de retorno;
cdsTeste.Params.ParamByName('NomeUsuario').AsString := 'jose1; ======> Não funciona, parametro de entrada.
cdsTeste.Params.ParamByName('NomeUsuario').Value:= 'jose1; ======> Funciona, parametro de entrada.
Não sei se ficou confuso, mas é isso.
Gostei + 0
12/02/2015
Douglas
Gostei + 0
13/02/2015
Anconsultoria
query --> datasetprovider --> clientdataset1.
Exemplo: Na query teríamos: SELECT * FROM CLIENTE WHERE CNPJ = :PRMCNPJ ( CNPJ É UM CAMPO STRING NA TABELA CLIENTE ). A qry retorna todos os dados da tabela CLIENTE, certo. ? E o clientdataset1 ligado a ela também, claro. A lógica seria:
clientdataset1.Close;
clientdataset1.Params.ParamByName('PRMCNPJ').AsString := '123.456.0001-99';
clientdataset1.open; ---> aqui aparece o erro.
Se eu troco por:
.....
clientdataset1.Params.ParamByName('PRMCNPJ').Value:= '123.456.0001-99';
......
Tudo funciona.
Entendeu ?
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)