Fórum Erro ao Deletar o Último Registro #253740
07/10/2004
0
Tenho uma tela pra visualização de revistas e outra pra cadastro. Na tela de visualização eu tenho o botao Apagar.. quando clicado ele exibe a mensagem perguntando se o usuario quer mesmo deletar o registro ou cancelar..
Bom, a visualizaçao é dividida pro Grupos e SubGrupos.. o Usuário seleciona um grupo, e após selecionar o subgrupo, sao listadas todas as revistas q estejam dentro deles.. ou seja.. eu posso ter 100 revistas na tabela, mas se só tiver 10 revistas naquele grupo e subgrupo, ele só me lista as 10.. até aí tudo certo.. e, se eu for apagar as 10 revistas por exemplo, ele apaga 9.. quando chega a última revista dá o seguinte erro:
Project Proj.exe raised exception class EUIBError with message ´conversion error from string"" Overflow occurred during data type conversion. Error code: 14´. Process Stopped.
O q pode ser isso???
Allan Elias Ramos :roll:
Aersoftware
Curtir tópico
+ 0Posts
08/10/2004
Osocram
Gostei + 0
08/10/2004
Rômulo Barros
Gostei + 0
08/10/2004
Aersoftware
Se o botao Sim da Mensagem for clicado, ele deleta e da o ApllyUpdates..
Tanto q funciona pras demais revistas, somente a ultima ele trava..
E eu tenho outro form parecido com esse, q só lista historias dakela revista q funciona perfeitamente.. vou postar os códigos direitinho quando chegar em casa pra melhor entendimento.. :wink:
Allan Elias Ramos :roll:
Gostei + 0
08/10/2004
Aersoftware
Entao acho q tem a ver com o código sql de pesquisa.. pois no evento OnCloseUp do LkUp q eu listo o subgrupo, ele tem o código pra listar todas revistas q tenha as chaves estrangeiras de grupo e subgrupos iguais as chaves primeirias dos mesmos...
Allan Elias Ramos :roll:
Gostei + 0
08/10/2004
Aersoftware
if LkUpListaSubGrupos.Text <> ´´ then begin DmDados.ClientNacionais.Close; with DmDados.SqlNacionais do begin Close; CommandText := ´Select * From TbRevNacionais Where FkCod_Grupo =´ +IntToStr(LkUpListaGrupos.KeyValue) + ´And FkCod_SubGrupo= ´ +IntToStr(LkUpListaSubGrupos.KeyValue) + ´Order By NomeNumero Asc´; Open; end; DmDados.ClientNacionais.Open; StbNacionais.Panels[0].Text := ´Total de Revistas: ´+ IntToStr(DmDados.ClientNacionais.RecordCount); if DmDados.ClientNacionais.RecordCount = 0 then begin BtEditar.Enabled := False; BtApagar.Enabled := False; BtHistorias.Enabled := False; LbEditoras.Visible := False; LbMesAno.Visible := False; end else begin BtEditar.Enabled := True; BtApagar.Enabled := True; BtHistorias.Enabled := True; LbEditoras.Visible := True; LbMesAno.Visible := True; end; end; end;
E o seguinte é pra apagar os registros.. o comando ´ListarApagar´ chama um procedimento com o código acima...
If MessageBox(Handle, ´Tem certeza que deseja excluir esta Revista Nacional?´, ´Confirmar Exclusão´, Mb_YesNo + Mb_IconQuestion + Mb_DefButton2) = IdYes Then begin DmDados.ClientNacionais.Delete; DmDados.ClientNacionais.ApplyUpdates(0); ListarApagar; end else begin DmDados.ClientNacionais.Cancel; end;
Como eu falei, tenho outro form assim e funciona a exclusao do último arquivo..
Allan Elias Ramos :roll:
Gostei + 0
11/10/2004
Aersoftware
Allan Elias Ramos :wink:
Gostei + 0
18/10/2004
Aersoftware
Tenho um form de vizualização de revistas... o usuário tem q selecionar 2 LkUps pra listas a revista.. o 1º LookUp faz o seguinte:
if LkUpListaGrupos.Text <> ´´ Then //Lista todos os subgrupos de um determinado grupo begin DbGridLista.Visible := True; LkUpListaSubGrupos.KeyValue := Null; LkUpListaSubGrupos.Enabled := True; DmDados.ClientSubGrupos.Close; With DmDados.SqlSubGrupos do begin Close; CommandText := ´Select * From TbSubGrupos Where FkCod_Grupo =´ +IntToStr(LkUpListaGrupos.KeyValue) + ´Order By NomeSubGrupo Asc´; Open; end; DmDados.ClientSubGrupos.Open; DmDados.ClientNacionais.Close; with DmDados.SqlNacionais do begin Close; CommandText := ´Select * From TbRevNacionais Where FkCod_Grupo =´ +IntToStr(LkUpListaGrupos.KeyValue) + ´And FkCod_SubGrupo = 0´ + ´Order By NomeNumero´; Open; end; DmDados.ClientNacionais.Open; end; end;
Depois com os SubGrupos ligados akele Grupo listados, no OnCloseUp do SubGrupos ele lista as revistas assim:
if LkUpListaSubGrupos.Text <> ´´ then begin DmDados.ClientNacionais.Close; with DmDados.SqlNacionais do begin Close; CommandText := ´Select * From TbRevNacionais Where FkCod_Grupo =´ +IntToStr(LkUpListaGrupos.KeyValue) + ´And FkCod_SubGrupo= ´ +IntToStr(LkUpListaSubGrupos.KeyValue) + ´Order By NomeNumero´; Open; end; DmDados.ClientNacionais.Open; StbNacionais.Panels[0].Text := ´Total de Revistas: ´+ IntToStr(DmDados.ClientNacionais.RecordCount); if DmDados.ClientNacionais.RecordCount = 0 then begin BtEditar.Enabled := False; BtApagar.Enabled := False; BtHistorias.Enabled := False; LbEditoras.Visible := False; LbMesAno.Visible := False; end else begin BtEditar.Enabled := True; BtApagar.Enabled := True; BtHistorias.Enabled := True; LbEditoras.Visible := True; LbMesAno.Visible := True; end; end; end;
Esse procedimento eu nomeie da ListarApagar, pq vai ser usado outras vezes.. no botão apagar tem o seguinte código:
If MessageBox(Handle, ´Tem certeza que deseja excluir esta Revista Nacional? Todas histórias ligadas a ela também serão excluídas!´, ´Confirmar Exclusão´, Mb_YesNo + Mb_IconQuestion + Mb_DefButton2) = IdYes Then begin DmDados.ClientNacionais.Delete; DmDados.ClientNacionais.ApplyUpdates(0); ListarApagar; end else begin DmDados.ClientNacionais.Cancel; end;
Pra ele apagar e listar novamente as revistas..
Ele funciona até a última revista de determinado Grupo/SubGrupo.. na última da o erro do 1º post na hora de apagar...
Eu tenho tb um cadastro de histórias ligadas as revistas.. podem ser várias histórias em uma revista.. o processo é o mesmo, de mostrar e apagar.. e nesse cadastro funciona.. nao da erro nenhum ao deletar o último registro.. fica assim os códigos..
Procedimento para mostrar e para apagar.. q eu coloquei no OnShow.. como MostrarApagar..
DmDados.ClientHistNac.Close; With DmDados.SqlHistNac do begin Close; CommandText := ´Select * From TbHistNacionais Where FkCod_RevNac =´ +QuotedStr(FrmVerNacionais.DbEdtCodRevista.Text) + ´Order By Ordem´; Open; end; DmDados.ClientHistNac.Open; LbNomeRevista.Caption := FrmVerNacionais.DbNomeNumero.Caption; StbHistorias.Panels[0].Text := ´Total de Histórias: ´ + IntToStr(DmDados.ClientHistNac.RecordCount); if DmDados.ClientHistNac.RecordCount = 0 then begin LbOriginal.Visible := False; BtEditar.Enabled := False; BtApagar.Enabled := False; end else begin LbOriginal.Visible := True; BtEditar.Enabled := True; BtApagar.Enabled := True; end; end;
E no botão Apagar..
If MessageBox(Handle, ´Tem certeza que deseja excluir esta História Nacional?´, ´Confirmar Exclusão´, Mb_YesNo + Mb_IconQuestion + Mb_DefButton2) = IdYes Then begin DmDados.ClientHistNac.Delete; DmDados.ClientHistNac.ApplyUpdates(0); MostrarApagar; end else begin DmDados.ClientHistNac.Cancel; end;
Ou seja, é praticamente a mesma coisa os dois.. na hora de deletar ele lista tudo denovo pra atualizar.. só q no primeiro cadastro, de revistas, ele da erro no último registro, no das histórias nao.. :cry:
Tentei explicar nos mínimos detalhes.. espero q consiga ajuda.. grato..
Allan Elias Ramos :roll:
Gostei + 0
20/10/2004
Aersoftware
Allan Elias Ramos :wink:
Gostei + 0
21/10/2004
Rodolpho123
Gostei + 0
22/10/2004
Aersoftware
O estranho é q é só no último q registro q da isso.. se eu tiver 10, 9 ele me apaga..
Allan Elias Ramos :cry:
Gostei + 0
02/11/2004
Aersoftware
Como nesse form eu tenho duas Grids (uma pra exibir as edições das revistas e outra pra exibir as histórias ligadas nela revista), eu tinha o seguinte código no evento OnAfterScrool:
O erro esta justamente no if em negrito.. como era o último registro, na hora de listar a história ele não achava o parâmetro passado pra pesquisa, retornando o erro.. o erro seria sem esse if.. como coloquei o if, ele só faz essa pesquisa se o recordcount for diferente de 0, tendo algum registro pra ele procurar.. se não tiver, ele passa por essa pesquisa direto, evitando o erro..
Valeu pela ajuda de todos.. abraços...
Allan Elias Ramos :roll:
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)