Bom dia pessoal, como tirar um erro de showmodal no Delphi? Segue a rotina...

Delphi

29/08/2015

banco.table1.edit;
falterar.edit1.text:=banco.table1.fieldbyname('Codigo').asstring;
falterar.edit2.text:=banco.table1.fieldbyname('Produto').asstring;
falterar.edit3.text:=banco.table1.fieldbyname('Fornecedor').asstring;
falterar.maskedit1.text:=banco.table1.fieldbyname('DataPG').asstring;
falterar.maskedit2.text:=banco.table1.fieldbyname('DataVC').asstring;
falterar.edit4.text:=banco.table1.fieldbyname('Valor').asstring;
falterar.edit5.text:=banco.table1.fieldbyname('Situacao').asstring;
falterar.ShowModal; // o erro está nesta linha, quando clico no botão gravar para efetuar a alteração ele dá esse erro.[img:descricao=Erro de ShowModal quando executo a gravação dos dados no formulário alterar.

]http://arquivo.devmedia.com.br/forum/imagem/450776-20150829-091751.png[/img]
Mauricio Ribeiro

Mauricio Ribeiro

Curtidas 0

Respostas

Bruno Henrique

Bruno Henrique

29/08/2015

Tente colocar nas propriedades visible := false
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

29/08/2015

Bruno, Bom dia


Verifique a propriedade do Form falterar [VISIBLE:=FALSE]
Verifique também se o form falterar está no AutoCreat, se não estiver.

Lembre-se, você está preenchendo um outro form com os dados .

falterar := Tfalterar.Create(Application);
banco.table1.edit;
falterar.edit1.text:=banco.table1.fieldbyname('Codigo').asstring;
falterar.edit2.text:=banco.table1.fieldbyname('Produto').asstring;
falterar.edit3.text:=banco.table1.fieldbyname('Fornecedor').asstring;
falterar.maskedit1.text:=banco.table1.fieldbyname('DataPG').asstring;
falterar.maskedit2.text:=banco.table1.fieldbyname('DataVC').asstring;
falterar.edit4.text:=banco.table1.fieldbyname('Valor').asstring;
falterar.edit5.text:=banco.table1.fieldbyname('Situacao').asstring;
falterar.ShowModal; // o erro está nesta linha, quando clico no botão gravar para efetuar a alteração ele dá esse erro.
GOSTEI 0
Mauricio Ribeiro

Mauricio Ribeiro

29/08/2015

Boa tarde Bruno!

Estou aprendendo a programar e não sei muita coisa mesmo, então aí vai mais um problema em que preciso de ajuda:
O comando falterar := Tfalterar.Create(Application); resolveu o problema do erro acima descrito, mas ele gerou um outro problema, o botão "sair" não está mais fechando o formulário de atualização das informações.

Um outro problema é que as alterações não são realizadas. Clico em gravar e ele não grava as atualizações que fiz!
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

29/08/2015

Mauricio Ribeiro, Bom dia, Qual o código do Botão sair ?
GOSTEI 0
Mauricio Ribeiro

Mauricio Ribeiro

29/08/2015

Boa tarde P2

O código é esse: Falterar.Close;

O Falterar não está gravando a alteração, verifiquei no datamodule as configurações do table e do datasource e estão corretas.

O Banco é paradox, será que ele corrompeu?
GOSTEI 0
Mauricio Ribeiro

Mauricio Ribeiro

29/08/2015

P2 OUTRA INFORMAÇÃO É A SEGUINTE:

O BOTÃO GRAVAR NO FORMULÁRIO ADICIONAR GRAVA NORMALMENTE OS DADOS, MAS NO FALTERAR NÃO GRAVA.
GOSTEI 0
Mauricio Ribeiro

Mauricio Ribeiro

29/08/2015

procedure TFalterar.SpeedButton1Click(Sender: TObject);
begin
banco.table1.edit;
falterar.edit1.text:=banco.table1.fieldbyname('Codigo').asstring;
falterar.edit2.text:=banco.table1.fieldbyname('Produto').asstring;
falterar.edit3.text:=banco.table1.fieldbyname('Fornecedor').asstring;
falterar.maskedit1.text:=banco.table1.fieldbyname('DataPG').asstring;
falterar.maskedit2.text:=banco.table1.fieldbyname('DataVC').asstring;
falterar.edit4.text:=banco.table1.fieldbyname('Valor').asstring;
falterar.edit5.text:=banco.table1.fieldbyname('Situacao').asstring;
banco.table1.Post;-----------------------------------------------------------------// adicionei esse código para fechar a gravação, mas não funcionou, continua não gravando a alteração.
falterar.Show;
end;
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

29/08/2015

Mauricio Ribeiro, boa tarde essa rotina apenas pega os dados da tabela e preenche seu form :
procedure TFalterar.SpeedButton1Click(Sender: TObject);

Na edição a rotina é inversa.
begin
banco.table1.locate('Codigo',falterar.edit1.text,[]);\\ Vai para o registro a ser alterado.
Banco.table1.edit; \\ Coloca a tabela em modo de edição

\\banco.table1.fieldbyname('Codigo').asstring:=falterar.edit1.text; \\Esse código não se altera pois é funciona como a ID do registro
banco.table1.fieldbyname('Produto').asstring:=falterar.edit2.text;
banco.table1.fieldbyname('Fornecedor').asstring:=falterar.edit3.text;
banco.table1.fieldbyname('DataPG').asstring:=falterar.maskedit1.text;
banco.table1.fieldbyname('DataVC').asstring:=falterar.maskedit2.text;
banco.table1.fieldbyname('Valor').asstring:=falterar.edit4.text;
banco.table1.fieldbyname('Situacao').asstring:=falterar.edit5.text;
banco.table1.Post;
-----------------------------------------------------------------// adicionei esse código para fechar a gravação, mas não funcionou, continua não gravando a alteração.
falterar.Show;
end;

Aguardo retorno.
GOSTEI 0
Mauricio Ribeiro

Mauricio Ribeiro

29/08/2015

[img]http://arquivo.devmedia.com.br/forum/imagem/450776-20150904-091557.png[/img]

Após inserir esse código, compilei e executei o projeto, acionei o falterar. Essa rotina gerou esse erro!

Obrigado P2!
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

29/08/2015

Bom dia , Mauricio.

Debug e veja em qual linha está apresentando erro.

Mas acredito que seja o tipo de campo.
No caso um campo que na tabela esteja Integer e no form String.

Exemplo

O campo ('Codigo'). na tabela está integer.
Ao levar para o form. use a rotina.
falterar.edit1.text:=inttostr(banco.table1.fieldbyname('Codigo').asinteger);

Mauricio, não testei.
Aguardo retorno.
GOSTEI 0
POSTAR