parametro null bde
15/04/2014
0
Olá,
Estou convertendo um sistema de Delphi 5 para o Delphi XE2. E me deparei com uma situação utilizando o BDE. No delphi XE2 ele não aceita passar null para um campo que é uma Foreign Key da seguinte forma que é a forma como esta funcionando atualmente no Delphi 5:
ParamByName('ID').datatype := ftInteger;
Erro que ocorre no Delphi xe2 com BDE:
No primary key value for foreign key 'FK_Codigo' in table TBPEDIDO
*Outras formas que Tentei e não deu certo no Delphi xe2 com BDE:
assim
ParamByName('ID').datatype := ftInteger;
ParamByName('ID').value := NULL;
assim
ParamByName('ID').DataType := ftstring;
ParamByName('ID').Clear;
assim
ParamByName('ID').DataType := ftstring;
ParamByName('ID').Bound := true;
assim
ParamByName('ID').Value := null;
assim
ParamByName('ID').IsNull;
A unica forma que consegui fazer funcionar no delphi xe2 com bde foi colocando nullif no comando sql:
SQL.ADD('INSERT INTO TESTEA(ID,NOME) VALUES(nullif(:ID,''''),:NOME)');
Porém isso implica em fazer essa alteração em uma grande escala de codigo fonte. A pergunta é alguém sabe uma outra forma que funcione sem precisar de uma alteração tão brusca.
obs: testei com outros componente e parece que o problema está no BDE.
att
Rodrigo Moraes
Estou convertendo um sistema de Delphi 5 para o Delphi XE2. E me deparei com uma situação utilizando o BDE. No delphi XE2 ele não aceita passar null para um campo que é uma Foreign Key da seguinte forma que é a forma como esta funcionando atualmente no Delphi 5:
ParamByName('ID').datatype := ftInteger;
Erro que ocorre no Delphi xe2 com BDE:
No primary key value for foreign key 'FK_Codigo' in table TBPEDIDO
*Outras formas que Tentei e não deu certo no Delphi xe2 com BDE:
assim
ParamByName('ID').datatype := ftInteger;
ParamByName('ID').value := NULL;
assim
ParamByName('ID').DataType := ftstring;
ParamByName('ID').Clear;
assim
ParamByName('ID').DataType := ftstring;
ParamByName('ID').Bound := true;
assim
ParamByName('ID').Value := null;
assim
ParamByName('ID').IsNull;
A unica forma que consegui fazer funcionar no delphi xe2 com bde foi colocando nullif no comando sql:
SQL.ADD('INSERT INTO TESTEA(ID,NOME) VALUES(nullif(:ID,''''),:NOME)');
Porém isso implica em fazer essa alteração em uma grande escala de codigo fonte. A pergunta é alguém sabe uma outra forma que funcione sem precisar de uma alteração tão brusca.
obs: testei com outros componente e parece que o problema está no BDE.
att
Rodrigo Moraes
Rodrigo-moraes
Curtir tópico
+ 0
Responder
Posts
15/04/2014
Rodrigo-moraes
Só uma dúvida, porque ainda utiliza BDE?
Bom hoje o BDE está nas entranhas de todo sistema, e como a troca de componente não seria um processo tão simples deixamos-os para um segundo momento. Sabemos que eles está obsoleto e iremos sim troca-lo. Mas inicialmente estamos apenas trocando de IDE.
Responder
Clique aqui para fazer login e interagir na Comunidade :)