none
editar una base de datos RRS feed

  • Pregunta

  • holas !! miren tengo una aplicacion la cual consiste en :
    *un fromulario con distintas campos o textbox
    *botones de configuracion(Nuevo,Cancelar,Modificar,Eliminar y Guardar)
    *una mdf o base de datos "DBPersonal.mdf"
    *una dbo o tabla "Detalles.dbo" con 3 registros
    ahora bien este formulario esta enlazado con la base de datos mediante la propiedad de origen de datos. De la ventana de origen de datos jale los campos de la tabla Detalle y aparecieron con un label y un textbox cada uno de los campos de mi tabla tambien un bindingnavigator con las mismas opciones que mis botones guardar, nuevo,etc....,
    cada uno de mis botones les doy una linea de codigo para que realize su funcion determinada este es el codigo para los botones:

     

    private void btnnuevo_Click(object sender, EventArgs e)

    {
    detalleBindingSource.AddNew();
    }

     

    private void btncancelar_Click(object sender, EventArgs e)

    {
    detalleBindingSource.CancelEdit();
    }

     

    private void btneliminar_Click(object sender, EventArgs e)
    {
    detalleBindingSource.RemoveCurrent();
    }

    tambien luego de jalar los campos de mi tabla detalle como les dije anteriormente se genera un codigo que es :

    public

     

    partial class Form3 : Form

    {

    public Form3()
    {
    InitializeComponent();
    }

     

    private void detalleBindingNavigatorSaveItem_Click(object sender, EventArgs e)

    {

    this.Validate();
    this.detalleBindingSource.EndEdit();
    this.detalleTableAdapter.Update(this.dBPersonalDataSet.Detalle);
    }

     

    private void Form3_Load(object sender, EventArgs e)

    {

    // TODO: esta lnea de cdigo carga datos en la tabla 'dBPersonalDataSet.Detalle' Puede moverla o quitarla segn sea necesario.
    this.detalleTableAdapter.Fill(this.dBPersonalDataSet.Detalle);
    }

    es mas o menos asi claro que estan todos los using y tambien namespace el dilema radica en que los botones nuevo modificar eliminar realizan cada uno su funcion ademas se pueden visualizar en los textbox que jale desde la ventana origen de datos los registros que puse en mi tabla de una forma directa cuando la cree, pero cuando lleno un nuevo registro desde el formulario claro llenando esta vez los textbox que serian cada uno de los campos de mi tabla y le doy al boton guardar aparentemente guarda el registro incluso cree cuatro botones que serian mis navegadores (1 boton que me lleva al primer registro, otro boton que me lleva al anterior, un tercer boton para ir al siquiente y un ultimo boton que me lleva directamente al ultimo registro para esos botones uso Movefirst(); MovePrevius(), Movenext(), y MoveLast()); y al navegar entre los registros si se visualiza el 4º registro pero al detener la ejecucio y volverla a ejecutar el 4º registro no se guarda en la tabla y es esa mi pregunta ¿Como logro guardar un registro o varios llenando los campos en el formulario y enviarlo a que se guarde en la base de datos o en la tabla detalles?
    porfa ayudenme espero me hayan entendido y si no tratare de colgar el proyecto comprimido para que lo vean y entiendan mejor mis dudadas desde ya Gracias!!!!!
    lunes, 26 de octubre de 2009 23:51

Todas las respuestas

  • Hola.

    Amigo, parece que solo estas agregando filas al datatable pero no mandas a actualizar la base de datos por eso al cerrar estos se pierden.

    Ahora si te das cuenta, visual te genera algunos metodos para el guardado de los cambios, desde el navegador, debieron haberse creado aparte de los botones que mencionas dos mas, uno con el icono de una cruz (hace lo mismo que tu con el boton nuevo) y otro con la x, son para añadir y eliminar, si haces click se muestran tambien uno de discket que es para guardar (te falta).

    Ahora te recomiendo que utilizes ese codigo para que se te guarden los cambios, puedes hacerlo de dos maneras:

    1.- añade el  a tu ventana un boton que sea guardar cambios y que ejecute el codigo:

    this.Validate();
    this.detalleBindingSource.EndEdit();
    this.detalleTableAdapter.Update(this.dBPersonalDataSet.Detalle);
    2.- en el editor del navegador puedes añadir el boton guardar si no te sale y ligarlo al evento:

    detalleBindingNavigatorSaveItem_Click

    Sea como sea, te falta guardar los cambios en la base.
    martes, 27 de octubre de 2009 12:57
  • Hola.

    Prueba el siguiente codigo, creo que te ayudara

        Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
    
            Dim sql As String = " select * from In_Bodegas order by 1 "
            daTmp = New OdbcDataAdapter(sql, "DATABASE=RS1DB;DSN=RS1DB;")
            '---
            Dim cbTmp As New OdbcCommandBuilder(daTmp)
            '---
            dsTmp = New DataSet
            daTmp.Fill(dsTmp, "In_Bodegas")
    
            If dsTmp.Tables(0).Rows.Count = 0 Then
                Exit Sub
            End If
    
    
            mbsPrimario.DataSource = dsTmp.Tables("In_Bodegas")
    
            dsTmp.Tables("In_Bodegas").Columns("CAPA_ALMAC").DefaultValue = 0
    
    
            Me.TextBox1.DataBindings.Add("Text", mbsPrimario, "COD_BOD")
            Me.TextBox2.DataBindings.Add("Text", mbsPrimario, "DESCRIPCION")
            Me.TextBox3.DataBindings.Add("Text", mbsPrimario, "CAPA_ALMAC", True, DataSourceUpdateMode.OnPropertyChanged, "Nulo", "###,##0")
    
    
        End Sub
    
    
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            mbsPrimario.MoveFirst()
        End Sub
    
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            mbsPrimario.MovePrevious()
        End Sub
    
        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
            mbsPrimario.MoveNext()
        End Sub
    
        Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
            mbsPrimario.MoveLast()
        End Sub
    
    
        'add
        Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
    
            dsTmp.Tables("In_Bodegas").Columns("FEC_REG").DefaultValue = Date.Now
            mbsPrimario.AddNew()
    
            Using odbcconn As New OdbcConnection("ODBC;DATABASE=RS1DB;DSN=RS1DB;")
    
                odbcconn.Open()
                Dim wOdbcCommand As New OdbcCommand("{ CALL sp_In_Bodegas_GetNextCod }", odbcconn)
                TextBox1.Text = (wOdbcCommand.ExecuteScalar.ToString)
    
            End Using
    
        End Sub
    
        'upd
        Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
    
            mbsPrimario.EndEdit()
            Debug.Print(daTmp.Update(dsTmp.Tables("In_Bodegas")))
    
        End Sub
    
        'del
        Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
            mbsPrimario.RemoveCurrent()
            Debug.Print(daTmp.Update(dsTmp.Tables("In_Bodegas")))
        End Sub
    
    

    Programador en VB.NET 2008, SQL SERVER 2008, Crystal Report 2008 Si la respuesta es correcta, marcála como correcta. También puedes votar como útil si te sirvió.
    • Propuesto como respuesta Bitnius lunes, 2 de noviembre de 2009 3:54
    lunes, 2 de noviembre de 2009 3:41