• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Euronymous

Tamanho da recordset em VB6

6 mensagens neste tópico

Bom dia.

Estou com um problema num projecto que ando a desenvolver.

Estou a ligar m a uma BD Access, trago o resultado de uma query p o recordset mas este fica com mais de 55000 entradas....

Resultado: o programa deixa de responder. Quando faço o debug passo a passo não m dá qualquer problema, logo, assumo que seja pelo tamanho do recordset.

Alguma sugestão??

Muito obrigado desde já.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas.

Precisas mesmo de todos essas linhas?

Usa ms sql 2005 express é muita mais rápido do que access.

Podias criar um thread onde preenches o resultset.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O projecto tem como objectivo migrar de sql express 2005 para access pois um dos programas d gestao só usa access.

O preenchimento do resultset com os dados do access  funciona sem problemas. O mal começa quando começo a percorrer os resultados um a um e a compará-los com outro resultset.

Abre_RECORDSET Ligacao, rs1, "select descricao, codigovendedor from entradas where devolucao=200"

    Abre_RECORDSET SQL2000, rs2, "select ano, docnum, codigovendedor from GCOP3_D14"

    Abre_RECORDSET SQL2000, rs3, "select ano, docnum, codigovendedor from GCOP3_D16"

   

    If rs1.RecordCount > 0 Then

        rs1.MoveFirst

        While rs1.EOF = False

            If Right(rs1!descricao, 2) = "14" Then

                rs2.Filter = "ano = " & Left(rs1!descricao, 4) & " and docnum = " & Mid$(rs1!descricao, 6, InStr(1, rs1!descricao, " 14") - 6)

                If rs2.RecordCount > 0 Then

                    rs1!codigovendedor = rs2!codigovendedor

                    rs1.Update

                Else

                    'MsgBox "Nao encontra"

                End If

               

            End If

            If Right(rs1!descricao, 2) = "16" Then

                rs3.Filter = "ano = " & Left(rs1!descricao, 4) & " and docnum= " & Mid$(rs1!descricao, 6, InStr(1, rs1!descricao, " 16") - 6)

                If rs3.RecordCount > 0 Then

                    rs1!codigovendedor = rs3!codigovendedor

                    rs1.Update

                Else

                    'MsgBox "Nao encontra"

                End If

               

            End If

            rs1.MoveNext

        Wend

    End If

Herdei este código na empresa e tenho k o por a funcinar...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eskeci m d dizer k a rs1 é k fica com os 55 mil resultados

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Problema resolvido :-)

Ao k parece o programa deixava de resonder porque o processamento era muito longo  e nao por causa do tamanho do recordset pois este aguenta muito bem.

Bastou colocar um DoEvents e corre td às mil maravilhas.

Obrigado Asgorath por tentares  ajudar.

Fikem bem

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é interessante essa conclusão que chegas-te , tambem apnhei o mesmo prob. , mas resolvi-o de forma diferente , acho da tua maneira é + rapido e eficaz.

fica bem

cump.

e obrigado pela dica.

programadorvb6

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora