Fórum Bom dia pessoal, como tirar um erro de showmodal no Delphi? Segue a rotina... #530182

29/08/2015

0

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

Responder

Posts

29/08/2015

Bruno Henrique

Tente colocar nas propriedades visible := false
Responder

Gostei + 0

29/08/2015

Raimundo Pereira

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.
Responder

Gostei + 0

29/08/2015

Mauricio Ribeiro

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!
Responder

Gostei + 0

31/08/2015

Raimundo Pereira

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

Gostei + 0

31/08/2015

Mauricio Ribeiro

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?
Responder

Gostei + 0

31/08/2015

Mauricio Ribeiro

P2 OUTRA INFORMAÇÃO É A SEGUINTE:

O BOTÃO GRAVAR NO FORMULÁRIO ADICIONAR GRAVA NORMALMENTE OS DADOS, MAS NO FALTERAR NÃO GRAVA.
Responder

Gostei + 0

31/08/2015

Mauricio Ribeiro

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;
Responder

Gostei + 0

31/08/2015

Raimundo Pereira

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.
Responder

Gostei + 0

04/09/2015

Mauricio Ribeiro

[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!
Responder

Gostei + 0

04/09/2015

Raimundo Pereira

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.
Responder

Gostei + 0

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

Aceitar