Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Duduh_Capixaba

Erro com o BOF

Recommended Posts

Estreando aqui com uma pergunta. Vejam meu código:

 

Dim Conexao As New ADODB.Connection
Dim TbDados As New ADODB.Recordset

Private Sub Form_Load()
	Dim Comando As String
	
	Comando = "SELECT CLIENTE, NOME FROM CDCLIENT ORDER BY CLIENTE"
	Conexao = "Driver=Firebird/Interbase(r) driver;" & _
	"Dbname=C:\VSig\SgaIb.fdb;CHARSET=NONE;PWD=masterkey;UID=SYSDBA"
	Conexao.Open
	TbDados.Open Comando, Conexao, adOpenKeyset, adLockReadOnly
End Sub

Private Sub Command1_Click()
	TbDados.MoveFirst
	Text1.Text = TbDados("CLIENTE")
	Text2.Text = TbDados("NOME")
End Sub

Private Sub Command2_Click()
	TbDados.MovePrevious
	If TbDados.BOF Then
		TbDados.MoveNext
		MsgBox "Você atingiu o primeiro registro"
	Else
		Text1.Text = TbDados("CLIENTE")
		Text2.Text = TbDados("NOME")
	End If
End Sub

Private Sub Command3_Click()
	TbDados.MoveNext
	If TbDados.EOF Then
		TbDados.MovePrevious
		MsgBox "Você atingiu o último registro"
	Else
		Text1.Text = TbDados("CLIENTE")
		Text2.Text = TbDados("NOME")
	End If
End Sub

Private Sub Command4_Click()
	TbDados.MoveLast
	Text1.Text = TbDados("CLIENTE")
	Text2.Text = TbDados("NOME")
End Sub

Private Sub Form_Unload(Cancel As Integer)
	Conexao.Close
End Sub

É apenas um Form que traz os dados da tabela cliente para dois Textbox. Os botões (Primeiro, Anterior, Próximo, Último) estão funcionando legal, só numa situação está gerando erro: quando eu chego no primeiro registro com o botão Anterior. A mensagem aparece legal, mas se eu clico em outro botão aparece o seguinte erro:

 

"Run-time error '-2147217887 (80040e21)':

Operação OLE DB de várias etapas gerou erros.

Verifique cada valor de status OLE DB. Nada foi executado."

 

Estou usando uma base de dados Firebird (FDB).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acabei de testar com uma base de dados Access e funcionou http://forum.imasters.com.br/public/style_emoticons/default/natal_sad.gif Qual será o problema com a base FDB?

 

Também percebi que o AbsolutePosition do recordset Access acompanha o número do registro selecionado, já no Firebird, o AbsolutePosition sempre está na posição "-1". Ele só muda para "-3" quando chega no final do arquivo e para "-2" no início do arquivo http://forum.imasters.com.br/public/style_emoticons/default/natal_sad.gif Estranho d+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que driver você esta utilizando para acessar a base Firebird?

 

Conexao = "Driver=Firebird/Interbase® driver;" & _

"Dbname=C:\VSig\SgaIb.fdb;CHARSET=NONE;PWD=masterkey;UID=SYSDBA"

 

Aliás, você é de que cidade no ES?

Compartilhar este post


Link para o post
Compartilhar em outros sites

IBPhoenix Firebird ODBC Driver 1.2. Este é o driver fornecido no site oficial do Firebird para conexões ODBC. Só não sei se é o mais atual. Seria este o problema?

 

Sou de Venda Nova do Imigrante - ES

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, não sei se é este o problema, mas quem sabe...

 

Eu uso o Zstyle, o mais indicado para OLEDB...

 

Eu uso também o Firebird.

 

Eu penei pra conseguir este driver, mas se quiser posso te enviar pelo MSN...

 

Meu MSN é edwilsoncurti@bol.com.br

 

Se quiser este driver te mando agora... basta me adicionar...

 

Aliás, estamos bem perto... Sou de Guaçuí-ES

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui galera! Procurando em uns foruns de outros países achei a solução: basta modificar o CursorLocation do RecordSet para adUseClient. No meu código ficou assim:

 

Private Sub Form_Load()
	Dim Comando As String
	
	Comando = "SELECT CLIENTE, NOME FROM CDCLIENT ORDER BY CLIENTE"
	Conexao = "Driver=Firebird/Interbase(r) driver;" & _
	"Dbname=C:\VSig\SgaIb.fdb;CHARSET=NONE;PWD=masterkey;UID=SYSDBA"
	
	TbDados.CursorLocation = adUseClient
	TbDados.Open Comando, Conexao, adOpenKeyset, adLockReadOnly
End Sub

Pronto! Funcionou que é uma beleza, hehe :D E com um detalhe: o AbsolutePosition agora segue a posição do registro. Vlw pelas respostas aê!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.