CLR: .Net / Mono / Boo / Otros CLR > VB .NET

 modificar por sql

(1/1)

zumimoraes:
Hola a todos,
quisiera saber si alguien sabe decirme como modificar un campo de una bd access
Necesito vaciar un campo de hora y otro de fecha dejandolos en null
En Visual Basic introdusco la fecha y la hora con 2 datetimepicker.

Para que se pueda modificar algo ya guardado,
junto al boton guardar necesito agregar algo parecido a

if DateTimePickerHora.Checked = False Then
"campo hora = null"
end if
esto no lo logro decifrar, probe con DELETE y me vacia toda la tabla
INSERT INTO o UPLOAD no lo supe hacer
En BindingContext tampoco vi como vaciar un campo

Ya tengo el boton eliminar pero elimina la fila entera
El codigo es así:

Imports System.Data.OleDb
Public Class Form1

    Public CNN As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;DATA SOURCE=" & CurDir() & "Agenda.accdb")
    Public DM As New OleDbDataAdapter("SELECT * FROM Tabla", CNN)

    Public DS As New DataSet
    Public DT As New DataTable
    Public CB As OleDbCommandBuilder
 Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        DM.Fill(DS, "Medicamento01")
        CB = New OleDbCommandBuilder(DM)
        datetimepicker1.DataBindings.Add(New Binding("Text", DS, "Tabla.Campo1"))
        datetimepicker2.DataBindings.Add(New Binding("Text", DS, "Tabla.Campo2"))
    End Sub

Private Sub btnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNuevo.Click
        Me.BindingContext(DS, "Tabla").AddNew()
        datetimepicker1.Value = Now
        datetimepicker2.Value = Now
    End Sub

Private Sub btnGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGuardar.Click

            'BindingContext(DS, "Tabla").EndCurrentEdit()
            ''DM.Update(DS, "Tabla")
            'DS.Tables("Tabla").AcceptChanges()
           
        End If
    End Sub

 Private Sub EliminarToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EliminarToolStripMenuItem1.Click
       
                Posicion = BindingContext(DS, "Tabla").Position
                DS.Tables("Tabla").Rows(Posicion).Delete()
                DM.Update(DS, "Tabla")
                DS.Tables("Tabla").AcceptChanges()

    End Sub

Gracias por cualquier ayuda que podias aportarme.

Thanatos-chan:
Segun tu codigo:

lo que necesitas hacer es un update, ya que si le das delete se lleva la fila entera.

debes usar la sub-rutina de modificacion
debes tener en cuenta que esta actualizando el registro adecuado
debes igualar a  datetimepicker1.Value  a null y guardar los cambios
debes darle refresh o cargar el query otra vez para ver los cambios.



--- Código: vb.net --- Imports System.Data.OleDbPublic Class Form1 'inicio de declaracion de variablesPublic CNN As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;DATA SOURCE=" & CurDir() & "Agenda.accdb")Public DM As New OleDbDataAdapter("SELECT * FROM Tabla", CNN)Public DS As New DataSetPublic DT As New DataTablePublic CB As OleDbCommandBuilder'fin de declaracion de variables Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load DM.Fill(DS, "Medicamento01")CB = New OleDbCommandBuilder(DM)datetimepicker1.DataBindings.Add(New Binding("Text", DS, "Tabla.Campo1"))datetimepicker2.DataBindings.Add(New Binding("Text", DS, "Tabla.Campo2")) End Sub Private Sub btnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNuevo.ClickMe.BindingContext(DS, "Tabla").AddNew()datetimepicker1.Value = Nowdatetimepicker2.Value = NowEnd Sub Private Sub btnGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGuardar.Click 'BindingContext(DS, "Tabla").EndCurrentEdit()''DM.Update(DS, "Tabla")'DS.Tables("Tabla").AcceptChanges() End IfEnd Sub Private Sub EliminarToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EliminarToolStripMenuItem1.Click Posicion = BindingContext(DS, "Tabla").PositionDS.Tables("Tabla").Rows(Posicion).Delete()DM.Update(DS, "Tabla")DS.Tables("Tabla").AcceptChanges() End Sub  

zumimoraes:
debes usar la sub-rutina de modificacion
debes tener en cuenta que esta actualizando el registro adecuado
debes igualar a datetimepicker1.Value a null y guardar los cambios
debes darle refresh o cargar el query otra vez para ver los cambios.

Hola,
ese codigo que escribistes como comentario es el que uso.
Funciona perfectamente para cambiar una hora ya guardada. De 18:00 a 12:00 por ej.

Pero lo que no se hacer es borrarla, no se como escribir correctamente datetimepicker1.Value = null para que access no guarde ningun
dato de horario.
Quiero que el campo en access quede vacio o en null. Si en access el campo esta vacio, VB al leerlo para aplicarlo a
datetimepicker1    automaticamente deja datetimepicker1.checkbox = false . Esto seria lo mas correcto.

Gracias por la ayuda

Navegación

[0] Índice de Mensajes

Ir a la versión completa