none
Con un ciclo for me llene un datagridview en una columna RRS feed

  • Pregunta

  • Buen día.

    Señores expertos.

    Estoy haciendo un programa que me genera claves aleatoreas por medio de un random este código que estoy usando  lo tengo metido en sub.

    Por aparte tengo un textbox que me indica la cantidad de registros que necesito que haga el ciclo for.

    Declaro una variable que se llama "clave"  que es la que me va a servir en mi datagrid

    publico un código generador de claves que me he encontrado en internet y funciona bien!:

    Sub random()
            Dim Letters As New List(Of Integer)
            'add ASCII codes for numbers
            For i As Integer = 48 To 57
                Letters.Add(i)
            Next
            'lowercase letters
            For i As Integer = 97 To 122
                Letters.Add(i)
            Next
            'uppercase letters
            'For i As Integer = 65 To 90
            '    Letters.Add(i)
            'Next
            'select 8 random integers from number of items in Letters
            'then convert those random integers to characters and
            'add each to a string and display in Textbox
            Dim Rnd As New Random
            Dim SB As New System.Text.StringBuilder
            Dim Temp As Integer
            For count As Integer = 1 To 8
                Temp = Rnd.Next(0, Letters.Count)
                SB.Append(Chr(Letters(Temp)))
            Next
            clave = SB.ToString
        End Sub


    Bien ahora tengo un botón que tiene que generar la cantidad de registros que le indico por medio de un textbox el código es el siguiente:

     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            For x As Integer = 0 To CInt(txt_cantidad.Text) - 1
                If txt_cantidad.Text = "" Then
                Else
                    random()
                    DataGridView1.Rows.Add(clave)
                End If
            Next
        End Sub

    Bien si meto el código en un botón y lo genero clic por clic, si me agrega una a una las claves distintas en la columna del datagrid; pero si ejecuto este ciclo for me sale la cantidad de claves que le indico en el textbox repetidas en el datagrid.

    Si no me he explicado lo suficiente hagan su observación para explicarlo mejor, y si me han captado la idea pues agradeceré mucho su valiosa ayuda, de antemano muy agradecido por su acostumbrado apoyo.

    Saludos.

    Roberto Catalán 

    Guatemal

    jueves, 20 de marzo de 2014 4:48

Respuestas

  • Lo que sucede es que en el metodo Random necesitas limpiar la variable "Letters"(

    Dim Letters As New List(Of Integer)

    ), lo cual no se realiza, declara como global para limpiarla despues que se ingreso a la datagrid  el codigo seria algo así 

     

    Dim Letters As New List(Of Integer) 
    
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
      If txt_cantidad.Text = "" Then
    
      Else
    
       For x As Integer = 0 To CInt(txt_cantidad.Text) - 1
    
        random()
        DataGridView1.Rows.Add(clave)
        clave = valida
        For y As Integer = 0 To 8 'Aqui es donde limpiamos
        Letters.Remove(y)
        Next
    
       Next
    
      End If
    End Sub

    No olvides mover del metodo "Sub random()" la variable "Letters" y la declaras como global

    saludos

    jueves, 20 de marzo de 2014 8:59

Todas las respuestas

  • Lo que sucede es que en el metodo Random necesitas limpiar la variable "Letters"(

    Dim Letters As New List(Of Integer)

    ), lo cual no se realiza, declara como global para limpiarla despues que se ingreso a la datagrid  el codigo seria algo así 

     

    Dim Letters As New List(Of Integer) 
    
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
      If txt_cantidad.Text = "" Then
    
      Else
    
       For x As Integer = 0 To CInt(txt_cantidad.Text) - 1
    
        random()
        DataGridView1.Rows.Add(clave)
        clave = valida
        For y As Integer = 0 To 8 'Aqui es donde limpiamos
        Letters.Remove(y)
        Next
    
       Next
    
      End If
    End Sub

    No olvides mover del metodo "Sub random()" la variable "Letters" y la declaras como global

    saludos

    jueves, 20 de marzo de 2014 8:59
  • Excelente me ha funcionado muy bien agradezco el tiempo y la respuesta.

    Saludos.

    jueves, 20 de marzo de 2014 17:11