Bugs e Bugs Delphi 2005 ! Comparametros em tempo de exec.

Delphi

08/08/2005

Ola caros amigos,


Estou muito frustrado com o Delphi 2005, COMPREI e instalei a versão 2005 Professional. Passei a compilar meus sistemas na nova versão como estava acostumado a fazer no Delphi 7 , apos algumas verificação só tive dor de cabeça problemas com o Firebird nas mascaras do sistema e graças ao forum foi resolvido, quando comecei a querer gostar do produto , me deparo com outro bug varias rotinas em meu sistema que esta funcionando perfeitamente quando copilado no Delphi 7 param de funcionar... Sem explicação.

Estou com todas atualizações instaladas.

Veja o codigo que não funciona no Delphi 2005:

dm.cdspreco.Close;
dm.qrypreco.close;
With dm.qrypreco Do
Begin
try
sql.clear;
sql.add(´Select produto.* From produto´);
case Rgbpesquisa.itemindex of
0: begin
sql.add(´where codproduto =´+ (edtpesquisa.text));
sql.Add(´Order by codproduto´);
end;
1: begin
if edtpesquisa.text <> ´´ then
begin
case Radiotipo.itemindex of
0: begin
sql.Add(´where descprod like :produto´);
params.ParamByName(´produto´).AsString:=Edtpesquisa.text+´¬´;
sql.Add(´Order by descprod´);
end;
1: begin
sql.Add(´where descprod like :produto´);
params.ParamByName(´produto´).AsString:=´¬´+Edtpesquisa.text+´¬´;
sql.Add(´Order by descprod´);
end;
2: begin
sql.Add(´where descprod like :produto´);
params.ParamByName(´produto´).AsString:=´¬´+Edtpesquisa.text;
sql.Add(´Order by descprod´);
end;
end;
end;
end;
2: begin
sql.Add(´where referencia like :REFERENCIA´);
params.ParamByName(´REFERENCIA´).AsString:=Edtpesquisa.text+´¬´;
sql.Add(´Order by referencia´);
end;
3: begin
sql.Add(´where marca like :Marca´);
params.ParamByName(´Marca´).AsString:=Edtpesquisa.text+´¬´;
sql.Add(´Order by marca´);
end; end;
dm.cdspreco.Open;
except
showmessage(´Conteúdo invalido para pesquisa!´);
end;
end;

Passo o código em tempo de execução por isto coloquei a sql junto com o código Delphi.

Realmente quando resolvo sair da Pirataria sofro tantas decepções e muito triste isto.

Desde já agradeço a atenção de todos.


Hugo Fabrício


Hugofab

Hugofab

Curtidas 0

Respostas

Hugofab

Hugofab

08/08/2005

Ola caros amigos,


Vou explicar melhor meu problema com o Delphi 2005,

dm.cdspreco.Close;
With dm.qrypreco Do
sql.add(´Select produto.* From produto´);
sql.Add(´where descprod like :produto´);
params.ParamByName(´produto´).AsString:=Edtpesquisa.text+´¬´;
sql.Add(´Order by descprod´);
end;
dm.cdspreco.open;


Quando executo a primeira vez funciona, da segunda em diante não aceita o parâmetro continuando assumir o parâmetro passado na primeira consulta.

Estou usando esta consulta nos meus sistemas em Delphi 7 e funciona perfeitamente , já quando compilo no Delphi 2005 da este problema.

Se alguém puder me ajudar agradeço.


GOSTEI 0
Massuda

Massuda

08/08/2005

...Realmente quando resolvo sair da Pirataria sofro tantas decepções e muito triste isto.
Não resolve seu problema, mas é possível fazer um [b:e28bf0959b]downgrade[/b:e28bf0959b]:
...Com o lançamento do Delphi 2005, todas as versões anteriores do Delphi foram descontinuadas, e não se encontram mais à venda (exceto por eventuais estoques antigos). Se é realmente necessário o uso de uma versão anterior, você pode adquirir a versão mais recente do Delphi na MicroSafe, e após se registrar no site da Borland, de posse da sua nota fiscal, realizar um downgrade da sua versão para a desejada, junto à Borland. Um downgrade nada mais é do que, de posse de uma versão atual, solicitar legalmente a mídia de uma versão anterior. Você estará então usando a licença adquirida para rodar legalmente qualquer versão anterior do Delphi (uma para cada licença adquirida)...
Veja na íntegra o texto [url=http://www.microsafe.com.br/fabricante.asp?nomefabri=BORLAND]nesta página[/url]


GOSTEI 0
Hugofab

Hugofab

08/08/2005

sobe


GOSTEI 0
Bon Jovi

Bon Jovi

08/08/2005

Nao entendi, pois mesmo em Delphi anteriores isso não funcionaria, pois vc não limpou o SQL antes. Além disso, vc está setando o parâmetro na query e nao no ClientDataSet. O correto:

dm.cdspreco.Close;
dm.qrypreco.sql.[b:e02feb741f]Clear[/b:e02feb741f];
dm.qrypreco.sql.add(´Select produto.* From produto´);
dm.qrypreco.sql.Add(´where descprod like :produto´);
dm.qrypreco.sql.Add(´Order by descprod´);
dm.[b:e02feb741f]cdsPreco[/b:e02feb741f].params.ParamByName(´produto´).AsString := Edtpesquisa.text + ´¬´;
dm.cdspreco.open;


GOSTEI 0
Hugofab

Hugofab

08/08/2005

Estou limpando a query se você verificar no meu primeiro tópico, e que quando resumi não coloquei. Agora sempre passei o parâmetro na query e funcionava já no Delphi 2005 isto não funciona!
Já tinha feito alguns testes e percebi que se passasse o parâmetro para o Clientdataset não dava problemas, mas pense tenho um sistema inteiro feito desta forma vai ter que recodificar todo só para mudar de versão?
Meio complicado!
Pois no Delphi 7 estava tendo o resultado desejado.

Obrigado pela atenção


Hugo Fabrício


GOSTEI 0
POSTAR