Delphi 2010 - problema com Parametro.

17/08/2012

0

Pessoal,
Estou com o um problema referente à parametro no Delphi 2010.
Esse erro está sendo apresentado somente no delphi 2010 (utilizo o delphi 5 e não apresenta),está apresentando erro de foreign key no banco de dados, na tabela o campo codigo é uma foreign key e pode ser null.
     if TRIM(Codigo) <>  then
        Query.ParamByName(CODIGO).asString    := CODIGO
     else
        Query.ParamByName(CODIGO).DataType    := ftString;


Eu pesquisei na net e alguns orientam a fazer o seguinte:

ParamByName(CODIGO).DataType := ftstring;
ParamByName(CODIGO).Clear;


mas não funciona. E tem tbem assim:

ParamByName(CODIGO).DataType := ftstring;
ParamByName(CODIGO).Bound := true; 


Se alguém souber de algo e puder me ajudar desde já agradeço. Obrigado!

Valeu!!!
Walmir Taques

Walmir Taques

Responder

Posts

17/08/2012

Joel Rodrigues

Qual é exatamente o problema?
Responder

17/08/2012

William

Colega não é uma prática muito boa, mas tenta passar o valor null então.

if TRIM(Codigo) <> then
Query.ParamByName(CODIGO).asString := CODIGO
else
Query.ParamByName(CODIGO).Value := null;


Só uma dúvida se o campo é foreign key e faz relação com outra tabela, pq existe a possibilidade de não ser passado valor?
Responder

17/08/2012

Walmir Taques

Qual é exatamente o problema?


O problema é que quando tento gravar um valor null passando datatype = ftstring para um campo onde o mesmo é uma chave estrangeira onde pode ser null ...não funciona. apresenta o erro :
No primary key value for foreign key 'FK_Codigo' in table TBPEDIDO 
Responder

17/08/2012

Walmir Taques

Colega não é uma prática muito boa, mas tenta passar o valor null então.

if TRIM(Codigo) <> then
Query.ParamByName(CODIGO).asString := CODIGO
else
Query.ParamByName(CODIGO).Value := null;


Só uma dúvida se o campo é foreign key e faz relação com outra tabela, pq existe a possibilidade de não ser passado valor?


Já tentei, não funcionou.
Responder

17/08/2012

Carlos Phelippe

Assim não resolve:

Query.ParamByName(CODIGO).IsNull;
Responder

17/08/2012

Joel Rodrigues

Você consegue inserir esse registro direto no banco?
Responder

17/08/2012

Walmir Taques

Você consegue inserir esse registro direto no banco?


Consigo.
Efetuei uns teste aqui no oracle e não apresentou erro.
Só que no Sybase continua...bem provavel que é bug do Sybase.
Responder

17/08/2012

Walmir Taques

Assim não resolve:

Query.ParamByName(CODIGO).IsNull;



Não tentei dessa maneira ..vou testar e posto o resultado...valeu pela ajuda.Obrigado!
Responder

21/08/2012

Walmir Taques

Assim não resolve:

Query.ParamByName(CODIGO).IsNull;



Não tentei dessa maneira ..vou testar e posto o resultado...valeu pela ajuda.Obrigado!




Fiz dessa maneira mas não funcionou.
Responder

21/08/2012

Rafael Ribeiro

Tenta:

Query.ParamByName(CODIGO).asstring = ''; 
Responder

21/08/2012

Walmir Taques

Tenta:

Query.ParamByName(CODIGO).asstring = ''; 


Tambem não funciona...ele tenta validar devido a chave estrangeira.
Responder

21/08/2012

Francisco Macário

colega não é uma prática muito boa, mas tenta passar o valor null então.


if trim(codigo) <> then
query.parambyname(codigo).asstring := codigo
else
query.parambyname(codigo).value := null;


só uma dúvida se o campo é foreign key e faz relação com outra tabela, pq existe a possibilidade de não ser passado valor?



Fiquei intrigado, como é possível criar a integridade relacional com campo que aceita NULL?

Não conheço Oracle, mas acho que isso não é uma particularidade dele.
Responder

07/04/2014

Daniel Jordão

Boas pessoal,

Estou com um problema. Estou usando o Delphi XE5 e estou tentando fazer uma pesquisa na minha tabela, base de dados.
No entanto o "ParamByName" não está sendo aceite pelo programa.

procedure TFormPesquisarRelatorioTurno.Panel2Click(Sender: TObject);
begin
banco2.table2.close;
banco2.table2.ParamByName('NOME_CHEFE').Asstring:=EditPesquisa.Text;
banco2.table2.open;
end;

Dá o erro:
[dcc32 Error] PesquisarRelatoriosTurno.pas(56): E2003 Undeclared identifier: 'ParamByName'
[dcc32 Error] PesquisarRelatoriosTurno.pas(56): E2066 Missing operator or semicolon
[dcc32 Fatal Error] F2063 Could not compile used unit 'PesquisarRelatoriosTurno.pas'

Alguem me consegue ajudar? o que é que se passa?
Responder

07/04/2014

Carlos Phelippe

E2003 Undeclared identifier: 'ParamByName'

Em qual UNIT está declarado ParamByName?

Não seria apenas adicionar isso no USES?
Responder

15/04/2014

Walmir Taques

Boas pessoal,

Estou com um problema. Estou usando o Delphi XE5 e estou tentando fazer uma pesquisa na minha tabela, base de dados.
No entanto o "ParamByName" não está sendo aceite pelo programa.

procedure TFormPesquisarRelatorioTurno.Panel2Click(Sender: TObject);
begin
banco2.table2.close;
banco2.table2.ParamByName('NOME_CHEFE').Asstring:=EditPesquisa.Text;
banco2.table2.open;
end;

Dá o erro:
[dcc32 Error] PesquisarRelatoriosTurno.pas(56): E2003 Undeclared identifier: 'ParamByName'
[dcc32 Error] PesquisarRelatoriosTurno.pas(56): E2066 Missing operator or semicolon
[dcc32 Fatal Error] F2063 Could not compile used unit 'PesquisarRelatoriosTurno.pas'

Alguem me consegue ajudar? o que é que se passa?


Que componente é esse bancow.table2 ?
Vc não explicou muito do que se trata.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar