none
Completar dato requerido en la tabla

    Question

  • Buenas, 

     Me encuentro con el siguiente problema, tengo una tabla en el que tengo un campo de uso interno en el que guardo "fecha, hora y codigo de usuario interno" que creo el registro.

    Hasta el momento,  lo que hago es crear un textbox (visible=false)  asociado a ese campo y justo en el momento que pulso el botón crear nuevo, defino que textbox = "12/12/2012 13:31 MRSVC101" , pero entiedo que debe existir alguna forma de hacerlo por medio de codigo, algo asi como hacia antiguamente en VB6: adodc1.recordset.fields("campo")= "12/12/2012 13:31 MRSVC101".

    He indagado las propiedades del dataset, del tableadapter, pero no veo la forma....

    Gracias !!

    Tuesday, October 16, 2012 12:44 PM

Answers

  • "mayoko" escribió:

    > Hasta el momento,  lo que hago es crear un textbox (visible=false)
    > asociado a ese campo y justo en el momento que pulso el botón crear
    > nuevo, defino que textbox = "12/12/2012 13:31 MRSVC101" , pero
    > entiedo que debe existir alguna forma de hacerlo por medio de codigo,
    > algo asi como hacia antiguamente en VB6:
    > adodc1.recordset.fields("campo")= "12/12/2012 13:31 MRSVC101".

    Hola:

    En principio te diría que te olvides de comparar el objeto ADODB.Recordset de la clásica biblioteca de ADO, con el objeto DataTable de ADO .NET, porque no vas a encontrar "nada en su sitio". ;-)

    > He indagado las propiedades del dataset, del tableadapter,
    > pero no veo la forma....

    Como hablas de objetos DataSet y TableAdapter, entiendo que has configurado en tu proyecto un origen de datos con el Asistente para la configuración de orígenes de datos, y que has añadido a tu formulario una referencia del objeto DataSet creado.

    Si es así, y siempre que en el objeto DataTable correspondiente exista el campo ese que dices que utilizas de "uso interno", simplemente tienes que referenciar el objeto DataRow que devuelve el método NewRow del objeto DataTable, y asignarle al campo el valor del control TextBox:

        ' Referenciamos el objeto DataTable existente en el objeto DataSet
        '
        Dim dt As NombreDataSet.ClientesDataTable = NombreDataSet.Clientes
    
        ' Creamos un nuevo registro
        '
        Dim row As NombreDataSet.ClientesRow = _
          DirectCast(dt.NewRow, NombreDataSet.ClientesRow)
    
        ' Le asignamos el valor a los campos del objeto DataRow
        '
        row.Campo1 = TextBox1.Text
        row.Campo2 = TextBox2.Text
        row.Campo3 = TextBox3.Text
    
        row.CampoUsoInterno = "12/12/2012 13:31 MRSVC101"
    
        ' Añadimos la fila u objeto DataRow al objeto DataTable
        '
        dt.Rows.Add(row)

    Asi es como se trabaja con los campos de un objeto DataRow en ADO .NET. Ya no entro en decir si es más sencillo o más complicado que como se hacía con la biblioteca de ADO clásica, porque nos guste o no, eso es lo que hay. ;-)

    Un saludo

    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.

    • Marked as answer by mayoko Tuesday, October 16, 2012 3:10 PM
    Tuesday, October 16, 2012 2:07 PM
    Moderator

All replies

  • "mayoko" escribió:

    > Hasta el momento,  lo que hago es crear un textbox (visible=false)
    > asociado a ese campo y justo en el momento que pulso el botón crear
    > nuevo, defino que textbox = "12/12/2012 13:31 MRSVC101" , pero
    > entiedo que debe existir alguna forma de hacerlo por medio de codigo,
    > algo asi como hacia antiguamente en VB6:
    > adodc1.recordset.fields("campo")= "12/12/2012 13:31 MRSVC101".

    Hola:

    En principio te diría que te olvides de comparar el objeto ADODB.Recordset de la clásica biblioteca de ADO, con el objeto DataTable de ADO .NET, porque no vas a encontrar "nada en su sitio". ;-)

    > He indagado las propiedades del dataset, del tableadapter,
    > pero no veo la forma....

    Como hablas de objetos DataSet y TableAdapter, entiendo que has configurado en tu proyecto un origen de datos con el Asistente para la configuración de orígenes de datos, y que has añadido a tu formulario una referencia del objeto DataSet creado.

    Si es así, y siempre que en el objeto DataTable correspondiente exista el campo ese que dices que utilizas de "uso interno", simplemente tienes que referenciar el objeto DataRow que devuelve el método NewRow del objeto DataTable, y asignarle al campo el valor del control TextBox:

        ' Referenciamos el objeto DataTable existente en el objeto DataSet
        '
        Dim dt As NombreDataSet.ClientesDataTable = NombreDataSet.Clientes
    
        ' Creamos un nuevo registro
        '
        Dim row As NombreDataSet.ClientesRow = _
          DirectCast(dt.NewRow, NombreDataSet.ClientesRow)
    
        ' Le asignamos el valor a los campos del objeto DataRow
        '
        row.Campo1 = TextBox1.Text
        row.Campo2 = TextBox2.Text
        row.Campo3 = TextBox3.Text
    
        row.CampoUsoInterno = "12/12/2012 13:31 MRSVC101"
    
        ' Añadimos la fila u objeto DataRow al objeto DataTable
        '
        dt.Rows.Add(row)

    Asi es como se trabaja con los campos de un objeto DataRow en ADO .NET. Ya no entro en decir si es más sencillo o más complicado que como se hacía con la biblioteca de ADO clásica, porque nos guste o no, eso es lo que hay. ;-)

    Un saludo

    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.

    • Marked as answer by mayoko Tuesday, October 16, 2012 3:10 PM
    Tuesday, October 16, 2012 2:07 PM
    Moderator
  • lo que hago es crear un textbox (visible=false)  asociado a ese campo y justo en el momento que pulso el botón crear nuevo, defino que textbox = "12/12/2012 13:31 MRSVC101"

    porque usas un textbox invisible en lugar de una variable ? o sea a nivel de form podrias declarar una variable

    Public Class form1

       Private valor As String

       Private Sub Form1_Load(...)

           valor = "12/12/2012 13:31 MRSVC101"

      End Sub

    End class

    o sea podrias usar variables en lugar de cotnroels ocultos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Tuesday, October 16, 2012 3:06 PM