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.


Mensajes - lucas1234

Páginas: [1]
1
Sigo probando, pero sin éxito

Cuando se abre este formulario carga un el datagridview1

Cuando hago click en un nombre de la única columna de ese datagriview1, me rellena 5 labels y debería cargar el otro datagridview(DGV2). No lo hace. Al click en el datagridview1 crea una fila en el DGV2 pero en blanco y los nombres de las columnas y lo extraño es que son los nombres de la tabla "tablita", siendo que el DGV2 debería tener los datos de la tabla usuarios

En una prueba que hice también me di cuenta que si al DGV2 le decía que me diera todos los campos de la tabla "cualquiera"(tabla que no existe) se comportaba de la misma manera que explicaba en el párrafo anterior. Ni siquiera me tiraba error

En qué me equivoco?

Código: [Seleccionar]
Imports MySql.Data.MySqlClient
Imports MySql.Data

Public Class deudores

    Dim con As MySqlConnection = New MySqlConnection("Server=localhost; user Id=user1; Password=multiredes; Database=prueba1")
    Dim cmd As MySqlCommand = New MySqlCommand()

    Public Sub deudores_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        'Se crea un MySqlDataAdapter para obtener los datos de la base
        Dim MyAdapterNombres As New MySqlDataAdapter("select distinct(nombre) from tablita Where pagado = '0'", con)

        'Se crea un DataTable que almacenará los datos desde donde se cargaran los datos al DataGridView
        Dim MyDataTableNombres As New DataTable

        'Con la información del adaptador se rellena el DataTable
        MyAdapterNombres.Fill(MyDataTableNombres)

        'Se asigna el DataTable como origen de datos del DataGridView
        DataGridView1.DataSource = MyDataTableNombres

        MyDataTableNombres.Reset()
    End Sub

    Public Sub datagridviewsegunda()

        'Dim MyAdapter3 As New MySqlDataAdapter("select * from tablita Where nombre = ('" + Label_nombre_grande.Text + "') and MONTH(mes) = MOD(MONTH(CURDATE()), 12) - 2", con)
        Dim MyAdapterDGV2 As New MySqlDataAdapter("select * from usuarios", con)

        'Se crea un DataTable que almacenará los datos desde donde se cargaran los datos al DataGridView
        Dim MyDataTableDGV2 As New DataTable

        'Con la información del adaptador se rellena el DataTable
        MyAdapterDGV2.Fill(MyDataTableDGV2)

        DGV2.DataSource = MyDataTableDGV2
    End Sub

    Public Sub DataGridView1_CellContentClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick

        'Dim loFila As DataGridViewRow = Me.DataGridView1.CurrentRow()
        Dim row As DataGridViewRow = DataGridView1.CurrentRow
        Label_nombre_grande.Text = CStr(row.Cells(0).Value)

        'Se crea un MySqlDataAdapter para obtener los datos de la base
        Dim MyAdapterLabels As New MySqlDataAdapter("select * from tablita Where pagado = '0' and nombre = ('" + Label_nombre_grande.Text + "') and kwh is not null", con)

        'Se crea un DataTable que almacenará los datos desde donde se cargaran los datos al DataGridView
        Dim MyDataTableLabels As New DataTable

        'Con la información del adaptador se rellena el DataTable
        MyAdapterLabels.Fill(MyDataTableLabels)

        MyDataTableLabels.Reset()

        If MyDataTableLabels.Rows.Count >= 0 Then
            'Label_nombre_grande.Text = CStr(MyDataTable2.Rows(0).Item("nombre"))
            Label_mes1.Text = CStr(MyDataTableLabels.Rows(0).Item("mes"))
            Label_consumo1.Text = CStr(MyDataTableLabels.Rows(0).Item("kwh"))

            Label_mes2.Text = MyDataTableLabels.Rows(1).Item("mes")
            Label_consumo2.Text = MyDataTableLabels.Rows(1).Item("kwh")

            datagridviewsegunda()

            'Label22.Text = MyDataTable.Columns(1).ColumnName()

        Else
            MsgBox("ID no encontrado")
            Label_mes1.Text = ""
            Label_consumo1.Text = ""

        End If
    End Sub

    Private Sub Button_volver_Click(sender As Object, e As EventArgs) Handles Button_volver.Click
        Me.Close()
    End Sub

End Class

2
Buena idea, pero aun no quiere andar el segundo datagridview
tmabien probé con resetear los datatbles despues de usarlos para rellenar el datagridview, pero nada
Que será?

3
Metiéndolo como código
A ver...
Código: [Seleccionar]
Private Sub DataGridView1_CellContentClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
        If e.RowIndex = -1 Then
            Return
        End If
        'Dim loFila As DataGridViewRow = Me.DataGridView1.CurrentRow()
        Dim row As DataGridViewRow = DataGridView1.CurrentRow
        Label_nombre_grande.Text = CStr(row.Cells(0).Value)

        'Se crea un MySqlDataAdapter para obtener los datos de la base
        Dim MyAdapter3 As New MySqlDataAdapter("select * from tablita Where pagado = '0' and nombre = ('" + Label_nombre_grande.Text + "') and kwh is not null", con)

        'Se crea un DataTable que almacenará los datos desde donde se cargaran los datos al DataGridView
        Dim MyDataTable3 As New DataTable

        'Con la información del adaptador se rellena el DataTable
        MyAdapter3.Fill(MyDataTable3)

        DataGridView2.DataSource = MyDataTable3

        If MyDataTable.Rows.Count >= 0 Then
            Label_mes1.Text = CStr(MyDataTable3.Rows(0).Item("mes"))
            Label_consumo1.Text = CStr(MyDataTable3.Rows(0).Item("kwh"))

            Label_mes2.Text = MyDataTable3.Rows(1).Item("mes")
            Label_consumo2.Text = MyDataTable3.Rows(1).Item("kwh")

            'Label22.Text = MyDataTable.Columns(1).ColumnName()

            'Se crea un MySqlDataAdapter para obtener los datos de la base
            Dim MyAdapter2 As New MySqlDataAdapter("select * from tablita Where nombre = ('" + Label_nombre_grande.Text + "') and MONTH(mes) = MOD(MONTH(CURDATE()), 12) - 2", con)
            '                                                                       cargar_registros("SELECT * FROM tablita WHERE MONTH(mes) = MOD(MONTH(CURDATE()), 12) - 1;", DataGridView1)
            'Se crea un DataTable que almacenará los datos desde donde se cargaran los datos al DataGridView
            Dim MyDataTable2 As New DataTable

            'Con la información del adaptador se rellena el DataTable
            MyAdapter2.Fill(MyDataTable2)

            'DataGridView2.DataSource = MyDataTable2
            'Label_anterior.Text = CStr(MyDataTable2.Rows(0).Item("kwh"))
        Else
            MsgBox("ID no encontrado")
            Label_mes1.Text = ""
            Label_consumo1.Text = ""
     
         

        End If

    End Sub

4
Estaba probando y probando y copie mal mi funcion
Aqui va la correcta

Código: [Seleccionar]
Private Sub DataGridView1_CellContentClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
        If e.RowIndex = -1 Then
            Return
        End If
        'Dim loFila As DataGridViewRow = Me.DataGridView1.CurrentRow()
        Dim row As DataGridViewRow = DataGridView1.CurrentRow
        Label_nombre_grande.Text = CStr(row.Cells(0).Value)

        'Se crea un MySqlDataAdapter para obtener los datos de la base
        Dim MyAdapter3 As New MySqlDataAdapter("select * from tablita Where pagado = '0' and nombre = ('" + Label_nombre_grande.Text + "') and kwh is not null", con)

        'Se crea un DataTable que almacenará los datos desde donde se cargaran los datos al DataGridView
        Dim MyDataTable3 As New DataTable

        'Con la información del adaptador se rellena el DataTable
        MyAdapter3.Fill(MyDataTable3)

        DataGridView2.DataSource = MyDataTable3

        If MyDataTable.Rows.Count >= 0 Then
            Label_mes1.Text = CStr(MyDataTable3.Rows(0).Item("mes"))
            Label_consumo1.Text = CStr(MyDataTable3.Rows(0).Item("kwh"))

            Label_mes2.Text = MyDataTable3.Rows(1).Item("mes")
            Label_consumo2.Text = MyDataTable3.Rows(1).Item("kwh")

            'Label22.Text = MyDataTable.Columns(1).ColumnName()

            'Se crea un MySqlDataAdapter para obtener los datos de la base
            Dim MyAdapter2 As New MySqlDataAdapter("select * from tablita Where nombre = ('" + Label_nombre_grande.Text + "') and MONTH(mes) = MOD(MONTH(CURDATE()), 12) - 2", con)
            '                                                                       cargar_registros("SELECT * FROM tablita WHERE MONTH(mes) = MOD(MONTH(CURDATE()), 12) - 1;", DataGridView1)
            'Se crea un DataTable que almacenará los datos desde donde se cargaran los datos al DataGridView
            Dim MyDataTable2 As New DataTable

            'Con la información del adaptador se rellena el DataTable
            MyAdapter2.Fill(MyDataTable2)

            'DataGridView2.DataSource = MyDataTable2
            'Label_anterior.Text = CStr(MyDataTable2.Rows(0).Item("kwh"))
        Else
            MsgBox("ID no encontrado")
            Label_mes1.Text = ""
            Label_consumo1.Text = ""
     
         

        End If

    End Sub


5
Por si acaso, la consulta
(((("select * from tablita Where nombre = ('" + Label_nombre_grande.Text + "') and MONTH(mes) = MOD(MONTH(CURDATE()), 12) - 2", con))))
la uso en otro formulario y anda perfecto, y como decía, en misql me da resultados

6
Hola, un auxilio
La funcion va muy bien. Al hacewr click en una celda del datagridview1 me coloca ese valor en el Label_nombre_grande
Luego consulta a la tabla todo sobre ese usuario
Luego coloca bien los datos en Label_mes1, Label_consumo1, Label_mes2, Label_consumo2
Pero, el datagridview2 siempre lo deja en blanco. Cuando hago la pueba manual desde mysql la consulta(la que dice en parte "MONTH(mes) = MOD(MONTH(CURDATE()), 12) - 2") que se usa para rellenar el datagridview2 me da resultados.. por eso supongo que hay algo en visual que estoy haciendo mal
Cuando le digo que el datagridview2 lo rellene con mydatatable3 (la otra consulta que uso para rellenar los 4 label)... tambien me deja en blanco el datagridview2. Por eso comente esa linea
A ver si pueden ayudarme a que visual me cargue la cosulta en mi datagridview2, la consulta ("select * from tablita Where nombre = ('" + Label_nombre_grande.Text + "') and MONTH(mes) = MOD(MONTH(CURDATE()), 12) - 2", con)
Copio mi función que no entiendo


Código: [Seleccionar]
Private Sub DataGridView1_CellContentClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
        If e.RowIndex = -1 Then
            Return
        End If
        'Dim loFila As DataGridViewRow = Me.DataGridView1.CurrentRow()
        Dim row As DataGridViewRow = DataGridView1.CurrentRow
        Label_nombre_grande.Text = CStr(row.Cells(0).Value)

        'Se crea un MySqlDataAdapter para obtener los datos de la base
        Dim MyAdapter3 As New MySqlDataAdapter("select * from tablita Where pagado = '0' and nombre = ('" + Label_nombre_grande.Text + "') and kwh is not null", con)

        'Se crea un DataTable que almacenará los datos desde donde se cargaran los datos al DataGridView
        Dim MyDataTable3 As New DataTable

        'Con la información del adaptador se rellena el DataTable
        MyAdapter3.Fill(MyDataTable3)

        'DataGridView2.DataSource = MyDataTable3

        If MyDataTable.Rows.Count >= 0 Then
            Label_mes1.Text = CStr(MyDataTable.Rows(0).Item("mes"))
            Label_consumo1.Text = CStr(MyDataTable.Rows(0).Item("kwh"))

            Label_mes2.Text = MyDataTable.Rows(1).Item("mes")
            Label_consumo2.Text = MyDataTable.Rows(1).Item("kwh")

            'Label22.Text = MyDataTable.Columns(1).ColumnName()

            'Se crea un MySqlDataAdapter para obtener los datos de la base
            Dim MyAdapter2 As New MySqlDataAdapter("select * from tablita Where nombre = ('" + Label_nombre_grande.Text + "') and MONTH(mes) = MOD(MONTH(CURDATE()), 12) - 2", con)
            '                                                                       cargar_registros("SELECT * FROM tablita WHERE MONTH(mes) = MOD(MONTH(CURDATE()), 12) - 1;", DataGridView1)
            'Se crea un DataTable que almacenará los datos desde donde se cargaran los datos al DataGridView
            Dim MyDataTable2 As New DataTable

            'Con la información del adaptador se rellena el DataTable
            MyAdapter2.Fill(MyDataTable2)

            DataGridView2.DataSource = MyDataTable2
            'Label_anterior.Text = CStr(MyDataTable2.Rows(0).Item("kwh"))
        Else
            MsgBox("ID no encontrado")
            Label_mes1.Text = ""
            Label_consumo1.Text = ""
     
         

        End If

    End Sub


7
Si, el objetivo lo tengo, la g´rafica del programa ya estaba, la base de datos la tenía, hasta q tu idea con el tema de poner el mes en las celdas y no el el titulo de la columna me pareció mejor; fué ahí cuando la cambié(a la tabla). Porque no sabía como hacer el código como tenía antes mi tabla
Y sigo con mi proyecto ahora, con este nuevo re-planteo sugerido

Pero, si a alguien le interesa, encontre cómo sacar el título de la columna

Label22.Text = MyDataTable.Columns(1).ColumnName()

Así pone el titulo de la 2da columna"(1)", en el label22
Para la tercer columna habría q cambia el '1' por un '2' y asi sucesivamente

Seguro me surgirá alguna duda y volveré por su auxilio

Gracias por las buenas ideas

8
A la hora de ingresar un usuario tendria que repetir estas tres lineas una 24 veces, para los dos años

 Dim myAdapter As New MySqlDataAdapter("INSERT INTO lectura (user_name, mes, kwh, pagado) VALUES ('" + TextBox_nombre.Text + "', '03-2014')", myconn)
 Dim mydatatable As New DataTable
 myAdapter.Fill(mydatatable)

Pero sigo pensando en la forma de ingresar los datos de un mes en todos los usuarios...
O se les ocurre otra idea...

9
Además me plantea un dilema esta forma de tabla a la hora de ingresar las lecturas del nuevo mes. Dilema para mi, tal ves una tontería para quien sabe
Porque antes yo cargaba un datagridview con binding, entonces el usuario introducía los datos en la columna de ese mes
Pero en este caso, cómo? Porque habría que hacer una fila nueva por cada usuario y colocar en la columna mes, el nuevo mes y recién poder colocar las lecturas y en el campo pago un 0. No me parece que sería con un data grid. Pero usar textbox... mmm, y si son mucho usuarios?

10
mmm, ok, me gustó tu idea de pagar, pero cómo sería para que en un datagridview u otra forma, pero que en un form me diga los nombres de todos los usuarios que no han pagado y cuántos kwh de cada mes impago, para despues poder hacer la cuenta del valor del kwh
Ahi sería lo del select distinct where pagado = 0 y al hacer click en el nombre del usuario me podría abrir otro datagrid con los detalles de ese usuario? O lo hice muy complicado, o demasiado sencillo? je

11
Mmmm, no se ma había ocurrido
A ver, voy a lo real de mi proyecto
Es para gestionar la energía eléctrica en un pueblo
en mi formulario de ingreso de usuarios, tomo los datos de nombre, direccion, barrio y tipo-de-usuraio de los textBox y los introduzco en la tabla con autoincremento en id_user. Así tenia una fila por cada usuario. Tu idea me haría mas sencillo (creo, a priori) los de buscar por fechas. Yo pensaba que al momento de pagar un usuario la factura de ese mes, se agregara al campo de lectura (del mes que está pagando) un "P-" antes del número de la lectura de los KWh de ese mes. Mi dilema con la nueva idea es a la hora de abrir el formulario que muestre los que aun no han pagado, que el campo solo tenga numeros, no tenga el "P-" antes del número. Y lo ideal sería que me muestre una fila por cada usuario, mmm. Cómo sería? Tal ves con un select distinct where campo solo numerico? Pero ahí solo me diría los usuarios que deben, independientemene de si deben un mes, 2 o 3
Cómo lo ves?

12
Buen día Alex. Sí, lo que dices tienes toda la razón, pensé en re-plantearla a mi tabla pero no veo la forma
La idea de la tabla es, por ejemplo, decir cuantos artículos compró una persona en un mes X. Por eso en esa tabla cada fila es un usuario distinto, y (entre otras) en cada columna hay un mes diferente
Los usuarios en cada fila me queda cómo para otras cosultas que hago a la tabla
No sé, tal ves (dándoles la utilizacíon que le doy a mi tabla) puedan darme una idea de cómo re-plantearla o sino ver lo de buscar por columna

13
Buenos dias

Probablemente la forma q elegí hacerlo es la incorrecta

Tengo una tabla con 24 columnas que tienen la fecha(03-2014 otra 04-2014 otra 05-2014) de los 2 años siguientes, y tb otras columnas

Declaro una variable que guarda la fecha de hoy y la formateo para que quede igual que el nombre de las columnas(ejem 03-2014)

My problema es que cuando en visual le doy el comando sql para q busque en la base de datos... no me hace caso

He probado de estas maneras:

SELECT lectura_nombre, ('03-2019') from lectura; probado desde mysql directamente devuelve una columna llamada 03-2019, pero esa columna no existe. Y en cada campo coloca 03-2019

SELECT lectura_nombre, ("03-2019") from lectura; probado desde mysql directamente devuelve una columna llamada 03-2019, pero esa columna no existe. Y en cada campo coloca 03-2019

SELECT lectura_nombre, enero-2014 from lectura; error, de hecho la columna se llama 01-2014, obvio que da error SELECT lectura_nombre, 03-2019 from lectura; probado desde mysql directamente devuelve una columna llamada 03-2019 y en cada campo coloca -2016 y si cambio la fecha a 03-2014 me da -2011 en cada campo

SELECT lectura_nombre FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = lectura; error show columns from lectura; en la primer columna del resultado me da el nombre de cada columna de la tabla lectura y en las otras Type, Null, Key

select * from lectura where column_name = ("lectura_direccion"); error

SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA LIKE "prueba1" AND TABLE_NAME = "lectura" ; me devuelve solo una columna y en cada renglon todas los nombres de las columnas

SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_NAME = "lectura" ; lo mismo q en la anterior select * from lectura where lectura.lectura_barrio = "Villa mazini"; todos los renglones en que la columna lectura_barrio tiene "Villa mazini"

Je, no van a decir q no lo intenté

La idea es que a la variable _tiempo (Dim _tiempo As Object = Date.Now.ToString("MM-yyyy")) le reste uno, para ir al mes anterior al actual. Y luego busque los nombres de las columnas y cuando coincida, muestre esa columna

Lo que sí logro hacer, es usar la variable con el insert, ejem

UPDATE lectura SET fecha_eliminacion = ('" + _tiempo + "') where idusuarios = ('" + Label_id.Text + "')

Cambiar el diseño de la tabla lo he pensado, pero también filtro por filas porque cada fila es un usuario diferente

La otra q se me ocurrió era recorrer toda la tabla en la datatable de un datagrid y buscarla en la datatable cuando coincida con la variable _tiempo menos 1. Pero ni idea de cómo hacerlo

Tal ves yo me enrededé para verlo de este ángulo y tomándolo por otro sea mejor.

Espero haberme explicado bien Saludos

14
En otro foro y gracias a Javinet encontré la solución. Lo comparto:

 
Código: [Seleccionar]
Private Sub DataGridView1_CellBeginEdit(sender As System.Object, e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles DataGridView1.CellBeginEdit

        If String.IsNullOrEmpty(Me.DataGridView1.CurrentCell.Value.ToString.Trim) Then

            Me.bEdit = True

        Else

            e.Cancel = True
            MsgBox("Estimado usuari@ la celda que usted está intentando modificar ya tiene datos. Por favor elija otra. Muchas Gracias. xDD")

        End If

    End Sub
ya no fué necesario lo de validacion y lo de cellendedit
saludos

15
Perdón por no explicarme bien.

Cito: "Ahora cargo el datagrid y esos campos están vacíos. Los edito, les pongo un valor y guardo. Ahora esos campos ya no están vacíos pero ¿se podrán seguir editando o ya no se podrán editar?"
Ahora que están con un valor no se debería poder volver a editar ese campo
De cualquier forma, los cambios en la base de datos se efectúan al hacer click en el botón guardar o al salir con la "x" que te pregunta si queres guardar(si es que hubo cambios)
El datagrid se carga, al cargar el formulario(podría agregar un botón refrescar), en ese momento se ven cuáles son los campos vacíos y entonces esos campos deben estar bloqueados

16
Que tal Ogramar?
Cuando se da de alta un usuario, automaticamente algunos campos quedan vacíos.
La idea es que solo esos campos vacíos se puedan editar(los que tienen datos, estén bloqueados).
En un formulario aparte hará esto de cambiar valores en campos que no estén vacíos.
La parte de validar en mi código funciona a medias, esa parte de IsNullOrEmpty
Lo del datagrid y la base de datos es como vos decís

17
Buenos días

Lllevo un tiempo intentando con esto y no hay caso, espero puedan darme una mano. Abajo copio mi código.

Tengo un formulario con Datagridview, boton para cerrar y otro boton para guardar Mi idea es que en el datagridview solo me deje insertar datos cuando el campo está vacío. Y que en caso de que ya inserté muchos datos en varias celdas vacías(aun no guardó los datos porque lo hace al salir o al hacer click en el boton guardar con la función Actualizar()) y hiciera click en una prohibida(una con datos)... que no pierda todo lo ya escrito

Mi problema es que en la validación que tengo, si hago click en una celda vacía y sin escribir nada hago click en otra celda(vacía o no)... se muere el formulario, ni siquiera el boton cerrar funciona Y tambien, así como lo tengo, me deja escribir en las celdas que ya tienen datos(números); y no quiero que lo permita, solo si la celda/campo está vacía

Espero su respuesta

Gracias de antemano

Código: [Seleccionar]
Imports MySql.Data.MySqlClient
Public Class ingreso_lecturas

    'BindingSource 
    Private WithEvents bindingsource As New BindingSource
    ' Adaptador de datos sql 
    Private mySqlDataAdapter As MySqlDataAdapter
    ' Cadena de conexión 
    Dim myconn As New MySqlConnection("Server=localhost; user Id=user1; Password=multiredes; Database=prueba1")
    ' flag 
    Private bEdit As Boolean
    ' actualizar los cambios al salir 
    Private Sub ingreso_lecturas_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) _
            Handles Me.FormClosing
        If bEdit Then
            'preguntar si se desea guardar 
            If (MsgBox("Guardar cambios ?", MsgBoxStyle.YesNo, "guardar")) = MsgBoxResult.Yes Then
                Actualizar(False)
            End If
        End If
    End Sub

    Private Sub ingreso_lecturas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' propiedades del datagrid 
        With DataGridView1
            ' alternar color de filas 
            .AlternatingRowsDefaultCellStyle.BackColor = Color.FloralWhite
            .DefaultCellStyle.BackColor = Color.Beige
            ' Establecer el origen de datos para el DataGridview 
            .DataSource = bindingsource
        End With
        ' botones 
        btn_update.Text = "Guardar cambios"
        ' cagar los datos 
        cargar_registros("Select * From lectura", DataGridView1)

    End Sub

    Private Sub cargar_registros( _
        ByVal sql As String, _
        ByVal _datagridview As DataGridView)
        Try
            ' Inicializar el SqlDataAdapter indicandole el comando y el connection string 
            mySqlDataAdapter = New MySqlDataAdapter(sql, myconn)
            Dim mySqlCommandBuilder As New MySqlCommandBuilder(mySqlDataAdapter)
            ' llenar el DataTable 
            Dim dt As New DataTable()
            mySqlDataAdapter.Fill(dt)
            ' Enlazar el BindingSource con el datatable anterior 
            bindingsource.DataSource = dt
            With _datagridview
                .Refresh()
                ' coloca el registro arriba de todo 
                .FirstDisplayedScrollingRowIndex = bindingsource.Position
            End With
            bEdit = False
        Catch exSql As MySqlException
            MsgBox(exSql.Message.ToString)
        Catch ex As Exception
            MsgBox(ex.Message.ToString)
        End Try
    End Sub

    ' botón para guardar los cambios y llenar la grilla 
    Private Sub Button1_Click( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles btn_update.Click
        Actualizar()
    End Sub

    Private Sub Actualizar(Optional ByVal bCargar As Boolean = True)
        ' Actualizar y guardar cambios (si tiene algo-if not is nothing)
        If Not bindingsource.DataSource Is Nothing Then
            mySqlDataAdapter.Update(CType(bindingsource.DataSource, DataTable))

            'ElseIf cargar_registros("Select * From lectura where ", DataGridView1) Then
            '    MsgBox("No puede cambiar datos ya introducidos")
            'Else
            If bCargar Then
                cargar_registros("Select * From lectura", DataGridView1)
            End If
        End If
    End Sub


    Private Sub DataGridView1_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _
            Handles DataGridView1.CellEndEdit
        bEdit = True
       
    End Sub

    Private Sub dataGridView1_CellValidating(ByVal sender As Object, _
    ByVal e As DataGridViewCellValidatingEventArgs) _
    Handles DataGridView1.CellValidating

        Dim headerText As String = _
            dataGridView1.Columns(e.ColumnIndex).HeaderText

        ' Abort validation if cell is not in the CompanyName column.
        If headerText.Equals("idUsuarios") Then Return

        ' Confirm that the cell is not empty.
        'If Not (String.IsNullOrWhiteSpace(e.FormattedValue.ToString())) Then
        'If (DataGridView1.SelectedCells.Is Not Empty(e.FormattedValue.ToString())) Then
        If (String.IsNullOrEmpty(e.FormattedValue.ToString())) Then
            DataGridView1.Rows(e.RowIndex).ErrorText = _
                "No puede sobre-escribir lecturas anteriores"
            e.Cancel = True
        End If
    End Sub


    Private Sub Button_cerrar_Click(sender As Object, e As EventArgs) Handles Button_cerrar.Click
        Me.Close()
    End Sub

End Class

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".