Jump to content
overcloked

[VB 2005] Preservar valor de array multidimensional num loop

Recommended Posts

overcloked

Broas...

Ando aqui a tentar fazer uma array multidimenssional para poder guardar duas collumns e varias rows de uma BD em SQL.

Tou a ter problemas porque cada vez que faz loop para ir para a proxima row os valores da array anteriores são apagados  :P

Para terem uma ideia melhor do que estou a fazer aqui fica o codigo que tenho:

        ' Preenchimento dos dados de ligação ao SQL Server 2000
        conn.ConnectionString = "data source=vmwareserver;initial catalog=MercoFarma;persist security info=False;user id=admin;password=admin"

        cmd.CommandText = "SELECT * FROM tabClientes"
        cmd.Connection = conn

        Dim reader As DbDataReader = Nothing
        Try
            conn.Open()
            reader = cmd.ExecuteReader(CommandBehavior.CloseConnection)

            Me.ComboClientes.Items.Clear()
            If reader.HasRows Then
                Dim i As Integer

                While reader.Read()
                    Dim arrThisArray(i, 1) As String


                    arrThisArray(i, 0) = reader.GetValue(0)
                    arrThisArray(i, 1) = reader.GetValue(1)
                    i += 1

                End While

            Else
                MessageBox.Show("Não há registos.")
            End If
        Catch exp As Exception
            MessageBox.Show(exp.Message)
            MessageBox.Show("Ocorreu um erro.")
        Finally
            If Not IsNothing(reader) Then reader.Close()
        End Try

A array apaga os dados anteriores depois de fazer um novo loop, vejam as screenshots do debug:

ef848a794c.jpg9162b06f67.jpg

Se alguem me poder mostrar a luz, agradeço....

Share this post


Link to post
Share on other sites
overcloked

humm!?  :P

N percebo la mto disto ainda, podes me dizer como farias isto com o dataset?

O objectivo é escrever numa combobox nomes de "clientes" que estão na DB mas quero associar o "IDCliente"  ao nome, para isso pensei numa array multidimenssional em que:

arrThisArray(0, 0) = 1

arrThisArray(0, 1) = "João"

arrThisArray(1, 0) = 2

arrThisArray(1, 1) = "Maria"

etc...

PS: O IDCliente está  na coluna 0 da tabela SQL e o nome na coluna 1

Tks :P

Share this post


Link to post
Share on other sites
Asgorath

Boas

Ve no help o comando Redim Preserve.

Jorge


"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

Share this post


Link to post
Share on other sites
overcloked

Jorge obrigado pela luz, mas consegues me explicar como fazer como se fosse mto burro? :P

Já tentei usar mas continuo sem conseguir salvar os valores anteriores, tou a usar antes da incrementação do i "ReDim Preserve arrThisArray(i, 0)" mas n tá a dar :P

Alguma pista de como hei-de fazer isto?

Tks in advance :)

Share this post


Link to post
Share on other sites
Tiago Salgado

Ve este codigo onde uso arrays e o Preserve...se não entenderes algo avisa q tento esclarecer

Public Function Dec2Bin(ByVal dec As Integer) As String
        Dim tmp As Object
        Dim resto As Integer
        Dim bin() As Integer
        Dim nr_bin As Integer
        ReDim bin(0)
        tmp = dec
        While tmp >= 2
            resto = dec Mod 2
            dec \= 2
            tmp = dec
            bin(UBound(bin)) = resto
            ReDim Preserve bin(UBound(bin) + 1)

        End While
        bin(UBound(bin)) = dec
        Array.Reverse(bin)
        For Each nr_bin In bin
            Console.Write(nr_bin)
        Next

    End Function

Share this post


Link to post
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

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