none
Auto Id RRS feed

  • Pregunta

  • Hola que tal, hace tiempo vengo teniendo un problema con la autonumeracion dentro de un formulario, como puedo modificar este código para que solamente incremente números y no letras - numeros. Espero sus respuestas Gracias.

     Private Sub autoId()
            Dim oleDBDR As OleDbDataReader
            Dim oleDBCommand As New OleDbCommand
            Dim StrID As String
            With oleDBCommand
                .Connection = conn
                .CommandText = "SELECT * FROM tabla_Control ORDER BY id DESC"
            End With
            oleDBDR = oleDBCommand.ExecuteReader
            If oleDBDR.Read Then
                StrID = Mid(oleDBDR(0), 11, Len(oleDBDR(0)))
                txtId.Text = "Producto-" & Format(Val(StrID) + 1, "000")
            Else
                txtId.Text = "Producto-00001"
            End If
        End Sub


    • Editado Davidq82 jueves, 31 de diciembre de 2015 2:45
    jueves, 31 de diciembre de 2015 2:43

Respuestas

  • hola

    Lo primero que puedo comentar es porque diseñaste la tabla para que el id sea un campo compuesto? segun las formas de normalizacion de las base de datos esto no deberia hacerse

    Deberias tener dos campos en la tabla, uno para la parte en letras y otro para la numerica

    igualmente podrias mejorar el codigo usando el ExecuteScalar()

    Private Sub autoId()
            
    	Dim query As String = "SELECT id FROM tabla_Control ORDER BY id DESC"
    	Dim cmd As New OleDbCommand(query, conn)
    
    	Dim objID As Object = cmd.ExecuteScalar()
    	
    	If objID Is Nothing Then
    		txtId.Text = "Producto-00001"
    		Return
    	End If
    	
    	Dim partes As String = objID.ToString().Split('-')
    	txtId.Text = String.Format("Producto-{0:00000}", Convert.ToInt32(partes(1)) + 1)
    
    End Sub 

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    jueves, 31 de diciembre de 2015 3:03