Aparecer erro quando não encontra tabela
Tenho um programa que precisa de uma tabela (.mdb) para funcionar, só que se essa tabela for renomeada ou trocada de pasta, o programa fecha sem aparecer mensagem de erro.
Gostaria que aparecesse uma mensagem dizendo que não encontrou o arquivo tal e desse a opção de localizá-lo antes de abrir a aplicação.
Acho que se faz isso com os comandos [b:929667fcf5]try exept[/b:929667fcf5] só que não tenho idéia de como utilizá-los.
Gostaria que aparecesse uma mensagem dizendo que não encontrou o arquivo tal e desse a opção de localizá-lo antes de abrir a aplicação.
Acho que se faz isso com os comandos [b:929667fcf5]try exept[/b:929667fcf5] só que não tenho idéia de como utilizá-los.
Vagner.oliveira
Curtidas 0
Respostas
Marco Salles
14/05/2007
no caso mais simplista simplesmente voce pode :
try
-->>métpodos que chama a tabela ou faz uso dela
except
showmessage(´ERRO : Operação ilegal . tabela Tal não existe , não foi encontrada ou foi renomeada etc...´)
end; //fim do bloco try exceptd
GOSTEI 0
Paullsoftware
14/05/2007
Ou por outra fazer uma verificação se o arquivo existe
if not FileExists(´NomeArquivo´) then
//Mesangem de erro
:wink:
if not FileExists(´NomeArquivo´) then
//Mesangem de erro
:wink:
GOSTEI 0
Martins
14/05/2007
No seu caso o código passado pelo [b:1e607adf94]Marco Salles[/b:1e607adf94] é o mais indicado, com ele vc vai ter o retorno esperado.
boa sorte!
PS: O Código do [b:1e607adf94]paullsoftware[/b:1e607adf94] não funcionaria pq as tabelas estão fisicamente dentro do arquivo MDB, se fosse Paradox ou outro similar funcionaria tb.
t+
boa sorte!
PS: O Código do [b:1e607adf94]paullsoftware[/b:1e607adf94] não funcionaria pq as tabelas estão fisicamente dentro do arquivo MDB, se fosse Paradox ou outro similar funcionaria tb.
t+
GOSTEI 0
Vagner.oliveira
14/05/2007
Entre o [b:51c76629e6]Try e Exept [/b:51c76629e6]está tudo ok, mas depois deles o form não abre.
Coloquei 3 forms pra teste:
Form1 -> está a tabela a ser mostrada.
Form2 -> quando a tabela não é encontrada abre o Form2 para localizá-la
Form3 -> é o ´splash´ que depois de fechado verifica se a tabela está junto ao executável.
Form3 - ´Splash´ (é que coloquei um botão pra fechar manualmente, nada de mais)
Form2 - Local para selecionar o caminho da tabela
Form1 - Se o caminho da tabela está ok ele abre.
-
-
[size=16:51c76629e6]O problema é que depois do try e exept estarem OK o form 1 não abre, ele pisca e fecha o programa.
Lá no avaliable forms coloquei um a um para o outro lado (sendo que o form3 é o q abre primeiro) e persiste o erro.
[/size:51c76629e6]
Coloquei 3 forms pra teste:
Form1 -> está a tabela a ser mostrada.
Form2 -> quando a tabela não é encontrada abre o Form2 para localizá-la
Form3 -> é o ´splash´ que depois de fechado verifica se a tabela está junto ao executável.
Form3 - ´Splash´ (é que coloquei um botão pra fechar manualmente, nada de mais)
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//Hide;
Form1.Table1.Close;
try
Form1.Table1.DatabaseName:=Form1.Table2.FieldByName(´caminho´).AsString;
Form1.Table1.Open;
except
Form2.StatusBar1.Panels[0].Text:=Form1.Table2.FieldByName(´caminho´).AsString;
showmessage(´ERRO: tabela não encontrada selecione o caminho coreto´);
Form2.ShowModal;
end; {fim do bloco try exceptd
quando as 2 ações acima estão Ok ele executa os
comandos descritos abaixo}
ShowMessage(´Fim do bloco Exept´);
Form1.Show;
end;
Form2 - Local para selecionar o caminho da tabela
procedure TForm2.Button1Click(Sender: TObject); begin Form1.Table1.Close; try Form1.Table1.DatabaseName:=ShellTreeView1.Path +´\´; Form1.Table1.Open; Form1.Show; except showmessage(´ERRO: tabela não encontrada selecione o caminho coreto´); end; //fim do bloco try exceptd StatusBar1.Panels[0].Text:=ShellTreeView1.Path +´\´; Form1.Table2.Edit; Form1.Table2.FieldByName(´caminho´).AsString:=ShellTreeView1.Path +´\´; Form1.Table2.Post; end;
Form1 - Se o caminho da tabela está ok ele abre.
procedure TForm1.FormShow(Sender: TObject); begin Form2.Hide; end;
-
-
[size=16:51c76629e6]O problema é que depois do try e exept estarem OK o form 1 não abre, ele pisca e fecha o programa.
Lá no avaliable forms coloquei um a um para o outro lado (sendo que o form3 é o q abre primeiro) e persiste o erro.
[/size:51c76629e6]
GOSTEI 0
Paullsoftware
14/05/2007
No seu caso o código passado pelo [b:b7b5814884]Marco Salles[/b:b7b5814884] é o mais indicado, com ele vc vai ter o retorno esperado.
boa sorte!
PS: O Código do [b:b7b5814884]paullsoftware[/b:b7b5814884] não funcionaria pq as tabelas estão fisicamente dentro do arquivo MDB, se fosse Paradox ou outro similar funcionaria tb.
t+
Valeu Martins, foi uma leitura errada... eu li como arquivo mdb e não tabela, desculpa ae o vacilo!! :oops:
GOSTEI 0
Martins
14/05/2007
[quote:cddc511a0d=´Martins´]No seu caso o código passado pelo [b:cddc511a0d]Marco Salles[/b:cddc511a0d] é o mais indicado, com ele vc vai ter o retorno esperado.
boa sorte!
PS: O Código do [b:cddc511a0d]paullsoftware[/b:cddc511a0d] não funcionaria pq as tabelas estão fisicamente dentro do arquivo MDB, se fosse Paradox ou outro similar funcionaria tb.
t+
Valeu Martins, foi uma leitura errada... eu li como arquivo mdb e não tabela, desculpa ae o vacilo!! :oops:[/quote:cddc511a0d]
Tranquilo meu irmão, fica frio isso acontece.
[b:cddc511a0d]vagner.oliveira[/b:cddc511a0d] Tente trocar [b:cddc511a0d]Show[/b:cddc511a0d] por [b:cddc511a0d]ShowModal[/b:cddc511a0d].
GOSTEI 0
Vagner.oliveira
14/05/2007
tentei show, showmodal, application.inicialize e nada. alguma dica?
GOSTEI 0