• Viernes 8 de Noviembre de 2024, 01:47

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - datawox

Páginas: [1]
1
VB .NET / VB.NET + ACCESS Como Modificar un Registro
« en: Viernes 23 de Abril de 2010, 16:21 »
Hola a todos!
Mi problema es el siguiente: Tengo un Form el cual lo abro con los datos de un registro que quiero modificar.
Pero tengo un código que lo unico que hace es añadirme otro registro mas...en vez de modificar el ó los campos que quiero.

El código es:

'====================================================================================
'====================================================================================

Try
            'Crear la Tabla
            Dim tablaVales As String = "SELECT * FROM Vales WHERE Id=" & txtId.Text


            ' Crear un nuevo objeto del tipo DataAdapter
            Using da = New OleDbDataAdapter(tablaVales, conexion)

                ' Crear los comandos de insertar, actualizar y eliminar
                Dim cb As New OleDbCommandBuilder(da)

                dt = New DataTable

                ' Llenar la tabla con los datos indicados
                da.Fill(dt)

                ' Crear un nuevo registro
                Dim dr As DataRow = dt.NewRow()
                ' Asignar los datos de los textbox a la fila
                'asignarDatos(dr)
                dr("Numero") = txtNumero.Text
                dr("Fecha") = dataFecha.Value
                dr("Familia") = cboFamilia.Text
                dr("Maquina") = cboDescripcion.Text
                dr("Horas") = txtHoras.Text
                dr("Precio") = txtPrecio.Text
                dr("Total") = txtTotal.Text

                ' Añadir la nueva fila a la tabla
                dt.Rows.Add(dr)
                ' Guardar físicamente los datos en la base

                da.Update(dt)

                dt.AcceptChanges()
                ' Si es el primer registro de la base,
                ' volver a leer los datos para actualizar los IDs
                If CInt("0" & dr("Id").ToString) = 0 Then
                    dt = New DataTable
                    da.Fill(dt)

                End If

                'Cerramos el Form
                Me.Close()

            End Using

'====================================================================================
'====================================================================================

He probado cambiar la consulta y poner UPDATE.. pero no me reconoce la tabla, me dice que el indice esta a cero... y no me hace nada.
Agradeceria cualquier duda.
Gracias

2
VB .NET / VB.NET + ACCESS Como Eliminar un Registro
« en: Viernes 16 de Abril de 2010, 10:08 »
Tengo un modulo con lo siguiente:

==========================================================================================================================
==========================================================================================================================
'Importamos los namespaces
Imports System.Data
Imports System.Data.OleDb
Imports System.Windows.Forms.Form

Module Conexiones

    'Variables
    Public dt As DataTable
    Public da As OleDbDataAdapter
    'Conexión con la mdb
    Public conexion As String = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\192.168.44.220basesdedatosAgenda.accdb;Persist Security Info=False")
    'La cadena de selección, una por cada Tabla que queramos abrir
    Public TdatosId As String = "SELECT Id,Nombre,Cp,Poblacion,Tel1,Tel2,Mov1,Mov2,Mail FROM Datos ORDER BY Id"
    Public TdatosNombre As String = "SELECT * FROM Datos ORDER BY Nombre"
    Public EliminarRegistro As String = "DELETE FROM Datos WHERE Id=4"

End Module
===========================================================================================================================
===========================================================================================================================

En el Evento clic de un boton con el cual quiero eliminar el registro con el Id=4…

===========================================================================================================================
===========================================================================================================================
Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminar.Click
       
        Try

            'Crear un nuevo objeto del tipo DataAdapter
            da = New OleDbDataAdapter(EliminarRegistro, conexion)

            'Crear los comandos de insertar, actualizar y eliminar
            Using cb As New OleDbCommandBuilder(da)

                Dim cmd As New OleDbCommand(EliminarRegistro)

                da.Fill(dt)

                cmd.ExecuteNonQuery()

                'Llenar la tabla con los datos indicados


            End Using

        Catch ex As Exception
            MessageBox.Show("ERROR al conectar o recuperar los datos:" & vbCrLf & _
                            ex.Message, "Conectar con la base", _
                            MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

        ' propiedades del datagrid  
        ' '''''''''''''''''''''''''''''''''''''  
        With dgvDatos
            ' alternar color de filas  
            .AlternatingRowsDefaultCellStyle.BackColor = Color.FloralWhite
            .DefaultCellStyle.BackColor = Color.RosyBrown
            ' Establecer el origen de datos para el DataGridview  
            .DataSource = dt
        End With
========================================================================================================================
========================================================================================================================

Lanza el siguiente Error
Titulo: Conectar con la base
ERROR al conectar o recuperar los datos:
ExecuteNonQuery: la propiedad Connection no se ha inicializado

Pero el regitro con el Id=4 lo elimina de la Base de Datos…

Alguien sabe como puedo depurar este código para que no lance el error?
O si lo puedo hacer mejor de otra forma?
Gracias.

Páginas: [1]