CLASSE QUE CARREGA DATAGRID
Galera estou tentando carregar um datagrid com esse modulo de classe mas esta dando o seguinte erro:
Run-time error '7004'
The rowset is not bookmarkable.
O que esta acontecendo?
************************************************************************************************************
'Modulo de Classe
Option Explicit
Private cnn As ADODB.Connection
Private rsClientes As ADODB.Recordset
Private Sub Class_Initialize()
Set cnn = New ADODB.Connection
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C: este\Clientes.mdb;Persist Security Info=False"
Set rsClientes = New ADODB.Recordset
With rsClientes
.Source = "Select * from Clientes"
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C: este\Clientes.mdb;Persist Security Info=False"
.Open
End With
DataMembers.Add "Clientes"
End Sub
Private Sub Class_GetDataMember(DataMember As String, Data As Object)
Select Case DataMember
Case ""
Set Data = Nothing
Case "Clientes"
Set Data = rsClientes
Case Else
MsgBox "Erro de dados", vbCritical
End Select
End Sub
************************************************************************************************************
************************************************************************************************************
'Formulario
Option Explicit
Private clientesDados As clsClientes
Private Sub Form_Load()
Set clientesDados = New clsClientes
Set dg1.DataSource = clientesDados
dg1.DataMember = "Clientes"
End Sub
************************************************************************************************************
Fiz referencia as bibliotecas: Microsoft Activex...2.5 e Microsoft Data Binding Collection (VB6)
Auterei tb a propriedade DataSourceBehavior para 1- vbDataSource
Run-time error '7004'
The rowset is not bookmarkable.
O que esta acontecendo?
************************************************************************************************************
'Modulo de Classe
Option Explicit
Private cnn As ADODB.Connection
Private rsClientes As ADODB.Recordset
Private Sub Class_Initialize()
Set cnn = New ADODB.Connection
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C: este\Clientes.mdb;Persist Security Info=False"
Set rsClientes = New ADODB.Recordset
With rsClientes
.Source = "Select * from Clientes"
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C: este\Clientes.mdb;Persist Security Info=False"
.Open
End With
DataMembers.Add "Clientes"
End Sub
Private Sub Class_GetDataMember(DataMember As String, Data As Object)
Select Case DataMember
Case ""
Set Data = Nothing
Case "Clientes"
Set Data = rsClientes
Case Else
MsgBox "Erro de dados", vbCritical
End Select
End Sub
************************************************************************************************************
************************************************************************************************************
'Formulario
Option Explicit
Private clientesDados As clsClientes
Private Sub Form_Load()
Set clientesDados = New clsClientes
Set dg1.DataSource = clientesDados
dg1.DataMember = "Clientes"
End Sub
************************************************************************************************************
Fiz referencia as bibliotecas: Microsoft Activex...2.5 e Microsoft Data Binding Collection (VB6)
Auterei tb a propriedade DataSourceBehavior para 1- vbDataSource
para carregar o datagrid basta vc passar o recordset para a propriedade DataSource e mais nada.
Set DataGrid.DataSource = recordset.
Experimente fazer um teste, faça um select qualquer, pegue o recordset retornado e adicione no datagrid é pra funcionar.
- Outra coisa! pode ser que a sua classe não esteja retornando um volume de dados do tipo recordset.
+ uma coisa vc não precisa alterar nenhuma propriedade do datagrid.
Set DataGrid.DataSource = recordset.
Experimente fazer um teste, faça um select qualquer, pegue o recordset retornado e adicione no datagrid é pra funcionar.
- Outra coisa! pode ser que a sua classe não esteja retornando um volume de dados do tipo recordset.
+ uma coisa vc não precisa alterar nenhuma propriedade do datagrid.
estava tentando montar essa rotina com o exemplo do macoratti: http://www.macoratti.net/vb_cfd1.htm
mas não entendo pq esse erro, o codigo no exemplo esta todo pronto, pq não funciona na minha maquina?
mas não entendo pq esse erro, o codigo no exemplo esta todo pronto, pq não funciona na minha maquina?
Na sua máquina não sei porque não funciona, talvez possa ser a versão do vb ou do sistema operacional ja que no win98 roda o que não roda em xp, tente o metodo do recordset pq é bem mais simples e com certeza dará certo
Tópico encerrado , respostas não são mais permitidas