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 - Mary

Páginas: 1 [2]
21
Hola! Gracias por responder. He probado lo de las comillas, pero me sigue dando error.
Así que lo haré escribiendo todos los nombre sin espacios.
Saludos.

22
Hola, tengo un problema a la hora de insertar datos de un datagridview a una base de datos mysql. El problema es el siguiente:

Tengo un datagridview con dos columnas. La columna 1 la he transformado en una Datagridviewcomboboxcolumn y la columna 2 son textbox.

La combobox de la columna 1 automáticamente se llenan con los datos que hay en una tabla de mysql. y los textbox de la columna 2 lo lleno manualmente con datos numéricos.
Mediante un botón inserto los datos del datagridview en una Tabla de mysql.

Los datos del la columna del datagridviewcomboboxcolumn son los encabezados de la tabla FORMULAS de Mysql donde inserto los datos de la columna 2 del datagridview.

Intentaré explicarme mejor:

datos que aparecen al desplegar el datagridviewcomboboxcolumn:

Azul oscuro
Blanco grisáceo
Amarillo plata

Encabezado de la tabla Mysql donde introduzco los datos de la columna 2:

id    Azul oscuro    Blanco grisáceo    Amarillo plata



Los datos los introduzco mediante la función:

    Dim UNO As String

       UNO = CDbl(DataGridView1.Rows(0).Cells(1).Value).ToString()
       
     
 Dim servidor As New MySqlCommand("INSERT INTO Formulas _
( "+DataGridView1.Rows(0).Cells(0).Value.ToString + ") values ('" & UNO & "')", stConexion)



El problema es que me sale un error porque los combobox del datagridview los cargo con palabras separadas, es decir:  Azul oscuro, Blanco grisáceo etc. Al igual que los encabezados de la Tabla FORMULAS, que son el mismo texto.
En cambio si tanto en los encabezados de la tabla como en los combobox , escribo:
Azuloscuro, Blancogrisaceo y Amarilloplata, me los inserta sin ningún problema.

Espero que se me haya entendido.

¿Alguien sabe a que es debido esto?

23
Hola,
gracias por responder. He probado el código pero todo me sale con errores. He probado a introducirlo en un modulo, pero tengo lo mismo. Cuando pongo 'Using' me sale error, debo sustituirlo por 'Imports' y la función 'Foreach' también me la indica como error. Seguro es una pregunta muy tonta, pero ¿este código es para Visual Basic?

24
Hola,
estoy intentando que en un datagridview, las columnas que están completamente vacías (a excepción del nombre del campo) se mantengan ocultas. Tengo un datagridview que está asociado a algunas tablas de una base de datos Access.
Según la tabla que importo desde la base de datos, aunque los nombres y el número de columnas es siempre el mismo, hay veces que hay columnas que están vacías y otras que están llenas. Básicamente lo que se muestra en el datagridview es lo siguiente:

Columna 1   Columna 2   Columna 3   Columna 4
      1                                                      36
                        45                                  45
      2                 37                                105
      4                                                     205

según el ejemplo anterior, lo que estoy intentando sería que en el datagridview aparecieran solamente las Columnas 1, 2 y 4. Mientras que la Columna 3 debería permanecer oculta.
Bueno para ello, he hecho el siguiente código para cada una de las columnas:

   DataGridView11.Columns("Columna1").Visible = False

            Dim ira As Boolean
            Dim i As Integer
            For i = 0 To DataGridView11.Rows.Count - 1
            If IsDBNull(DataGridView11.Rows(i).Cells("Columna1").Value) Then
                    ira = False
                    DataGridView11.Columns("Columna1").Visible = False
                   
                Else
                    ira = True
                    Exit For
                End If
            Next i

            If ira Then

                DataGridView11.Columns("Columna1").Visible = True

            End If


Primero lo que digo es que todas las columnas estén ocultas (DataGridView11.Columns("Columna1").Visible = False)

Después le indico que recorra las filas de esa columna (For Next) y que cuando encuentre un valor, entonces  debe hacer que la columna sea visible (DataGridView11.Columns("Columna1").Visible = True) y que se detenga (Exit For).
Lo que sucede es que no consigo que me salga y no tengo ni idea de que estoy haciendo mal. ¿Alguien sabría que código se debe utilizar para conseguir esto? Gracias.
Saludos,
 





25
Hola Ogramar,
leí el link que me pasaste y pude sacar información para conseguir lo que pretendía. He estado haciendo pruebas para intentar hacer un bucle For next para todas las columnas que tiene mi datagridview,  pero no he podido conseguirlo. Así que lo que he hecho es una comparación para cada una de las ocho columnas que tengo. Queda un poco mal, pero me sirve. A continuación pongo el código que he conseguido.
Saludos y gracias. El tema se pude cerrar.

Código: [Seleccionar]
Private Sub comparar()

        If (DataGridView32.Item("Column1", DataGridView32.Rows(1).Index).Value) > (DataGridView32.Item("Column1", DataGridView32.Rows(0).Index).Value) Or (DataGridView32.Item("Column1", DataGridView32.Rows(1).Index).Value) < (DataGridView32.Item("Column1", DataGridView32.Rows(2).Index).Value) Then

            DataGridView32.Rows(1).Cells(0).Style.ForeColor = Color.Red
        Else
            DataGridView32.Rows(1).Cells(0).Style.ForeColor = Color.Black
        End If


        If (DataGridView32.Item("Column2", DataGridView32.Rows(1).Index).Value) > (DataGridView32.Item("Column2", DataGridView32.Rows(0).Index).Value) Or (DataGridView32.Item("Column2", DataGridView32.Rows(1).Index).Value) < (DataGridView32.Item("Column2", DataGridView32.Rows(2).Index).Value) Then

            DataGridView32.Rows(1).Cells(1).Style.ForeColor = Color.Red
        Else
            DataGridView32.Rows(1).Cells(1).Style.ForeColor = Color.Black
        End If


        If (DataGridView32.Item("Column3", DataGridView32.Rows(1).Index).Value) > (DataGridView32.Item("Column3", DataGridView32.Rows(0).Index).Value) Or (DataGridView32.Item("Column3", DataGridView32.Rows(1).Index).Value) < (DataGridView32.Item("Column3", DataGridView32.Rows(2).Index).Value) Then

            DataGridView32.Rows(1).Cells(2).Style.ForeColor = Color.Red
        Else
            DataGridView32.Rows(1).Cells(2).Style.ForeColor = Color.Black
        End If
        ' DataGridView32.ClearSelection()


        If (DataGridView32.Item("Column4", DataGridView32.Rows(1).Index).Value) > (DataGridView32.Item("Column4", DataGridView32.Rows(0).Index).Value) Or (DataGridView32.Item("Column4", DataGridView32.Rows(1).Index).Value) < (DataGridView32.Item("Column4", DataGridView32.Rows(2).Index).Value) Then

            DataGridView32.Rows(1).Cells(3).Style.ForeColor = Color.Red
        Else
            DataGridView32.Rows(1).Cells(3).Style.ForeColor = Color.Black
        End If



        If (DataGridView32.Item("Column5", DataGridView32.Rows(1).Index).Value) > (DataGridView32.Item("Column5", DataGridView32.Rows(0).Index).Value) Or (DataGridView32.Item("Column5", DataGridView32.Rows(1).Index).Value) < (DataGridView32.Item("Column5", DataGridView32.Rows(2).Index).Value) Then

            DataGridView32.Rows(1).Cells(4).Style.ForeColor = Color.Red
        Else
            DataGridView32.Rows(1).Cells(4).Style.ForeColor = Color.Black
        End If


        If (DataGridView32.Item("Column6", DataGridView32.Rows(1).Index).Value) > (DataGridView32.Item("Column6", DataGridView32.Rows(0).Index).Value) Or (DataGridView32.Item("Column6", DataGridView32.Rows(1).Index).Value) < (DataGridView32.Item("Column6", DataGridView32.Rows(2).Index).Value) Then

            DataGridView32.Rows(1).Cells(5).Style.ForeColor = Color.Red
        Else
            DataGridView32.Rows(1).Cells(5).Style.ForeColor = Color.Black
        End If


        If (DataGridView32.Item("Column7", DataGridView32.Rows(1).Index).Value) > (DataGridView32.Item("Column7", DataGridView32.Rows(0).Index).Value) Or (DataGridView32.Item("Column7", DataGridView32.Rows(1).Index).Value) < (DataGridView32.Item("Column7", DataGridView32.Rows(2).Index).Value) Then

            DataGridView32.Rows(1).Cells(6).Style.ForeColor = Color.Red
        Else
            DataGridView32.Rows(1).Cells(6).Style.ForeColor = Color.Black
        End If


        If (DataGridView32.Item("Column8", DataGridView32.Rows(1).Index).Value) > (DataGridView32.Item("Column8", DataGridView32.Rows(0).Index).Value) Or (DataGridView32.Item("Column8", DataGridView32.Rows(1).Index).Value) < (DataGridView32.Item("Column8", DataGridView32.Rows(2).Index).Value) Then

            DataGridView32.Rows(1).Cells(7).Style.ForeColor = Color.Red
        Else
            DataGridView32.Rows(1).Cells(7).Style.ForeColor = Color.Black
        End If

        If (DataGridView32.Item("Column9", DataGridView32.Rows(1).Index).Value) > (DataGridView32.Item("Column9", DataGridView32.Rows(0).Index).Value) Or (DataGridView32.Item("Column9", DataGridView32.Rows(1).Index).Value) < (DataGridView32.Item("Column9", DataGridView32.Rows(2).Index).Value) Then

            DataGridView32.Rows(1).Cells(8).Style.ForeColor = Color.Red
        Else
            DataGridView32.Rows(1).Cells(8).Style.ForeColor = Color.Black
        End If


        If (DataGridView32.Item("Column10", DataGridView32.Rows(1).Index).Value) > (DataGridView32.Item("Column10", DataGridView32.Rows(0).Index).Value) Or (DataGridView32.Item("Column10", DataGridView32.Rows(1).Index).Value) < (DataGridView32.Item("Column10", DataGridView32.Rows(2).Index).Value) Then

            DataGridView32.Rows(1).Cells(9).Style.ForeColor = Color.Red
        Else
            DataGridView32.Rows(1).Cells(9).Style.ForeColor = Color.Black
        End If

    End Sub

26
Hola,
sigo haciendo una aplicación con VB 2010 y tengo la siguiente duda que no se ni como empezar. Bueno, mi problema es el siguiente:
Tengo un datagridview con la fila de encabezado y tres filas más tal como muestro a continuación:

VALOR1   VALOR2    VALOR3    VALOR4    VALOR5
     2            4              5.5          0.6           7.8     
    1.2          2.3           8.6          1.2           5.3
    0.5          3.8            1.2          0.5          2.3


Las tres filas contienen números con decimales. Lo que intento es que a través de un button se puede conseguir los siguiente:
Si en la columna VALOR1, el número de la fila 2 (en este caso 1.2) sea mayor que el valor de la fila 1 (2) o menor que el valor de la fila 3 (0.5),  el número 1.2 aparezca de color rojo. y si está dentro del intervalo, se mantenga de color negro. Y hacer esto mismo con los valores de las cinco columnas.
Espero que alguien sepa como hacerlo o quizás darme alguna idea de como debería hacerse. Gracias y saludos.

27
Mi idea es que lo puedan utilizar más personas, así que pasaré los datos del libro Excel a una base de datos.
Saludos,

28
Hola Ogramar,
¡ya filtra bien!. He probado el último código que me has enviado pero volvía a salir error en bs.Filter = "CLASE = ComboBox1.SelectedValue". Pero al final lo he dejado igual que antes, sólo que he cambiado el código que hay dentro del
Private sub commadbuton1_selectedIndexChanged. Abajo pongo como ha quedado el código finalmente.

Muchas gracias por todo. A mí sola no me abría salido.
Sólo me gustaría hacerte una pregunta antes de dar el tema por cerrado.
¿Sería mejor tener todos los datos en una base de datos de Access o MySql en vez de en un Libro Excel? Lo digo por si a la hora de programar en vb 2010 sería más fácil.
Saludos,

Código: [Seleccionar]
Imports System.Data
Imports System.Data.OleDb

Public Class Form1

    Private Property stConexion As String

    Dim dv As New DataView
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            Dim stConexion As String = ("Provider=Microsoft.ACE.OLEDB.12.0; Data Source= 'C:\Users\rmontañes\Desktop\Prueba.xlsx';  Extended Properties=""Excel 12.0;Xml;HDR=YES;IMEX=2"";") 'este es el codigo que funciona para office 2007 y 2010
            Dim cnConex As New OleDbConnection(stConexion)
            Dim Cmd As New OleDbCommand("Select * From [Hoja1$]", cnConex)
            Dim Ds As New DataSet
            Dim Da As New OleDbDataAdapter

            Dim dt As New DataTable


            Dim bs As BindingSource = BindingSource1

            cnConex.Open()
            Cmd.Connection = cnConex
            Da.SelectCommand = Cmd
            Da.Fill(Ds)
            dv.Table = Ds.Tables(0)
            Me.DataGridView1.Columns.Clear()
            Me.DataGridView1.DataSource = dv
            Me.DataGridView1.Columns(1).HeaderText = "CLASE"
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")


        End Try
    End Sub


    Private dt As DataTable
    Dim SQL As String
    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

        Try

            SQL = "CLASE like '%" + ComboBox1.Text.Trim + "%'"

            dv.RowFilter = SQL

            DataGridView1.DataSource = dv

            DataGridView1.Update()

        Catch EX As Exception

            MsgBox(EX.Message, 48)

        End Try
    End Sub
End Class



29
No, lo siento. Se queda igual.
¿el problema podría ser que estoy utilizando Excel en vez de una base de datos?

30
Hola,
he eliminado uno de los dv. Ahora no sale aparece ningún error. Cuando ejecuto el formulario, aparece el dataviewgrid con la tabla Excel y cuando selecciono un valor del combobox, ya no indica ningún error en el código, pero lo que sucede es que no filtra la tabla. Es decir, selecciono los valores del combobox pero la tabla sigue exactamente igual.
¿Podría ser un problema de las propiedades del dataviewgrid? ¿Hay que relacionar el dataviewgried con el bindersource de algún modo? Porque estoy probando a seleccionar en la propiedad DataSource del dataviewgrid, el nombre de Bindersource1, pero así tampoco consigo nada.

31
Hola,
he copiado el código, pero ahora aparece el siguiente mensaje de error:
'Referencia a objeto no establecida como instancia de un objeto'
Aparece el formulario, pero el datagridview, no se carga con los datos de la hoja Excel.


32
Hola,
cuando elimino el código private sub combobox1,  no me sale ningún error.

33
Hola,
me sigue saliendo error en la misma línea, pero esta vez aparece:
"No sé controló SystemErrorException"

¿Qué quiere decir esto?
Saludos,

34
Hola,
el proyecto lo he hecho con Visual Basic 2010 Express.
Lo que intento es que al seleccionar una opción del combobox (Mate/Opaca/Transparente) me filtre los datos en el datagridview y únicamente me aparezcan las filas que contiene la palabra seleccionada en el combobox.
El error me lo marca en la línea
Dim dv as Dataview=dt.Default.view
y el mensaje de error que aparece es "No se controló NullReferenceException",

Tengo una hoja Excel con muchos datos y lo que estoy intentado  es poder conseguir es que desde dos ordenadores distintos conectados en red, se puedan ver los datos de la hoja Excel mediante un programa hecho con Visual Basic. Mi duda es si ¿para hacer esto puedo seguir almacenando mis datos en la hoja Excel, o quizás sería mejor almacenarlos en Acces or SQL? O quizás lo estoy haciendo todo mal?
Saludos y gracias por la ayuda.
Vuelvo a adjuntar los datos. He puesto la hoja Excel que estoy utilizando para hacer las pruebas.

35
Hola,
he estado buscando información de como filtrar en un datagridview mediante un combobox. Pero no consigo encontrar lo que busco. Mi problema es el siguiente:
los datos del datagridview los importo desde un hoja Excel.
en el Form tengo un datagridview con mis datos , un combobox y un BindingSource1.
Mi idea es que según lo que escriba dentro del combobox, se filtre por los datos que hay en la columna 2 del datagridview. He estado buscando que en las propiedades del dataviewgrid, en el datasource debo seleccionar BindigSource1. Pero cuando hago esto me aparece el error:

el índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección. Nombre del parámetro:index

y entonces no se carga el datagridview con los datos de la hoja Excel.

Adjunto mi base de datos por si alguien pudiera darme algún consejo. Gracias.

36
Hola,
gracias por responder y por toda la información. Ahora que sé que podré modificar los datos, voy a probar a pasarlos desde Excel. Saludos.

37
Hola de nuevo,
estoy intentando importar datos de un varias hojas Excel a un datagridview en visual basic 2010. Mi duda es la siguiente, ¿en el caso de que consiga hacerlo, después podré trabajar con los datos? es decir, ¿podré hacer cálculos con ellos, modificar, etc? ¿o el datagridview, sólo sirve para visualizarlos? Gracias.

38
Hola,
ahora funciona bien. Muchas gracias.

39
Hola,
estoy siguiendo el Curso de Programación en Visual Basic Nivel I de vuestra web y me he descargado el Visual Basic 2010 Express desde el enlace que dais en el curso.
El problema que tengo es que a la hora de copiar los ejemplos que dais en el curso en la hoja del código de mi formulario, las expresiones de Dim y Private Sub me aparecen subrayadas de azul y además me aparece el error "La instrucción no es válida en un espacio de nombres". ¿Sabéis como podría solucionar este error? Acabo de empezar y no tengo ni idea de como solucionarlo. Gracias.

Páginas: 1 [2]

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".