Fórum Problema estranho ao inserir dados #467347
19/01/2014
0
Existe um datamodule e nele um adotable e um adoquery ambos ligados na mesma tabela, porque em alguns casos usa um ou outro.
Em um formulário de cadastro existem os botões de ação com comando Insert/append, edit, delete, post e uma datasource ligada a esses campos.
Quando a source esta ligada ao adotable todos os comando funcionam normalmente, insere, salva edita, deleta. Agora quando liga a datasource ao ADOquery somente no momento de dar um insert ou apppend está dando erro, o edit, delete e port funciona perfeitamente com a query.
Quando clica no botão de adicionar registro ele executa a linha datamodule.adoquery.append ou insert. (não estou citando o nome da tabela aqui, somente os componentes), aparece uma mensagem de erro de que o campo 'alguma coisa' não pode ser localizado, se eu fizer isso com o adotable funciona de boa.
Por que será que ele não encontra os campos quando estou usado a query sendo que todos estão ligados corretamente ao datasource e seus respectivos campos no banco de dados?
Ricardo
Curtir tópico
+ 0Posts
19/01/2014
Joel Rodrigues
Se o problema persistir, avise aqui, por favor.
Gostei + 0
20/01/2014
Ricardo
Se o problema persistir, avise aqui, por favor.
Amigo Joel,
Eu já havia feito isso, inclusive mesmo que não existam campos no fields editor os comandos funcionam, mas resolvei seguir o que vc falou e não adianta o problema persiste. A única coisa que mudou foi que o campo que ele informa não pode ser localizado é outro no momento de abrir a query para edição. Eu até fui desabilitando os campos ligados a essa query um por um no formulário, mas o erro vai acontecendo com cada um deles até que todos sejam verificados, ou seja, ele não consegue localizar nenhum campo.
Fiz um teste agora e aparentemente o erro esta nessa linha no botão de adicionar: SQL.Add('select max(id_end) as id_end from endereco');
Ela funciona perfeitamente ligada ao ADOtable, mas ao ADOQuery esta dando esse erro de não encontrar nada. Alterei a linha para SQL.Add('select * from endereco') e funcionou beleza. Então o erro está nela mas eu preciso que ela fique assim: SQL.Add('select max(id_end) as id_end from endereco'); porque eu preciso retornar o id do último registro inserido e o resultado deve ser somado +1 para ser o ID do próximo registro.
Sugestões?
Gostei + 0
20/01/2014
Joel Rodrigues
Gostei + 0
20/01/2014
Ricardo
Fiz um teste agora e aparentemente o erro esta nessa linha no botão de adicionar: SQL.Add('select max(id_end) as id_end from endereco');
Ela funciona perfeitamente ligada ao ADOtable, mas ao ADOQuery esta dando esse erro de não encontrar nada. Alterei a linha para SQL.Add('select * from endereco') e funcionou beleza. Então o erro está nela mas eu preciso que ela fique assim: SQL.Add('select max(id_end) as id_end from endereco'); porque eu preciso retornar o id do último registro inserido e o resultado deve ser somado +1 para ser o ID do próximo registro.
olha só que estranho:
if DataModule1.ADOQendereco.RecordCount = 0 then
endID := 0
else
with DataModule1.ADOQendereco do
begin
Close;
SQL.Clear;
SQL.Add('select max(id_end) as id_end from endereco');
Open;
endID:=FieldByName('id_end').AsInteger;
end;
DataModule1.ADOQendereco.Append;
DataModule1.ADOQendereco.FieldByName('id_end').Value := endID+1
end;
Dessa forma acima eu ligo o DataSource na Query e faço a pesquisa na Query e Append nela também. Não funciona, da erro para localizar os campos.
if DataModule1.ADOQendereco.RecordCount = 0 then
endID := 0
else
with DataModule1.ADOQendereco do
begin
Close;
SQL.Clear;
SQL.Add('select max(id_end) as id_end from endereco');
Open;
endID:=FieldByName('id_end').AsInteger;
end;
DataModule1.ADOendereco.Append;
DataModule1.ADOenderecoid_end.Value := endID+1;
end;
Exatamente como está acima eu ligo o DataSource ao ADOtable faço a pesquisa na Query e o append na tabela mesmo. Funciona 100%.
Sugestões?
Gostei + 0
20/01/2014
Joel Rodrigues
Gostei + 0
20/01/2014
Ricardo
ontem a noite isso me passou pela cabeça, inclusive em deixar apenas o modo de inserção em outro formulário, pior que em modo de edição ela não perde a referencia somente em inserção.
Gostei + 0
20/01/2014
Joel Rodrigues
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)