• Jueves 7 de Noviembre de 2024, 23:37

Autor Tema:  modificar por sql  (Leído 2036 veces)

zumimoraes

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
modificar por sql
« en: Miércoles 24 de Noviembre de 2010, 15:48 »
0
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

  • Miembro MUY activo
  • ***
  • Mensajes: 136
  • Nacionalidad: do
    • Ver Perfil
Re: modificar por sql
« Respuesta #1 en: Jueves 25 de Noviembre de 2010, 00:50 »
0
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
  1.  
  2. Imports System.Data.OleDb
  3. Public Class Form1
  4.  
  5. 'inicio de declaracion de variables
  6. Public CNN As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;DATA SOURCE=" & CurDir() & "Agenda.accdb")
  7. Public DM As New OleDbDataAdapter("SELECT * FROM Tabla", CNN)
  8. Public DS As New DataSet
  9. Public DT As New DataTable
  10. Public CB As OleDbCommandBuilder
  11. 'fin de declaracion de variables
  12.  
  13. Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  14.  
  15. DM.Fill(DS, "Medicamento01")
  16. CB = New OleDbCommandBuilder(DM)
  17. datetimepicker1.DataBindings.Add(New Binding("Text", DS, "Tabla.Campo1"))
  18. datetimepicker2.DataBindings.Add(New Binding("Text", DS, "Tabla.Campo2"))
  19.  
  20. End Sub
  21.  
  22. Private Sub btnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNuevo.Click
  23. Me.BindingContext(DS, "Tabla").AddNew()
  24. datetimepicker1.Value = Now
  25. datetimepicker2.Value = Now
  26. End Sub
  27.  
  28. Private Sub btnGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGuardar.Click
  29.  
  30. 'BindingContext(DS, "Tabla").EndCurrentEdit()
  31. ''DM.Update(DS, "Tabla")
  32. 'DS.Tables("Tabla").AcceptChanges()
  33.  
  34. End If
  35. End Sub
  36.  
  37. Private Sub EliminarToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EliminarToolStripMenuItem1.Click
  38.  
  39. Posicion = BindingContext(DS, "Tabla").Position
  40. DS.Tables("Tabla").Rows(Posicion).Delete()
  41. DM.Update(DS, "Tabla")
  42. DS.Tables("Tabla").AcceptChanges()
  43.  
  44. End Sub
  45.  
  46.  
Que es un genio???? yo superare a un genio con trabajo duro, y eso es todo.

zumimoraes

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: modificar por sql
« Respuesta #2 en: Viernes 26 de Noviembre de 2010, 12:20 »
0
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