Erro de Query

Delphi

11/09/2008

Galera, tenho um form que adiciona dados em minha tabela, nesse Form eu tenho um campo registro que quando digitado o registro e relaciona com minha tabela de registro e pucha todas as informaçãoes da tabela dnetro de Form do Produto, bom isso era para acontecer né mas quando eu digito o numero do registro e dou em table ele me mostra o seguninte erro.

´ Project Projeto.exe raised exception class EDatabaseError with message ´ SQLQuery_TESTE : field ´NUMEROCONTROLE´ not found´. Process stopped. Use step or Run to continue. ´

OBS: Minha query não da nenhum erro na hora de compilar o programa e já verifiquei a opção Required para False tambem e mesmo assim continua o mesmo erro.

Alguem poderia me ajudar ????

Obrigado


Cleiflavio

Cleiflavio

Curtidas 0

Respostas

Pestana_

Pestana_

11/09/2008

o field NUMEROCONTROLE da query não é diferente ao do banco? ou seja, você alterou este campo na tabela do banco e não atualizou o field na query?

se você ativar a query em tempo de designer ocorre o erro?


qualquer coisa posta novamente.


GOSTEI 0
Cleiflavio

Cleiflavio

11/09/2008

o campo NUMEROCONTROLE está igual ao banco, e quando eu ativo a query ela não apresenta nenhum erro, afinal nenhum dos meus componentes de conexão apresentam erros.

Aconteceu assim eu tinha uma relação funcionando perfeitamente quando eu add mais um campo para relacionar ele começou a dar esse erro. então até ai não consegui resolver

CLei


GOSTEI 0
Pestana_

Pestana_

11/09/2008

remova o field NUMEROCONTROLE do componente e depois add de novo.

você não está utilizando este campo em algum lugar do código no qual não foi definido no Select?

por ex.: se na seleção do Select você não definiu o campo [u:d03b896604]NUMEROCONTROLE[/u:d03b896604]: [color=green:d03b896604][b:d03b896604]select codigo, descrição from nomeTabela[/b:d03b896604][/color:d03b896604]

e em algum lugar do código você está chamando este campo: [color=green:d03b896604][b:d03b896604]query.FieldByName(´NUMEROCONTROLE´).AsInteger;[/b:d03b896604][/color:d03b896604]

ocorrerá o erro quando for executado está linha acima.

de uma olhada no seu fonte!


GOSTEI 0
Cleiflavio

Cleiflavio

11/09/2008

a remoção do Campo NUMEROCONTROLE do meu componente eu já tinha feito e tbm não seu certo.

Bom deixa eu te esclarecer meu codigo para vc entender.
Tenha uma TABELA_PRODUTO - tabela principal
e tbm uma TABELA_REGISTRO

tenho um form onde eu Insiro Produtos que no mesmo possui um relacionamento quando eu digitar o Registro .

Meu dataset está com o seguinte codigo

SELECT TABELA_PRODUTO.*, TABELA_REGISTRO.NOME_TECNICO,
TABELA_REGISTRO.NOME_COMERCIAL, TABELA_REGISTRO.VENCIMENTO_DO_REGISTRO, TABELA_REGISTRO.FABRICANTE, TABELA_REGISTRO.ENDERECO, TABELA_REGISTRO.DATA_VALIDADE, TABELA_REGISTRO.TIPO_DE_USO, TABELA_REGISTRO.ESTERIL, TABELA_REGISTRO.QTD_EMBALAGEM, TABELA_REGISTRO.REPROCESSAMENTO
FROM TABELA_PRODUTO
LEFT OUTER JOIN TABELA_REGISTRO ON TABELA_REGISTRO.N_REGISTRO = TABELA_PRODUTO.N_REGISTRO

No onexite do meu campo registro está com o seguinte codigo para puchara as infromações

DM.SQLQuery_INSERIR_PROD.Close;
DM.SQLQuery_INSERIR_PROD.SQL.Clear;
DM.SQLQuery_INSERIR_PROD.SQL.Add(´ select NOME_TECNICO, NOME_COMERCIAL, VENCIMENTO_DO_REGISTRO, FABRICANTE, ENDERECO, DATA_VALIDADE, TIPO_DE_USO, ESTERIL, QTD_EMBALAGEM, REPROCESSAMENTO from TABELA_REGISTRO where N_REGISTRO =´´´ + numeroregistro.Text + ´´´´ );
DM.SQLQuery_INSERIR_PROD.Open;
venc_registro.Text := DM.SQLQuery_INSERIR_PROD.fieldByName(´VENCIMENTO_DO_REGISTRO´).AsString;
validade.Text := DM.SQLQuery_INSERIR_PROD.fieldByName(´VALIDADE´).AsString;
tipodeuso.Text := DM.SQLQuery_INSERIR_PROD.fieldByName(´TIPO_DE_USO´).AsString;
reprocessamento.Text := DM.SQLQuery_INSERIR_PROD.fieldByName(´REPROCESSAMENTO´).AsString;
esterelidade.Text := DM.SQLQuery_INSERIR_PROD.fieldByName(´ESTERIL´).AsString;
nometecnico.Text := DM.SQLQuery_INSERIR_PROD.fieldByName(´NOME_TECNICO´).AsString;
nomecomercial.Text := DM.SQLQuery_INSERIR_PROD.fieldByName(´NOME_COMERCIAL´).AsString;
fabricante.Text := DM.SQLQuery_INSERIR_PROD.fieldByName(´FABRICANTE´).AsString;
endereco.Text := DM.SQLQuery_INSERIR_PROD.fieldByName(´ENDERECO´).AsString;
qtdembalagem.Text := DM.SQLQuery_INSERIR_PROD.fieldByName(´QTD_EMBALAGEM´).AsString;


Quando eu faço um Debug no programa ele da aquele err na seguinte linha do meu campo

DM.SQLQuery_INSERIR_PROD.Open;

Está parecendo que ele não acha a tabela principal e não reconhece o campo acredito que seje isso.

Talvez com os codigos te esclaressa mais para tentar achar o problema.

Se vc puder me ajudar te agradeço muitoo..

Valeuu


GOSTEI 0
Digaopachesen

Digaopachesen

11/09/2008

Bom pelo q vc passou, este erro esta relacionado a fields sim, bom primeiramente verifique se vc tem seu select corretamenteo, exemplo se vc utilizar firebird e ibexpert faca o teste no ibexpert, assim vc tem certeza q o select esta correto, outra tentativa, tente retirar todos os fildes da query, deixe a vazia debug o sistema e veja que ele nao deve dar nenhum erro, caso ele passe pelo open sem dar erro ele ira confirmar que o erro estava relaciona a fields com o nome ou tipo de dado errado, depois disso tenten adicionar os fields novamente, mas assim se vc tiver algum fields faltanto ou a mais realmente ele ira dar este tipo de erro. Esta solucao vai depender de vc, com calma e muita atencao. Espero te ajudado...


GOSTEI 0
Cleiflavio

Cleiflavio

11/09/2008

Galera, deu certo, exclui meus campos da Query e debuguei ai passou certinho e fez todo relacionamento.


Vlaeuuu Me ajudouu muitoooooo


GOSTEI 0
POSTAR