Delphi 2010 - problema com Parametro.

Delphi

17/08/2012

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

Curtidas 0

Respostas

Joel Rodrigues

Joel Rodrigues

17/08/2012

Qual é exatamente o problema?
GOSTEI 0
William

William

17/08/2012

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?
GOSTEI 0
Walmir Taques

Walmir Taques

17/08/2012

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 
GOSTEI 0
Walmir Taques

Walmir Taques

17/08/2012

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.
GOSTEI 0
Carlos Phelippe

Carlos Phelippe

17/08/2012

Assim não resolve:

Query.ParamByName(CODIGO).IsNull;
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

17/08/2012

Você consegue inserir esse registro direto no banco?
GOSTEI 0
Walmir Taques

Walmir Taques

17/08/2012

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.
GOSTEI 0
Walmir Taques

Walmir Taques

17/08/2012

Assim não resolve:

Query.ParamByName(CODIGO).IsNull;



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

Walmir Taques

17/08/2012

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.
GOSTEI 0
Rafael Ribeiro

Rafael Ribeiro

17/08/2012

Tenta:

Query.ParamByName(CODIGO).asstring = ''; 
GOSTEI 0
Walmir Taques

Walmir Taques

17/08/2012

Tenta:

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


Tambem não funciona...ele tenta validar devido a chave estrangeira.
GOSTEI 0
Francisco Macário

Francisco Macário

17/08/2012

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.
GOSTEI 0
Daniel Jordão

Daniel Jordão

17/08/2012

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?
GOSTEI 0
Carlos Phelippe

Carlos Phelippe

17/08/2012

E2003 Undeclared identifier: 'ParamByName'

Em qual UNIT está declarado ParamByName?

Não seria apenas adicionar isso no USES?
GOSTEI 0
Walmir Taques

Walmir Taques

17/08/2012

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.
GOSTEI 0
Cauê Nishijima

Cauê Nishijima

17/08/2012

Vamos por parte, com relação ao primeiro problema, não sei se é a forma mais elegante mas funciona:

if TRIM(Codigo) <> EmptyStr then
   Query.ParamByName(CODIGO).asString    := CODIGO
else
begin
   sqlAntiga := Query.SQL.Text;
   sqlNova := StringReplace(sqlAntiga, ' = :codigo', ' is null', []);
   
   Query.SQL.Clear;
   Query.SQL.Add(sqlNova);
   Query.Open;

   Query.SQL.Clear;
   Query.SQL.Add(sqlAntiga) ;
end;


E com relação ao segundo problema se 'table2' for um componente do tipo TTable e não TQuery, não haverá o método 'ParamByName'
GOSTEI 0
Nelson Santos

Nelson Santos

17/08/2012

Desenvolva softwares 3D em Delphi 7
www.3dsistemas.com.br
GOSTEI 0
POSTAR