Ir para o conteúdo
Euronymous

Tamanho da recordset em VB6

Mensagens Recomendadas

Euronymous    0
Euronymous

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á.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Asgorath    0
Asgorath

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Euronymous    0
Euronymous

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...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Euronymous    0
Euronymous

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
programadorvb6    1
programadorvb6

é 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

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade