Duvida Adoquery

Delphi

09/09/2005

Estou com o seguinte problema

a empresa que eu trabalho comercializa um softare que foi desenvolvido com os componentes ado e o banco de dados acess.
Agora nós estamos querendo modificar o banco para o msde da microsoft
só que nessa mudança está acontecendo o seguinte problema

Ex: a query tinha o seguinte codigo e funcionava perfeitamente no acess

adoquery1.SQl.text:=´Select Nome,DtNasc from clientes where (codigo=´´+edtcod.text+´´´) e agora não funciona no MSDE. para essa query funcionar eu precisei passar parametros.

O problema é q o sistema tem muita querys desse jeito, Alem disso todas as inserções,alterações e exclusões estão programadas desse jeito!!!

Será que vou ter q alterar Tudo??

Grato:

[b:b52d2f1976][color=red:b52d2f1976]Atenção :[/color:b52d2f1976][/b:b52d2f1976]
[b:b52d2f1976]O título desta mensagem foi editado pelo moderador Vinicius2K: [color=orange:b52d2f1976]Removido o texto apelativo´Urgente´.[/color:b52d2f1976][/b:b52d2f1976]
Peço que leia atentamente as [url=http://forum.clubedelphi.net/viewtopic.php?t=6689]Regras de Conduta[/url] para evitar que este fato se repita. Se algum esclarecimento sobre o funcionamento do fórum ou sobre as Regras de Conduta for necessário, envie-me uma [url=http://forum.clubedelphi.net/privmsg.php?mode=post&u=2796]Mensagem Particular[/url].


Henrytpc

Henrytpc

Curtidas 0

Respostas

Rjun

Rjun

09/09/2005

Quando a coisa é mal feita no começo, na hora da manutenção é um Deus nos acuda...

Mas a principio, seu código SQL deveria funcionar no MSDE. Seu código é alfanumérico? Apareceu alguma mensagem de erro ou o resultado retornado não foi o esperado?


GOSTEI 0
Nightcrawler

Nightcrawler

09/09/2005

Bem, se seu programa está escrito de maneira orientada a objetos, basta agora reescrever as classes da camada de persistência que fará o acesso aos dados. Quanto ao erro, existe alguma mensagem?


GOSTEI 0
Bon Jovi

Bon Jovi

09/09/2005

O padrão da SQL é aspas simples, nem sabia q o Access aceitava aspas duplas. Mesmo q o SQL Server aceitasse, seria melhor deixar no padrão da SQL.

Só mesmo na base de um Find/Replace cuidadoso pra converter isso. Se quiser arriscar (obviamente pode alterar outras coisas e piorar a situação caso sejam encontradas) use algum editor de txt bom (como o NoteTab) e dê replace em todos os arquivos numa tacada só. E claro, não deixe de fazer um backup completo antes. O ideal seria fazer (ou arrumar) um programa que varrendo os .pas e .dfm encontre linhas do SQL.Text e faça a substituição de forma mais precisa.

1 - Deve-se trocar
por
´´´
e
´"
por
´´´



2 - Ou
"´+
por
´ + QuotedStr(
e
+´"
por
) + ´


Faz um pequeno teste antes.

A segunda opção pode falhar mais se vc não tiver seguindo um padrão de escrita. E o ´padrão´ que vc tá seguindo não é da Borland.


GOSTEI 0
Vanius

Vanius

09/09/2005

Vc escreveu assim:

adoquery1.SQl.text:=´Select Nome,DtNasc from clientes where (codigo=´´+edtcod.text+´´´)

Tente parametros:

with adoquery1 do
begin
Close;
SQL.Clear;
SQL.Add(´Select Nome, DtNasc´);
SQL.Add(´from clientes´);
SQL.Add(´where codigo= :pCodigo´);
Params.ParamByName(´pCodigo´).Value := edtcod.text;
Open;
end;

Estas 3 linhas ´SQL.Add´ podem ser substituidas por 1.

adoquery1.SQl.text:=´Select Nome,DtNasc from clientes where codigo= :pCodigo´;
adoquery1.ParamByName(´pCodigo´).Value := edtcod.text;

Abraços,

Vanius Girodo


GOSTEI 0
POSTAR