none
Agregar nuevas filas o registros RRS feed

  • Pregunta

  • Hola que tal soy nuevo en el foro y en  VB.NET, hace una semana recien empiezo, y ya vi decenas de tutoriales, y un mini manual, pero todavía no logro acceder correctamente a la base de datos "a través" del Binding Source,  que por lo que creo, cambia el dataset para luego ser exportado por un Table Adapter (no sé si lo dije bien, creo que hasta yo me confundí). Lo que tengo en mi formulario son controles para agregar tiempos de entrada y salida del tipo Date (estos tiempos se guardan en una tabla llamada Horas), también Códigos de Producto,Nombre de Producto,Cantidad, un ID de Hora que referencia a la anterior tabla, ID de empleado, ID de Mesa,y el Precio (a la tabla la llamé DetallesHoras)

    Ahora bien, lo que no sé como hacer es : AGREGAR UNA NUEVA FILA AL DATASET A TRAVÉS DEL BINDING SOURCE y luego de agregar esa fila COMO OBTENER EL ULTIMO ID AGREGADO EN LA TABLA "Horas".

    Muchas gracias por su tiempo, lamento haber sido tan extenso, y perdón por las mayúsculas, es para distinguir los problemas de las declaraciones anteriores


    • Editado Cristhian_Salta miércoles, 3 de agosto de 2011 21:50 Título Extenso
    miércoles, 3 de agosto de 2011 21:08

Respuestas

  • "Cristhian_Salta" preguntó:

    > lo que no sé como hacer es : AGREGAR UNA NUEVA FILA AL DATASET
    > A TRAVÉS DEL BINDING SOURCE...

    Hola:

    Un objeto DataSet NO TIENE FILAS; las tendrá algún objeto DataTable existente en el objeto DataSet.

    Para añadir una nueva fila, simplemente tendrías que llamar al método AddNew del objeto BindingSource:

        Dim value As Object = Me.BindingSource1.AddNew()
    
        ' Referenciamos el objeto DataRow correspondiente
        ' al nuevo registro.
        '
        Dim row As DataRow = DirectCast(value, DataRowView).Row
    

    > y luego de agregar esa fila COMO OBTENER EL ULTIMO ID
    > AGREGADO EN LA TABLA "Horas".

    Ese campo ID, ¿se trata de algún campo definido como Autonumérico o Identity? ¿Con qué tipo de base de datos estás trabajando? ¿Access, SQL Server?

    Si en el origen de datos de tu proyecto ese campo aparece como Autonumérico, y sus propiedades AutoIncrementSeed y AutoIncrementeStep están correctamente definidas, el objeto DataRow que se obtiene al llamar al método AddNew del objeto BindingSource, te devuelve el nuevo valor autonumérico. Continuando con el ejemmplo anterior:

        Dim newId As Integer = CInt(row("ID"))
    
        MessageBox.Show(CStr(newId))
    

    Un saludo

     


    Enrique Martínez
      [MS MVP - VB]

    jueves, 4 de agosto de 2011 18:51
    Moderador

Todas las respuestas

  • Sigo sin solucionarlo, pero creo tener algo que se acerca...

    Declarar

     

    
    
    Private filaHora As DetallesMesaDataSet.HorasRow
    '''''Codigo de usuario'''''''
    filaHora = CType(CType(Me.bndHoras.AddNew, DataRowView).Row, DetallesMesaDataSet.HorasRow)
    filaHora.FechaInicio = Now


    Y llenar así la fila correspondiente, pero sigo sin ver como obtengo el ULTIMO Id agregado a una tabla (en este caso es el mismo Id que estoy por agregar, pero resulta que me dá un numero negativo asi que no se que estoy haciendo mal)

     


    jueves, 4 de agosto de 2011 0:54
  • "Cristhian_Salta" preguntó:

    > lo que no sé como hacer es : AGREGAR UNA NUEVA FILA AL DATASET
    > A TRAVÉS DEL BINDING SOURCE...

    Hola:

    Un objeto DataSet NO TIENE FILAS; las tendrá algún objeto DataTable existente en el objeto DataSet.

    Para añadir una nueva fila, simplemente tendrías que llamar al método AddNew del objeto BindingSource:

        Dim value As Object = Me.BindingSource1.AddNew()
    
        ' Referenciamos el objeto DataRow correspondiente
        ' al nuevo registro.
        '
        Dim row As DataRow = DirectCast(value, DataRowView).Row
    

    > y luego de agregar esa fila COMO OBTENER EL ULTIMO ID
    > AGREGADO EN LA TABLA "Horas".

    Ese campo ID, ¿se trata de algún campo definido como Autonumérico o Identity? ¿Con qué tipo de base de datos estás trabajando? ¿Access, SQL Server?

    Si en el origen de datos de tu proyecto ese campo aparece como Autonumérico, y sus propiedades AutoIncrementSeed y AutoIncrementeStep están correctamente definidas, el objeto DataRow que se obtiene al llamar al método AddNew del objeto BindingSource, te devuelve el nuevo valor autonumérico. Continuando con el ejemmplo anterior:

        Dim newId As Integer = CInt(row("ID"))
    
        MessageBox.Show(CStr(newId))
    

    Un saludo

     


    Enrique Martínez
      [MS MVP - VB]

    jueves, 4 de agosto de 2011 18:51
    Moderador