Jump to content

Tamanho da recordset em VB6


Euronymous
 Share

Recommended Posts

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

Link to comment
Share on other 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.

"The Dark Side Clouds Everthing. Impossible To See The Future Is."My rig: Intel Core 2 Quad Q9450 | abit IP35P | 4G Kingston 800 Mhz | XFX GeForce 9800 GX2 1G ddr3 | 2X WD5000AAJS 500Gb Sata 2 | PSU 600W || Caixa El-Diablo | Creative XMod

Link to comment
Share on other 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...

Link to comment
Share on other 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

Link to comment
Share on other sites

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

______________________________________________________________________________

Que minha coragem seja maior que meu medo e que minha força seja tão grande quanto minha fé.
 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.