none
Concatenacion de cadena y enteros en Visual Basic 2008

    Pregunta

  • Hola que tal! Buenas Tardes

    Necesito que alguien me ayude, lo que pasa es que stoy haciendo una concatenacion de cadenas con enteros en donde tengo que mostrar en una caja de texto lo siguiente:

    EM-REN00001, todo se que da siempre igual lo unico que se debe de ir incrementando al momento de darle clic al boton nuevo es el 1 debe de ser 2 y asi sucesivamente.

    La aplicacion es una aplicacion de escritorio y el codigo que tengo en el evento del boton nuevo es el siguiente:

    Private

     

    Sub Btnnuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnnuevo.Click

     

    Dim Nuevocod As String

     

    Dim num As Integer

    num = +1

    Nuevocod =

    "EM-REN" & Microsoft.VisualBasic.Right("0000" & num, 5)

    txtvale.Text = Nuevocod

    botones(0, 1, 0, 1, 1)

    cajas(1, 1)

     

    End Sub

    POR FAVOR QUE ALGUIEN ME AYUDE A COMPONER ESTO, YA QUE SI ME MUESTRA EL EM-RENT00001, PERO AL MOMENTO DE VOLVERLO A CARGAR YA NO SE INCREMENTA A 00002, COMO LE HAGO Y EN QUE ESTOY FALLANDO.

    AYUDENME POR FAVOR. DE ANTEMANO LES AGRADEZCO SU AYUDA

    SALUDOOSSS

     

    miércoles, 02 de febrero de 2011 22:28

Todas las respuestas

  • hola

    porque no definea la variable "num" fuera del metodo del evento

     

    Dim num As Integer = 0


    Sub Btnnuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnnuevo.Click

        num += 1

        txtvale.Text = String.Format("EM-REN{0}", Microsoft.VisualBasic.Right("0000" & num, 5))

        botones(0, 1, 0, 1, 1)

        cajas(1, 1)

    End Sub

     

    de esta forma mantendrias el contador vigente cada vez que se presiona el boton

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 02 de febrero de 2011 23:48
  • GRACIAS DE NUEVO POR SU AYUDA, YA HICE LO QUE ME INDICO,  LO QUE PASA ES QUE EL CONTADOR ESTA VIGENTE CUANDO ENTRO UNA VEZ, Y CUANDO ME SALGO DEL FORMULARIO Y  QUIERO VOLVER A CARGARLO, EN LUGAR DE CONTINUAR EN EL NUMERO QUE ME QUEDE POR EJEMPLO EM-REN00003 EN LUGAR DE CONTINUAR EM-REN00004, VUELVE A EMPEZAR EN EM-REN00001. Y ME MARCA ERROR PORQUE ESA SERIE YA LA HABIA CARGADO LA PRIMERA VEZ Y ME MARCA ERROR DE LA RESTRICCION DE LA LLAVE PRIMARIA QUE HAGO EN ESTE CASO, ESTE ES LA FORMA EN QUE PUSE EL CODIGO:

    Public

     

    Class Vale_Salida

     

    Dim num As Integer = 0

    Private

     

    Sub Btnnuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnnuevo.Click

    num += 1

    txtvale.Text =

    String.Format("EM-REN{0}", Microsoft.VisualBasic.Right("0000" & num, 5))

    botones(0, 1, 0, 1, 1)

    cajas(1, 1)

    En sub

     

    jueves, 03 de febrero de 2011 0:20
  • hola

    claro el tema es que el contador deberias persistirlo en algun medio para que al ingresar nuevamente saber dodne habia quedado

    no se si suas alguna db para esto, o podrias seriualziar algun objeto que lleve el contador, el tema es persistir el valor de contador, sino es mas que seguro que se pierda ,es asm ci cieras la aplicacion y vuelves a ingresar tampoco tendras el valor por mas que pases el valor entre formularios

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 03 de febrero de 2011 0:32
  • DISCULPA ADEMAS DE ESTO LE DOY CANCELAR Y SIN HABER GUARDADO,LE VUELVO A DAR CLIC AL BOTON NUEVO Y SE VA INCREMENTANDO, COMO QUE NO ESTA CONTROLADO EL CONTADOR, POR QUE ME IMAGINO QUE NO DEBERIA DE SER ASI, YA QUE SI NO GUARDO NO DEBE DE AUMENTARSE, PERO SI ME SALGO EMPIEZA DE NUEVO EN UNO.

     

    jueves, 03 de febrero de 2011 0:34
  • DE HECHO TENGO LA CONEXION DE ESTE  FORMULARIO CON UNA TABLA EN SQL SERVER 2008 EN DONDE SE  GUARDA LA SERIE Y SI LA GUARDA, CUANDO LA CARGO LA PRIMERA VEZ , PERO NO SE QUEDA A HI, DE ECHO LA VARIABLE NUM, YA LA DECLARE COMO PUBLICA EN EL MODULO DE CONEXION PERO NO FUNCIONA.

     SERA QUE TENGO QUE HACER UN SELLECT PARA CONSULTAR

    GRACIAS .....

     

    SALUDOS

     

    jueves, 03 de febrero de 2011 0:43
  • SERA QUE TENGO QUE HACER UN SELLECT PARA CONSULTAR

    exacto, tal cual lo ahs digo, si grabas el contador "num" en una tabla de la db deberas recuperar por medio de una consulta, para asignarlo a "num" y continuar el conteo desde donde dejaste

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 03 de febrero de 2011 1:06
  • Disculpe ya intente hacer los de la concatenacion de cadenas y enteros para generar mi contador , ya lo hice con un selct para selccionar el maximo , es decir para que cuando yo cargue de nuevo el from retome el numero en donde se quedo aumentando uno pero no me salio, ayudemme por favor, lo he intentado  de varias formas y no me sale, la verdad me da verguenza estar preguntando a cada  rato pero soy nuevo  en esto y casi no se. AYUDEME POR FAVOR . LE AGRADECERE SU AYUDA MUCHISIMO. POR FAVOR

     

    jueves, 03 de febrero de 2011 16:29
  • MIRA COMO LO HAGO YO

    'ejecuto la consulta trayendo el codigo maximo de mi tabla

    sql = "select max(cod_motivo) from motivos"

            Dim cmd As New Odbc.OdbcCommand(sql, conexion)

            dr = cmd.ExecuteReader

     

    luego incremento en 1

            If dr.Read Then

                txtcodmotivo.Text = Format(Val("" & dr(0)) + 1, "00")

                txtdescripcion.Enabled = True

                cbnaturaleza.Enabled = True

                btnnuevo.Enabled = False

                btnguardar.Enabled = True

                btncancelar.Enabled = True

                btneliminar.Enabled = False

                btnbuscar.Enabled = False

                txtdescripcion.Focus()

            End If


    Espero te sea de gran ayuda. Walter Jimenez G
    jueves, 03 de febrero de 2011 16:36
  • GRACIAS LA CONSULTA LA DEBO DE PONER EN EL EVENTO DE MI BOTON NUEVO O EN DONDE EL PAGE  LOAD DIGAME EN DONDE Y COMO DEBO DE COLO CAR ESTE CODIGO POR QUE YO TENGO LO SIGUIENTE:

    Public

     

    Class Vale_Salida

     

    Dim num As Integer = 0

    Private

     

    Sub Btnnuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnnuevo.Click

    num += 1

    txtvale.Text =

    String.Format("EM-REN{0}", Microsoft.VisualBasic.Right("0000" & num, 5))

    botones(0, 1, 0, 1, 1)

    cajas(1, 1)

     

    End Sub

    jueves, 03 de febrero de 2011 16:47
  • cuando le des nuevo
    Espero te sea de gran ayuda. Walter Jimenez G
    jueves, 03 de febrero de 2011 16:54
  • Private Sub btnnuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnnuevo.Click
        sql = "select max(cod_motivo) from motivos"
        Dim cmd As New Odbc.OdbcCommand(sql, conexion)
        dr = cmd.ExecuteReader
    
        If dr.Read Then
          txtcodmotivo.Text = Format(Val("" & dr(0)) + 1, "EM-REN000")
          MsgBox(txtcodmotivo.Text)
          txtdescripcion.Enabled = True
          cbnaturaleza.Enabled = True
          btnnuevo.Enabled = False
          btnguardar.Enabled = True
          btncancelar.Enabled = True
          btneliminar.Enabled = False
          btnbuscar.Enabled = False
          txtdescripcion.Focus()
        End If
      End Sub

    Espero te sea de gran ayuda. Walter Jimenez G
    jueves, 03 de febrero de 2011 16:59
  • HOLA MIRA YA HICE LO QUE ME INDICASTES PERO ME MARCA ERROR EN LO SIGUIENTE, LO HE MARCADO PARA QUE LO DISTINGAS QUE DEBO HACER

    Dim Sql As String = "select max(cod_motivo) from motivos"

            Dim cmd As New SqlCommand(Sql, myConnection)

            Dim cmd As New Odbc.OdbcCommand(Sql, Conexion)” AQUI ME INDICA QUE CONEXION ES UN TIPO Y NO SE PUEDE USAR COMO EXPRESION”

     

            dr = cmd.ExecuteReader

     

            If dr.Read Then

                txtvale.Text = Format(Val("" & dr(0)) + 1, "EM-REN000")

                MsgBox(txtvale.Text)

                txtobservaciones.Focus()

            End If

    dr ME INDICA QUE  NO SE HA DECLARADO Y ME MARCA ERROR QUE HAGO Y EN DONDE LO DECLARO PARA QUE NO ME MARQUE ESTE ESRROR.

     

    jueves, 03 de febrero de 2011 17:31
  • AH OK

    Conexion: variable tipo conexion que defines para conectarte a la base de datos

    dr = objeto tipo datareader que debes declarar

    dime que utilizas para conectarte odbc, oldb??

     

    como yo utilizo odbc entonces declaro 

    dim conexion as odbc.odbconnection

    dim dr As OdbcDataReader


    Espero te sea de gran ayuda. Walter Jimenez G
    jueves, 03 de febrero de 2011 17:48
  • YO ESTOY CONECTANDO CON OLBD EN SQL SERVER 2008 Y TENGO U MODULO DE CONEXION NADA MAS Y ESAS VARIABLES EN QUE PARTE LA DEBO DE DECLARTAR EN EL PAGE LOAD, FUERA DE EL O EL EVENTO DEL BOTON NUEVO

    GRACIAS POR TU AYUDA DE ANTEMANO

     

     

    jueves, 03 de febrero de 2011 18:04
  • existen varias formas de crearlas, pero si tu dices que tienes un modulo de conexion aparte las puedas crear ahi y declararlas publicas para que puedas invocarlas desde cualquier formulario.

     

    Public conexion As OleDb.OleDbConnection

    Public dr As OleDb.OleDbDataReader

     

    y luego desde el formulario que deseas las utilizas y listo.

     


    Espero te sea de gran ayuda. Walter Jimenez G
    jueves, 03 de febrero de 2011 18:10
  • ya hice todo y no funciona

    que hago

     

    jueves, 03 de febrero de 2011 18:28
  • que no funciona?

    muestrame que has colocado


    Espero te sea de gran ayuda. Walter Jimenez G
    jueves, 03 de febrero de 2011 18:30
  • YA DE CLARE LAS DOS VARIABLES COMO PUBLICAS

    Public conexion As OleDb.OleDbConnection

    Public dr As OleDb.OleDbDataReader

    Y EN EL CODIGO DEL EVENTO NUEVO cOLOQUE EL SIGUIENTE CODIGO:

            Dim Sql As String = "select max(No_vale) from vale_salida"

            Dim cmd As New SqlCommand(Sql, myConnection)

                 dr = cmd.ExecuteReader

     

            If dr.Read Then

                txtvale.Text = Format(Val("" & dr(0)) + 1, "EM-REN000")

                MsgBox(txtvale.Text)

                txtobservaciones.Focus()

            End If

    en que estoy mal

     

    jueves, 03 de febrero de 2011 19:06
  • utiliza el objeto oldbCommand y no el sqlCommand
    Espero te sea de gran ayuda. Walter Jimenez G
    jueves, 03 de febrero de 2011 20:46
  • mira ya cambie el objeto de oledbCommand  y ah hora me marca error en  lo siguiente: en EXECUTE READER

    Dim

     

    Sql As String = "select max(No_vale) from vale_salida"

     

    Dim cmd As New OleDb.OleDbCommand(Sql, Conexion)

    dr = cmd.ExecuteReader " AQUI ME INDICA QUE ExecuteReader: La propiedad Connection no se ha inicializado"

     

     

    If dr.Read Then

    txtvale.Text = Format(Val(

    "" & dr(0)) + 1, "EM-REN000")

    MsgBox(txtvale.Text)

    txtobservaciones.Focus()

     

    End If

     

     

     

    jueves, 03 de febrero de 2011 22:41
  • intenta esto en el load del formulario

     

    conexion = New OldbConnection("aqui adentro escribe tu cadena de conexion a la base de datos")

    conexion.Open()


    Espero te sea de gran ayuda. Walter Jimenez G
    viernes, 04 de febrero de 2011 0:03
  • no funciono

    me siguio marcando error

    no hay otra forma de hacerlo

    porque me sigue marcando error

     

    GRACIAS POR SU AYUDA

     

    viernes, 04 de febrero de 2011 1:05
  • que error te marca

     


    Espero te sea de gran ayuda. Walter Jimenez G
    viernes, 04 de febrero de 2011 1:12
  • YA DE CLARE LAS DOS VARIABLES COMO PUBLICAS

    Public conexion As OleDb.OleDbConnection

    Public dr As OleDb.OleDbDataReader

    Y EN EL CODIGO DEL EVENTO NUEVO cOLOQUE EL SIGUIENTE CODIGO:

            Dim Sql As String = "select max(No_vale) from vale_salida"

            Dim cmd As New SqlCommand(Sql, myConnection)

                 dr = cmd.ExecuteReader

     

            If dr.Read Then

                txtvale.Text = Format(Val("" & dr(0)) + 1, "EM-REN000")

                MsgBox(txtvale.Text)

                txtobservaciones.Focus()

            End If

    en que estoy mal

     

    a mira a parte de utilizar oldbCommand por sqlCommand tambien estoy viendo que estas utlizando una variable myConnection, esta debe ser el objeto conexion que creaste como publico es decir

     

    public conexion As OleDb.OleDbConnection
    
    Public dr As OleDb.OleDbDataReader
    
    
      Dim Sql As String = "select max(No_vale) from vale_salida"
      Dim cmd As New SqlCommand(Sql, conexion)
        dr = cmd.ExecuteReader
     
      If dr.Read Then
       txtvale.Text = Format(Val("" & dr(0)) + 1, "EM-REN000")
       MsgBox(txtvale.Text)
       txtobservaciones.Focus()
      End If
    

     


    Espero te sea de gran ayuda. Walter Jimenez G
    viernes, 04 de febrero de 2011 1:43
  • Hola

    ¿Has podido solucionar tu problema?

    Saludos

    Eduardo Portescheller - LATAM Forum Support Engineer
    Microsoft Corporation
    lunes, 07 de febrero de 2011 16:41