AJUDA COM UMA ROTINA
Em meu programa, tenho dois botões que move para o próximo registro ou retorna para o registro anterior, só que quando clico em um destes botões o sistema não vai para o próxima registro ou retorna, fica parado. Então coloquei uma RecordCount para verificar se a quantidade de registro e ele me retorna 0, mas o banco de dados está completo.
Em seguida mostro a função do meu sistema
*
*
*
Private Sub Cmd_Antes_Click()
If MdAsso02.RecordCount > 0 Then
MdAsso02.MoveNext
If MdAsso02.State = 1 Then
If Not MdAsso02.EOF Then
Frm_Sec001.StatusBar1.Panels(5) = [Ô]...Aguarde!![Ô]
Preenche_Campos
Frm_Sec001.StatusBar1.Panels(5) = [Ô][Ô]
Else
Frm_Sec003.Enabled = False
ret = MessageBox(0, [Ô]Fim de Arquivo[Ô], [Ô]Atenção...[Ô], MB_OKCANCEL)
If ret = 1 Then
Frm_Sec003.Enabled = True
End If
MdAsso02.MovePrevious
End If
End If
Else
ret = MessageBox(0, [Ô]Nenhum Registro Adicionado[Ô], [Ô]Atenção...[Ô], MB_OKCANCEL)
End If
End Sub
Private Sub Cmd_Depois_Click()
If MdAsso02.RecordCount <> 0 Then
MdAsso02.MovePrevious
If MdAsso02.State = 1 Then
If Not MdAsso02.BOF Then
Frm_Sec001.StatusBar1.Panels(5) = [Ô]...Aguarde!![Ô]
Preenche_Campos
Frm_Sec001.StatusBar1.Panels(5) = [Ô][Ô]
Else
Frm_Sec003.Enabled = False
ret = MessageBox(0, [Ô]InÃcio de Arquivo[Ô], [Ô]Atenção...[Ô], MB_OKCANCEL)
If ret = 1 Then
Frm_Sec003.Enabled = True
End If
MdAsso02.MoveNext
End If
End If
Else
ret = MessageBox(0, [Ô]Nenhum Registro Adicionado[Ô], [Ô]Atenção...[Ô], MB_OKCANCEL)
End If
End Sub
*
* Abertura do banco de dados
*
Public Sub Abre_Ass02()
Set Conexao03 = New ADODB.Connection
Conexao03.ConnectionTimeout = 60
Conexao03.CommandTimeout = 400
Conexao03.CursorLocation = adUseClient
Conexao03.Open [Ô]DRIVER={MySQL ODBC 5.1 Driver};[Ô] _
& [Ô]user ID=[Ô] & USUARI _
& [Ô];database=[Ô] & ARQBAS _
& [Ô];password=[Ô] & SENHOS _
& [Ô];server=[Ô] & IIf(SENHOS <> [Ô][Ô], HOSTMA, IPSMAQ) _
& [Ô];option=[Ô] & OPCOES
MdAsso02.CursorLocation = adUseClient
MdAsso02.Open [Ô]SELECT * FROM AQ_ASS02[Ô], Conexao03, adOpenDynamic, adLockOptimistic
End Sub
Pessoal o que está de errado nestas funções
Obrigado,
Em seguida mostro a função do meu sistema
*
*
*
Private Sub Cmd_Antes_Click()
If MdAsso02.RecordCount > 0 Then
MdAsso02.MoveNext
If MdAsso02.State = 1 Then
If Not MdAsso02.EOF Then
Frm_Sec001.StatusBar1.Panels(5) = [Ô]...Aguarde!![Ô]
Preenche_Campos
Frm_Sec001.StatusBar1.Panels(5) = [Ô][Ô]
Else
Frm_Sec003.Enabled = False
ret = MessageBox(0, [Ô]Fim de Arquivo[Ô], [Ô]Atenção...[Ô], MB_OKCANCEL)
If ret = 1 Then
Frm_Sec003.Enabled = True
End If
MdAsso02.MovePrevious
End If
End If
Else
ret = MessageBox(0, [Ô]Nenhum Registro Adicionado[Ô], [Ô]Atenção...[Ô], MB_OKCANCEL)
End If
End Sub
Private Sub Cmd_Depois_Click()
If MdAsso02.RecordCount <> 0 Then
MdAsso02.MovePrevious
If MdAsso02.State = 1 Then
If Not MdAsso02.BOF Then
Frm_Sec001.StatusBar1.Panels(5) = [Ô]...Aguarde!![Ô]
Preenche_Campos
Frm_Sec001.StatusBar1.Panels(5) = [Ô][Ô]
Else
Frm_Sec003.Enabled = False
ret = MessageBox(0, [Ô]InÃcio de Arquivo[Ô], [Ô]Atenção...[Ô], MB_OKCANCEL)
If ret = 1 Then
Frm_Sec003.Enabled = True
End If
MdAsso02.MoveNext
End If
End If
Else
ret = MessageBox(0, [Ô]Nenhum Registro Adicionado[Ô], [Ô]Atenção...[Ô], MB_OKCANCEL)
End If
End Sub
*
* Abertura do banco de dados
*
Public Sub Abre_Ass02()
Set Conexao03 = New ADODB.Connection
Conexao03.ConnectionTimeout = 60
Conexao03.CommandTimeout = 400
Conexao03.CursorLocation = adUseClient
Conexao03.Open [Ô]DRIVER={MySQL ODBC 5.1 Driver};[Ô] _
& [Ô]user ID=[Ô] & USUARI _
& [Ô];database=[Ô] & ARQBAS _
& [Ô];password=[Ô] & SENHOS _
& [Ô];server=[Ô] & IIf(SENHOS <> [Ô][Ô], HOSTMA, IPSMAQ) _
& [Ô];option=[Ô] & OPCOES
MdAsso02.CursorLocation = adUseClient
MdAsso02.Open [Ô]SELECT * FROM AQ_ASS02[Ô], Conexao03, adOpenDynamic, adLockOptimistic
End Sub
Pessoal o que está de errado nestas funções
Obrigado,
Já tentou compactar e reparar o banco de dados no access?
Lizander - não estou utilizando o Access como banco de dados mais sim MySql
tenta tirar do código as linhas:
If MdAsso02.RecordCount <> 0 Then
If MdAsso02.State = 1 Then
e seus respectivos endif's pra ver o resultado.
If MdAsso02.RecordCount <> 0 Then
If MdAsso02.State = 1 Then
e seus respectivos endif's pra ver o resultado.
Carlos, se retirar estas duas linhas, quando o programa passar pela instrução MdAsso02.MoveNext, dá erro.
colega o problema está na abertura do banco
bom pelo menos já vi isto algumas vezes
tente alterar para teste a forma de abertura
de:
MdAsso02.Open [Ô]SELECT * FROM AQ_ASS02[Ô], Conexao03, [txt-color=#e80000]adOpenDynamic[/txt-color], adLockOptimistic
para:
MdAsso02.Open [Ô]SELECT * FROM AQ_ASS02[Ô], Conexao03, [txt-color=#e80000]adOpenKeyset[/txt-color], adLockOptimistic
e teste o recordcount
bom pelo menos já vi isto algumas vezes
tente alterar para teste a forma de abertura
de:
MdAsso02.Open [Ô]SELECT * FROM AQ_ASS02[Ô], Conexao03, [txt-color=#e80000]adOpenDynamic[/txt-color], adLockOptimistic
para:
MdAsso02.Open [Ô]SELECT * FROM AQ_ASS02[Ô], Conexao03, [txt-color=#e80000]adOpenKeyset[/txt-color], adLockOptimistic
e teste o recordcount
Marcelo - o recordcount continua mostrando 0, mas estão cadastrados em meu banco de dados exitem 4.511 registro
Tópico encerrado , respostas não são mais permitidas