ERRO BOF OU EOF?
Qual seria esse erro do projeto em anexo:
Run-time error [ô]3021[ô]:
BOF ou EOF são verdadeiros, ou registro atual foi excluido.
A operação solicitada pelo aplicativo requer um registo atual.
(O mesmo não tem registro cadastrado no banco de dados)
Este erro ocorre quando tento cadastrar um membro.
Alguem teria uma lógica do erro ocorrido?
#Obs: Arquivo em anexo com Banco e uma ocx
Quando as duas [Ô]flags[Ô]:
- BOF = Begin Of File;
- EOF = End Of File;
Estão verdadeiras, quer dizer que a tabela, em questão, não tem nenhum registro.
Como você está cadastrando um registro, então a mensagem é um tanto [Ô]estranha[Ô], por que não inserção não necessário verificar nada além de uma [Ô]PK duplicada[Ô] ... não pode duplicar a chave primária, mas caso não tenha registros no banco de dados, então com certeza não existe chave primária duplicada e se tiver chave estrangeira, verificar se ela já está cadastrada (para não ficar com um registro órfão).
Precisa ver o que esta [Ô].OCX[Ô] está fazendo... experimente colocar (por fora e no braço) um registro dentro da base de dados. Depois volte para o programa e cadastre OUTRO registro (não duplique a chave). Se cadastrar normalmente, possivelmente a [Ô].OCX[Ô] não está gerenciando corretamente tabelas vazias...
veja também:
================================================
[RESOLVED] Run-Time Error [ô]3021[ô] No Current Record Found
http://www.vbforums.com/showthread.php?778905-RESOLVED-Run-Time-Error-3021-No-Current-Record-Found
================================================
run-time error [ô]3021[ô]
http://www.dreamincode.net/forums/topic/68150-run-time-error-3021/
================================================
IN Vb6.0 runtime error 3021 either bof or eof is true
http://www.codeproject.com/Questions/52954/IN-Vb-runtime-error-either-bof-or-eof-is-t
================================================
[HELP] run-time error [Ô]3021[Ô] : no current record vb6
http://forum.zwame.pt/threads/help-run-time-error-3021-no-current-record-vb6.718275/
================================================
[][ô]s,
Tunusat.
Citação::
ROBSONSLZ,
Quando as duas [Ô]flags[Ô]:
- BOF = Begin Of File;
- EOF = End Of File;
Estão verdadeiras, quer dizer que a tabela, em questão, não tem nenhum registro.
Como você está cadastrando um registro, então a mensagem é um tanto [Ô]estranha[Ô], por que não inserção não necessário verificar nada além de uma [Ô]PK duplicada[Ô] ... não pode duplicar a chave primária, mas caso não tenha registros no banco de dados, então com certeza não existe chave primária duplicada e se tiver chave estrangeira, verificar se ela já está cadastrada (para não ficar com um registro órfão).
Precisa ver o que esta [Ô].OCX[Ô] está fazendo... experimente colocar (por fora e no braço) um registro dentro da base de dados. Depois volte para o programa e cadastre OUTRO registro (não duplique a chave). Se cadastrar normalmente, possivelmente a [Ô].OCX[Ô] não está gerenciando corretamente tabelas vazias...
veja também:
================================================
[RESOLVED] Run-Time Error [ô]3021[ô] No Current Record Found
http://www.vbforums.com/showthread.php?778905-RESOLVED-Run-Time-Error-3021-No-Current-Record-Found
================================================
run-time error [ô]3021[ô]
http://www.dreamincode.net/forums/topic/68150-run-time-error-3021/
================================================
IN Vb6.0 runtime error 3021 either bof or eof is true
http://www.codeproject.com/Questions/52954/IN-Vb-runtime-error-either-bof-or-eof-is-t
================================================
[HELP] run-time error [Ô]3021[Ô] : no current record vb6
http://forum.zwame.pt/threads/help-run-time-error-3021-no-current-record-vb6.718275/
================================================
[][ô]s,
Tunusat.
O registro do banco (da tabela) não esta duplicado.
O erro ocorre ao salvar os dados incluido.
A OCX faz refencia ao textbox do projeto.
Grato
Quando as duas [Ô]flags[Ô] são [Ô]true[Ô] não tem registros na base de dados.
Não tem como incluir um registro diretamente no banco de dados sem passar pelo programa ou pelo OCX?
[][ô]s,
Tunusat.
Citação::
Mas ROBSONSLZ,
Quando as duas [Ô]flags[Ô] são [Ô]true[Ô] não tem registros na base de dados.
Não tem como incluir um registro diretamente no banco de dados sem passar pelo programa ou pelo OCX?
[][ô]s,
Tunusat.
Incluir um registro no banco de dados (direto) dá o mesmo erro.
Sub Carrega_Campos()
[ô]Erro
[txt-color=#e80000] Rst.AddNew[/txt-color]
Rst!CodiCont = vCodiUsua & LblCodi.Caption
Rst!FotoCont = StrImagemBanco
Rst!IDFoto = vCodiUsua & LblCodi.Caption
Rst!FuncaoCont = Trim(CboFuncao)
Rst!NomeCont = Trim(TxtNome.Text)
Rst!SexoCont = Trim(CboSexo)
Rst!PaiCont = Trim(TxtPai.Text)
Rst!MaeCont = Trim(TxtMae.Text)
Rst!NascCont = Trim(TxtNasc.Text)
Rst!NatuCont = Trim(TxtNatu.Text)
Rst!NacioCont = Trim(TxtNacio.Text)
Rst!ProfiCont = Trim(TxtProfi.Text)
Rst!CivilCont = Trim(CboCivil)
Rst!ConjuCont = Trim(TxtConju.Text)
Rst!EndeCont = Trim(TxtEnde.Text)
Rst!BairCont = Trim(TxtBair.Text)
Rst!CEPCont = Trim(TxtCEP.Text)
Rst!CidaCont = Trim(TxtCida.Text)
Rst!UFCont = Trim(TxtUF.Text)
Rst!EmaiCont = Trim(TxtEmai.Text)
Rst!CeluCont = Trim(TxtCelular.Text)
Rst!RGCont = Trim(TxtRGS.Text)
Rst!OrgaoCont = Trim(TxtOrgao.Text)
Rst!ExpeCont = Trim(TxtExpe.Text)
Rst!CPFCont = Trim(TxtCPFs.Text)
Rst!FatorCont = Trim(CboFator)
Rst!AdmisCont = Trim(TxtAdmis.Text)
Rst!IdadeCont = Trim(TxtIdade.Text)
Rst!EntiCont = Trim(TxtEnti.Text)
Rst!MatriCont = Trim(TxtMatri.Text)
Rst!CategoCont = Trim(CboCatego)
Rst!EscolaCont = Trim(CboEscola)
Rst!ObseCont = Trim(TxtObse.Text)
Rst!CodiUsua = vCodiUsua
[txt-color=#e80000]Rst.Update[/txt-color]
End Sub
Citação::
Testa deste jeito, ai vai ver como modificar.
Sub Carrega_Campos()
[ô]Erro
[txt-color=#e80000] Rst.AddNew[/txt-color]
Rst!CodiCont = vCodiUsua & LblCodi.Caption
Rst!FotoCont = StrImagemBanco
Rst!IDFoto = vCodiUsua & LblCodi.Caption
Rst!FuncaoCont = Trim(CboFuncao)
Rst!NomeCont = Trim(TxtNome.Text)
Rst!SexoCont = Trim(CboSexo)
Rst!PaiCont = Trim(TxtPai.Text)
Rst!MaeCont = Trim(TxtMae.Text)
Rst!NascCont = Trim(TxtNasc.Text)
Rst!NatuCont = Trim(TxtNatu.Text)
Rst!NacioCont = Trim(TxtNacio.Text)
Rst!ProfiCont = Trim(TxtProfi.Text)
Rst!CivilCont = Trim(CboCivil)
Rst!ConjuCont = Trim(TxtConju.Text)
Rst!EndeCont = Trim(TxtEnde.Text)
Rst!BairCont = Trim(TxtBair.Text)
Rst!CEPCont = Trim(TxtCEP.Text)
Rst!CidaCont = Trim(TxtCida.Text)
Rst!UFCont = Trim(TxtUF.Text)
Rst!EmaiCont = Trim(TxtEmai.Text)
Rst!CeluCont = Trim(TxtCelular.Text)
Rst!RGCont = Trim(TxtRGS.Text)
Rst!OrgaoCont = Trim(TxtOrgao.Text)
Rst!ExpeCont = Trim(TxtExpe.Text)
Rst!CPFCont = Trim(TxtCPFs.Text)
Rst!FatorCont = Trim(CboFator)
Rst!AdmisCont = Trim(TxtAdmis.Text)
Rst!IdadeCont = Trim(TxtIdade.Text)
Rst!EntiCont = Trim(TxtEnti.Text)
Rst!MatriCont = Trim(TxtMatri.Text)
Rst!CategoCont = Trim(CboCatego)
Rst!EscolaCont = Trim(CboEscola)
Rst!ObseCont = Trim(TxtObse.Text)
Rst!CodiUsua = vCodiUsua
[txt-color=#e80000]Rst.Update[/txt-color]
End Sub
#OMAR2011
Alteração testada:
O codigo não muda. (LblCodi) fica duplicado ao cadastrar o segundo membro.
Grato,
Não é aconselhável usar isto.
Use numeração automática.
Dim vTamTab As Integer
Dim x As Integer
If Rst.RecordCount = 0 Then
LblCodi.Caption = 1
Exit Sub
Else
Rst.MoveFirst
vTamTab = Rst.RecordCount
For x = 1 To vTamTab
If Rst!CodiCont <> x Then
Exit For
End If
Rst.MoveNext
Next x
[txt-color=#e80000] LblCodi.Caption = x + 1
End If[/txt-color]
End Sub
Um tanto estranho
Sub Carrega_Campos()
[ô]Erro
Rst.AddNew
Rst!CodiCont = vCodiUsua [txt-color=#e80000]& [/txt-color]LblCodi.Caption
Citação::
Sub Gera_Codigo()
Não é aconselhável usar isto.
Use numeração automática.
Testado... para numeracao automatica.
Dá erro... (com ou sem o gera codigo)