Ir para conteúdo
Fórum Script Brasil
  • 0

overflow e programa travando


Alex Mauricio

Pergunta

Pessoal, tenho o seguinte código:

Option Explicit

Private Sub conectarBanco()
    Set BancoDeDadosAntigo = OpenDatabase("I:\Sistema de Gerenciamento de Cupons Cadastro\Versao_1.0.01\prjSGCC\BD\TELEMARKETING.MDB")
    'Set BancoDeDados = OpenDatabase("I:\Sistema de Gerenciamento de Cupons Cadastro\Versao_1.0.01\prjSGCC\BD\BD_TELEMARKETING.MDB")
End Sub

Private Sub cmdSair_Click()
    BancoDeDadosAntigo.Close
    'BancoDeDados.Close
    End
End Sub

Private Sub cmdTableSituacao_Click(Index As Integer)
    migrarTableSituacao
End Sub

Private Sub Form_Load()
    conectarBanco
End Sub
Private Function migrarTableSituacao()
    Dim ssql As String
    Dim contador As Double
        
    contador = 0
    
    ssql = "select * from tabela1"
    Set TableAntiga = BancoDeDadosAntigo.OpenRecordset(ssql)
    
        While Not TableAntiga.EOF
            contador = contador + 1
            'MsgBox contador
        Wend
    
    TableAntiga.Close
    'MsgBox contador
End Function

O objetivo deste código é ver se o programa está percorrendo toda a tabela, porq após isso vou migrar dados dessa tabela para outro BD.

Gostaria que o programa corresse a tabela e após isso mostrasse a quantidade de registros.

Porém o sistema trava... se eu deixar ele rodar poucos segundos ( 2 a 3 ) e der um break e pedir para ver o valor da variável contador, ele está mostrando 11891061.... E o BD tem 115.000 registros...

Ou seja... tem algo errado...

Agora se eu pedir que para cada registro lido o sistema mostra um msgbox contador... ele vai fazendo da maneira correta...

O que pode está acontecendo?

Obrigado

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

ele esta o tempo todo o primero registro. você tem q dar um movenext dentro do loop pra ir pro proximo registro.

mas na verdade pra saber qtos registros tem não precisa fazer isso, é so pegar a propriedade RecordCount do RecordSet (so não sei se no DAO tb tem ela com esse nome, e se o modo como você ta abrindo te da permissao pra acessa-la).

Link para o comentário
Compartilhar em outros sites

  • 0

declare BancoDeDadosAntigo como ADODB.Connection e TableAntiga como New ADODB.RecordSet.

para abrir a conexao, faca assim:

Set BancoDeDadosAntigo = New ADODB.Connection
    BancoDeDadosAntigo.Provider = "Microsoft.Jet.OLEDB.4.0"
    BancoDeDadosAntigo.ConnectionString = "I:\Sistema de Gerenciamento de Cupons Cadastro\Versao_1.0.01\prjSGCC\BD\TELEMARKETING.MDB"

    BancoDeDadosAntigo.CursorLocation = adUseClient
    BancoDeDadosAntigo.Open[/code] pra acessar a tabela, faca:
[code]ssql = "select * from tabela1"
    Set TableAntiga = BancoDeDadosAntigo.Execute(ssql)
e pra pegar o total de registro, faca:
MsgBox TableAntiga.RecordCount

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...