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
1
Aprender a programar desde cero / Aplicación en windows 11
« en: 07 de Julio 2024, 13:50 »
Buenos días,
tengo una aplicación de escritorio hecha en Visual Studio 2019. Funcionaba en Windows 10 sin ningún problema, pero a la hora de instalarla en un ordenador con Windows 11, aparece la ventana de SplashScreen y directamente se cierra.
La aplicación está conectada a una base de datos de MySql.
Por favor, ¿alguien ha tenido el mismo problema?¿dónde puede estar el error? ¿En la aplicación o en el ordenador donde se ha instalado Windows 11?

Gracias.

2
Hola, tengo un problema para visualizar archivos de texto dentro de un formulario.

Dentro de un formulario tengo instalado un botón, un listview y un control adobe reader axacropdf. De este modo, al pulsar el botón,  el listview se carga con los archivos pdf que tengo en una carpeta, y al ir seleccionando cada uno de esos archivos en el listview, puedo visualizar el contenido de cada pdf en el control axacropdf.

El problema que tengo es que me gustaría poder hacer lo mismo pero con archivos de texto con extensión .doc (Microsoft Office Word). En este caso ¿que control habría que instalar en el formulario para poder visualizar este tipo de archivos?

Trabajo con el Visual studio 2010 express y con Visual Basic.

Gracias y saludos.

3
Hola,
he conseguido solucionar el problema. He conectado el datagridview a la table de la base de datos MySQL sin utilizar bindingsource. De este modo he podido cargar el datagridview y, además, insertar filas, que es lo que estaba buscando.
A continuación escribo el código para enlazar el datagridview a la table MySQL
Código: [Seleccionar]
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

        Dim sql As String
        Dim cm As MySqlCommand
        Dim da As MySqlDataAdapter
        Dim ds As DataSet


        Dim ms1 As New MySqlConnection("server= localhost; user id = root; password =; database = PRIMERA")

        ms1.Open()

                sql = "SELECT * FROM Table1"
                cm = New MySqlCommand()
                cm.CommandText = sql
                cm.CommandType = CommandType.Text
                cm.Connection = ms1
                da = New MySqlDataAdapter(cm)
                ds = New DataSet()
                da.Fill(ds)
           Datagridview1.DataSource = ds.Tables(0)

ms1.close()
End sub


Y a continuación, como insertar una fila en el datagridview y rellenar la fila con los valores de la table MySQL TABLADATOS.

 
Código: [Seleccionar]
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

  Dim ms1 As New MySqlConnection("server= localhost; user id = root; password =; database = PRIMERA")

       ms1.Open()

       
        Dim dt As DataTable = DirectCast(datagridview1.DataSource, DataTable)


        Dim drNewRow As DataRow = dt.NewRow()


        Dim i As Integer
        i = datagridview1.CurrentRow.Index
           
dt.Rows.InsertAt(drNewRow, i + 1)

        Dim comando As New MySqlCommand("Select * from TABLADATOS where referencia = '" &  Datagridview1.CurrentRow.cells(1).value & "'", ms1)

        Dim da As MySqlDataReader
        da = comando.ExecuteReader()

If da.Read Then


                drNewRow("COLUMNA1") = Convert.ToString(da("1"))
                drNewRow("COLUMNA2") = Convert.ToString(da("2"))
                drNewRow("COLUMNA3") = Convert.ToString(da("3"))
                drNewRow("COLUMNA4") = Convert.ToString(da("4"))

End if
End Sub

Saludos.

4
Hola a tod@s,

Estoy haciendo una aplicación con Visual Basic 2010 Express. En dicha aplicación tengo un formulario con un datagridview, un textbox y un botón. A parte en un base de datos MySQL tengo varias tablas (TABLA1, TABLA2, TABLA3, TABLA4, TABLA5, etc.)
Con el evento botón_click enlazo el datagridview con la tabla de la base de datos MySQL que tiene el nombre que me aparece en el textbox (el cual puedo ir cambiando mediante otro evento). Es decir, según el nombre de la tabla que aparece en el textbox y accionando el botón consigo que el datagridview1 se enlace con los datos de la tabla que me interesa.

Para el caso de la TABLA1, esto lo consigo mediante el siguiente código.


Código: [Seleccionar]
Private mysqldataadapterTABLA1 As MySqlDataAdapter
Private WithEvents xsTABLA1 As New BindingSource

Dim ms As New MySqlConnection("server= localhost; user id = root; password =; database = PRIMERA")

Private Sub cargar_registrosTABLA1(ByVal sql As String, ByVal dv As DataGridView)

        Try
            MysqldataadapterTABLA1 = New MySqlDataAdapter(sql, ms)

            Dim mysqlcommandbuilder As New MySqlCommandBuilder(mysqldataadapterTABLA1)
            Dim tablaTABLA1 As New DataTable()

            MysqldataadapterTABLA1.Fill(tablaTABLA1)
            XsTABLA1.DataSource = tablaTABLA1

            bEdit = False
        Catch ex As Exception
            MsgBox(ex.Message.ToString)
        End Try

    End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

If Textbox1.text = “Tabla 1” Then
                cargar_registrosTABLA1("select * from TABLA1", datagridview1)
                datagridview1.DataSource = xsTABLA1
End if

End sub


Seguidamente, mediante otro botón, lo que hago es insertar una fila en el datagridview1 (a continuación de la fila que tengo seleccionada) y en la fila que he creado nueva introduzco datos de un tabla llamada TABLADATOS (con las mimas columnas que la TABLA1).

Esto lo hago con el siguiente código.

Código: [Seleccionar]
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim dt As DataTable = DirectCast(xs.TABLA1, DataTable)

Dim row As DataRow = dt.NewRow

Dim con As New MySqlConnection("server= localhost; user id = root; password =; database = PRIMERA")

Dim comando As New MySqlCommand("Select * from TABLADATOS where referencia = '" & DataGridView1.CurrentRow.Cells(1).Value & "'", con)

            Dim da As MySqlDataReader

            con.Open()

            da = comando.ExecuteReader()

            da.Read()

            With row
                .Item("COLUMNA1") = da.Item("1")
                .Item("COLUMNA2") = da.Item("2")
                .Item("COLUMNA5") = da.Item("3")
                .Item("COLUMNA6") = da.Item("4")

            End With

            Dim pos As Int32 = xs2.Position


                dt.Rows.InsertAt(row, pos + 1)
                con.Close()

End Sub



El problema que no consigo solucionar es el siguiente:

Según con que tabla tengo cargado el datagridview1, cuando necesito añadir la fila nueva, tengo que escribir el segundo código (PRIVATE SUB BUTTON2_CLICK) tantas veces como tablas tengo, cambiado el valor de la propiedad BINDINGSOURCE (XS.TABLA1) por el que corresponde a cada tabla.

Mi idea es que en un textbox2, aparezca el nombre del bindingsource correspondiente al nombre de la tabla que aparece en textbox1. Esto lo he conseguido,  pero a la hora de hacer la siguiente sustitución:

Dim dt As DataTable = DirectCast(textbox2.text, DataTable)
Dim pos As Int32 = textbox2.text.Position


me sale el error "Datasource no es miembro de string".


¿Alguien ha tenido el mismo problema alguna vez? ¿Podrían ayudarme a solucionarlo?
Gracias y saludos,

5
Hola de nuevo,
gracias por la función. La probé y transforma el texto que pongo en el richtextbox1 en código html en el richtextbox2.
Ahora lo que he estoy intentando y no hay forma de conseguir es pasar el texto html del richtextbox2 a un documento pdf.
He buscando por la web formas de hacerlo pero todas las que he probado no han funcionado ya que siempre me salta un error y no se genera el documento.

Código: [Seleccionar]
  Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click


        RichTextBox2.Text = sRTF_To_HTML(RichTextBox1.Text)

        Dim htmlReport As String = RichTextBox2.ToString

        'Dim filename22 As String = Path.Combine(Server.MapPath("~/PDF"), "test.pdf")
        Dim filename22 As String = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + ("\Report1.pdf")

        'Convert to pdf
        Dim document As New Document(iTextSharp.text.PageSize.A4.Rotate(), 1, 1, 0, 0)

        Dim writer As PdfWriter = PdfWriter.GetInstance(document, New FileStream(filename22, FileMode.Create))


        document.Open()
        ' document.NewPage()
        Dim worker As XMLWorkerHelper = XMLWorkerHelper.GetInstance
        worker.ParseXHtml(writer, document, New StringReader(htmlReport))


        document.Close()

    End Sub



En el form hay dos Richtextbox y un Button. En el Richtextbox1 escribo un texto, cuando pulso el Button, gracias a la función sRTF_To_HTML el texto del Richtextbox1 se transforma en formato HTML en el Richtextbox2 pero no hay forma de conseguir que se transforme en .pdf. Me salta el siguiente error "El documento no tiene páginas".
Si añado la línea Document.add(worker) me salta el error "No se puede convertir un objeto de tipo 'iTextSharp.tool.xml.XMLWorkerHelper' al tipo 'iTextSharp.text.IElement'".
Alguien sabría alguna solución a este problema? Ya no tengo ni idea de como poder solucionarlo.
Gracias y saludos.

6
Hola,
Lo siento, ya es la segunda vez que me pasa. Trabajo con lenguaje visual basic y con Visual Basic Studio 2010 express.
Gracias por la alternativa que me has pasado, pero ya lo había intentado y no he conseguido que funcione.
En cuanto a la segunda alternativa que me has dado, ¿podrías especificar un poco más como se podría hacer? como se puede pasar  de rtf a HTML en Visual Basic? Gracias.
Saludos.

7
Hola a tod@s, estoy intentado hacer un informe en .pdf con un texto que introduzco  a través de un Richtextbox usando la biblioteca iTextSharp. El problema es que no consigo que el texto pase a la hoja .pdf con el mismo formato (fuente, tamaño, negrita etc.) con el que lo he escrito dentro del Richtextbox.

Por el momento el código que tengo es el siguiente:


Dim document As New Document(PageSize.A4, 65, 65, 200, 80)

Dim filename22 As String = Environment.GetFolderPath__(Environment.SpecialFolder.DesktopDirectory) + "\Report.pdf"

 Dim file As New FileStream(filename22, FileMode.Create, FileAccess.Write,_ _FileShare.ReadWrite)


Dim fuente As BaseFont = BaseFont.CreateFont(BaseFont.TIMES_ROMAN,_ _BaseFont.CP1252, False)

Dim writer As PdfWriter = PdfWriter.GetInstance(document, file)

document.Open()

document.NewPage()


 document.Add(New iTextSharp.text.Paragraph(RichTextBox1.Text))

document.Close()

Process.Start(filename22)

writer.Close()


¿Alguien sabría como conseguir que copie el texto con el mismo formato? Además también necesito que lo inserte en el documento .pdf con la alineación justificada, tal y como se hace en los documentos de Word. Esto lo he estado buscando en la web, pero hasta el momento no consigo que funcione nada de lo que he encontrado.

Gracias y saludos.

Lo siento pero he escribo el código de este modo, porque no consigo que me funcione la opción de Insertar código.



8
Hola Alex, al final he podido encontrar una función que pasar los datos de la columna de la hoja excel al datagridview. No consigo que funciona la función insertar código, así que lo escribo a continuación tal cual:

Código: [Seleccionar]
'Primero en el formulario tengo un botón desde donde llama la función que inserta la columna excel

 Private Sub Button70_Click(sender As System.Object, e As System.EventArgs) Handle Button70.Click
     
        Dim col As New DataGridViewTextBoxColumn
        DataGridView42.Columns.Add(col)
       ImportExcellToDataGridView("\\server\Docs\Publicos\coeficiente\Viscosidad.xlsx",   DataGridView42)

    End Sub

'A continuación pongo la función ImportExceltoDataGridview, la cual pasa los datos de la columna A de la  hoja 2 de libro excel al datagridview.


    Public Function ImportExcellToDataGridView(ByRef path As String, ByVal Datagrid As DataGridView)

        Try
            Dim stConexion As String = ("Provider=Microsoft.ACE.OLEDB.12.0;" & ("Data Source=" & (path & ";Extended Properties=""Excel 12.0;Xml;HDR=NO;IMEX=2"";")))
            Dim cnConex As New OleDb.OleDbConnection(stConexion)
            Dim Cmd As New OleDb.OleDbCommand("Select * From [Hoja2$]")
            Dim Ds As New DataSet
            Dim Da As New OleDb.OleDbDataAdapter
            Dim Dt As New DataTable
            cnConex.Open()
            Cmd.Connection = cnConex
            Da.SelectCommand = Cmd
            Da.Fill(Ds)
            Dt = Ds.Tables(0)
            Datagrid.Columns.Clear()
            Datagrid.DataSource = Dt
            cnConex.Close()

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
        End Try
        Return True
End Function


Espero pueda servirle a alguien. Gracias y saludos.

9
Hola,
sigo teniendo un problema con este código.
Si en lugar  de 60 filas, añado 1250 filas (que son las que realmente necesito), la aplicación se bloquea.

DataGridView42.Rows.Add(1250)


For j = 0 To DataGridView42.RowCount - 1
            For j = 1 To 1250
                DataGridView42.Rows(j).Cells(0).Value = CDbl(oSheet1.Range("a" & j).Value)
            Next
        Next



Habría alguna forma de añadir tantas filas sin que esto ocurra? Gracias.
Saludos.

10
Hola de nuevo,
he conseguido encontrar el error. Había que poner
For a = 1 to a +1
Ahora me copia la columna completamente en el datagridview.

Código: [Seleccionar]
  Dim a As Integer

        For j = 0 To DataGridView42.RowCount - 1
            For a = 1 To a + 1
                DataGridView42.Rows(j).Cells(0).Value = CDbl(oSheet1.Range("A" & a).Value)
            Next a
        Next j

Saludos.

11
Hola de nuevo.  Estoy intentando hacer un bucle para pasar los datos de una columna en Excel a una columna de un datagridview en visual basic 2010 express.
 
El código que tengo es el siguiente:
Código: [Seleccionar]
Dim oExcel As Object
        Dim oBook As Object
         Dim oSheet1 As Object
       
        'Iniciar un nuevo libro en Excel
        oExcel = CreateObject("Excel.Application")
        oBook = oExcel.Workbooks.Open("C:\Users\Packard Bell\Desktop\Viscosidad.xlsx")
        oSheet1 = oBook.Worksheets("Hoja2")
 Dim stConexion1 As New MySqlConnection("server= localhost; user id = root; password =; database = basededatos2") 'este es el codigo que funciona para office 2007 y 2010

 Dim col  As New DataGridViewTextBoxColumn
 col.Name = "DATOS"
     

        DataGridView42.Columns.Add(col)
        DataGridView42.Rows.Add(60)



        Dim a As Integer

        For j = 0 To DataGridView42.RowCount - 1
            For j = 1 To 60
                DataGridView42.Rows(j).Cells(0).Value = CDbl(oSheet1.Range("a" & j).Value)
            Next
        Next

     
        stConexion1.Open()

El problema es que no funciona. Sólo consigo que todas las celdas de la columna del datagridview se complete con 0. Creo que el fallo esta en que faltan poner comillas en la expresión:
oSheet1.Range("a" & j).Value

pero todas las pruebas que he hecho no han salido, por lo que ya no se si es ahí donde está el error. Tampoco me sale ningún mensaje de error, únicamente se completa la columna con 0.
¿Alguien sabe donde podría encontrarse el error? Gracias.
Saludos,


12
Hola Alex,
es cierto, debí explicarlo con más detalle.
He seguido buscando y he conseguido, más o menos, obtener un gráfico de dispersión con lenguaje visual basic. Estoy haciendo la aplicación con Visual Basic 2010 Express. Tengo un Form donde he puesto un control Combobox, un control Button y un control Chart.  En una base de datos MySQl tengo una tabla con nombre 'grafico4' donde he puesto cinco columnas. Los nombres de cuatro de las columnas, son los elementos que he introducido en el Combobox. La idea es que al seleccionar un elemento del combobox y darle al control Button, en el grafico Chart1 me represente en el eje X la columna 1 de la tabla 'grafico4' y en el eje Y la columna de la tabla 'grafico4' que coincide con el elemento seleccionado en el Combobox. A continuación pongo el código:

Código: [Seleccionar]
Private Sub Button67_Click(sender As System.Object, e As System.EventArgs) Handles Button67.Click

Chart1.Series.Add(ComboBox281.Text)
        Chart1.Titles.Clear()   
        Chart1.Series(ComboBox281.Text).ChartType = SeriesChartType.Line
        Dim stConexion1 As New MySqlConnection("server= localhost; user id = root; password =; database = reyes") 'este es el codigo que funciona para office 2007 y 2010
        Dim READER As MySqlDataReader
        stConexion1.Open()
        Dim query As String
        query = "Select * From grafico4"
        Dim Command As New MySqlCommand(query, stConexion1)
        READER = Command.ExecuteReader
        While READER.Read
            Chart1.Series(ComboBox281.Text).Points.AddXY(READER.GetString(ComboBox281.Text), READER.GetString(ComboBox281.Text & "Log"))

        End While
        Chart1.ChartAreas(0).AxisX.Title = "Temperatura (ºC)"
       Chart1.ChartAreas(0).AxisX.TitleFont = New System.Drawing.Font("Segoe UI", 12, FontStyle.Bold)
       Chart1.ChartAreas(0).AxisX.TitleForeColor = Color.Maroon
        Chart1.ChartAreas(0).AxisX.TitleAlignment = StringAlignment.Center
        Chart1.ChartAreas(0).AxisX.IsMarginVisible = False
        Chart1.ChartAreas(0).AxisY.Title = "Fusión"
        Chart1.ChartAreas(0).AxisY.TitleFont = New System.Drawing.Font("Segoe UI", 12, FontStyle.Bold)

       Chart1.ChartAreas(0).AxisY.TitleForeColor = Color.Maroon
        Chart1.ChartAreas(0).AxisY.TitleAlignment = StringAlignment.Center
        Chart1.ChartAreas(0).AxisY.IsMarginVisible = False

        Chart1.Titles.Add(0)
        Chart1.Titles(0).Text = "Curva Fusión - Temperatura"
    Chart1.Titles(0).Font = New System.Drawing.Font("Segoe UI", 15, FontStyle.Bold)
        Chart1.Titles(0).ForeColor = Color.Maroon

        stConexion1.Close()

13
Hola a tod@s.

Estoy intentando hacer un gráfico con los datos que tengo en una tabla en MySQL.
La tabla consta de dos columnas X e Y.

El problema es que no consigo hacer un gráfico de dispersión con los datos. Sí que he conseguido hacer gráficos lineales, de barras etc pero no el que necesito. He intentado descargarme el MSChart, pero la opción MSChart.chartType = vtchCharttype2dxy no la reconoce.

A alguien a tenido el mismo problema y ha conseguido encontrar una solución? Gracias.

14
Hola a tod@s, he terminado de realizar una aplicación con lenguaje visual basic que conecta con una base de datos MySQL. La aplicación la he realizado con Visual Studio Express 2010, que me descargué gratuitamente de la página de visual studio. Me gustaría poder ampliar y mejorar la aplicación y poder realizar otras, por lo que he pensado en adquirir algún paquete de pago de visual studio. ¿Alguien podría aconsejarme cuál adquirir? He entrado en la página de microsoft pero no consigo decidirme por ninguno.

Gracias y saludos.




15
Gracias. Intentaré comprobar lo que me has dicho.

16
Hola, estoy haciendo una nueva aplicación con visual studio. Comencé utilizando las herramientas gratuitas que ofrece Visual Studio 2010 Express, pero hace poco me descargue las herramientas de Devcomponents Dotnetbar. Lo que sucede es que si en el Form sólo utilizo las herramientas de Visual Studio 2010 Express no tengo problema, pero si utilizo en el Form herramientas de Visual Studio 2010 Express y herramientas de DevComponents Dotnetbar, entonces la aplicación no me funciona poruqe todas las instrucciones que he puesto en el Form1_load es como si no hiciera ni caso.
Mi pregunta es si ¿es posible en un mismo Formulario utilizar herramientas de distintos paquetes? o por el contrario ¿sólo se puede utilizar herramientas de DevComponents o herramientas de Visual Studio?

Espero que haberme podido explicar bien y  que alguien pueda aclararme mis dudas.

Saludos.

17
Hola de nuevo,
he conseguido encontrar el fallo. Pongo a continuación el código por si a alguien le pudiera servir.

Código: [Seleccionar]
DataGridView31.ColumnCount = 2
        DataGridView31.RowCount = 81

        Me.DataGridView31.Columns(0).HeaderText = "NOMBRE"
        Me.DataGridView31.Columns(1).HeaderText = "CÓDIGO"

        If (DataGridView31.Rows.Count > 0) Then

            For i = 0 To DataGridView25.ColumnCount - 1
                'If DataGridView25.Columns(i).Visible = True Then
                Dim j As Integer


                For j = i To DataGridView25.ColumnCount - 1
                    DataGridView31.Rows(j).Cells(0).Value = DataGridView25.Columns(i).HeaderText
                Next


                For j = i To DataGridView25.ColumnCount - 1
                    DataGridView31.Rows(j).Cells(1).Value = DataGridView25.Rows(0).Cells(i).Value
                Next
            Next

        End If

18
Hola, estoy intentando pasar los datos de un datagridview a otro datagridview, de forma que los HeaderText del primer datagridview se me copian en las filas de la primera columna del segundo datagridview (sería algo así como transponer filas por columnas en los datagridviews)

Como el primer datagridview tiene muchas columnas, me gustaría poder hacerlo mediante bucles: el datagridview25 es el que tiene los 79 Headertext que hay que poner en las filas de la primera columna del datagridview31


Código: [Seleccionar]
For i = 0 To DataGridView25.ColumnCount - 1

            Dim j As Integer

            For j = 0 To DataGridView31.RowCount - 1
                DataGridView31.Rows(j + 1).Cells(0).Value = DataGridView25.Columns(i).HeaderText
            Next


        Next

Pero cuando aplico el código me sale 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


Básicamente lo que necesito conseguir es lo siguiente

datagridview25

id    nombre      código       color
0      Luis             95           azul
1      José            102          verde
2      Eva             200          rojo



datagridview31

nombre     Luis
código       95
color          azul

¿Alguien sabría que hay incorrecto en el bucle? Gracias.

19
Hola,
en primer lugar, gracias por responder. Apliqué el código que me sugeriste y después añadí código para que hiciera las sumas. Al final me quedo de la siguiente forma:

Código: [Seleccionar]
If DataGridView23.CurrentCell.ColumnIndex = 21 Or DataGridView23.CurrentCell.ColumnIndex = 22 Then

                DataGridView23.CurrentRow.Cells(21).Value = DataGridView23.CurrentRow.Cells(21).Value.ToString.Replace(".", ",")
                DataGridView23.CurrentRow.Cells(22).Value = DataGridView23.CurrentRow.Cells(22).Value.ToString.Replace(".", ",")

                DataGridView23.CurrentRow.Cells(5).Value = DataGridView23.CurrentRow.Cells(5).Value.ToString.Replace(".", ",")
                DataGridView23.CurrentRow.Cells(6).Value = DataGridView23.CurrentRow.Cells(6).Value.ToString.Replace(".", ",")
                DataGridView23.CurrentRow.Cells(7).Value = DataGridView23.CurrentRow.Cells(7).Value.ToString.Replace(".", ",")
                DataGridView23.CurrentRow.Cells(8).Value = DataGridView23.CurrentRow.Cells(8).Value.ToString.Replace(".", ",")
                DataGridView23.CurrentRow.Cells(9).Value = DataGridView23.CurrentRow.Cells(9).Value.ToString.Replace(".", ",")
                DataGridView23.CurrentRow.Cells(10).Value = DataGridView23.CurrentRow.Cells(10).Value.ToString.Replace(".", ",")
                DataGridView23.CurrentRow.Cells(11).Value = DataGridView23.CurrentRow.Cells(11).Value.ToString.Replace(".", ",")
                DataGridView23.CurrentRow.Cells(12).Value = DataGridView23.CurrentRow.Cells(12).Value.ToString.Replace(".", ",")
                DataGridView23.CurrentRow.Cells(13).Value = DataGridView23.CurrentRow.Cells(13).Value.ToString.Replace(".", ",")
                DataGridView23.CurrentRow.Cells(14).Value = DataGridView23.CurrentRow.Cells(14).Value.ToString.Replace(".", ",")
                DataGridView23.CurrentRow.Cells(15).Value = DataGridView23.CurrentRow.Cells(15).Value.ToString.Replace(".", ",")
                DataGridView23.CurrentRow.Cells(16).Value = DataGridView23.CurrentRow.Cells(16).Value.ToString.Replace(".", ",")
                DataGridView23.CurrentRow.Cells(17).Value = DataGridView23.CurrentRow.Cells(17).Value.ToString.Replace(".", ",")
                DataGridView23.CurrentRow.Cells(18).Value = DataGridView23.CurrentRow.Cells(18).Value.ToString.Replace(".", ",")
                DataGridView23.CurrentRow.Cells(19).Value = DataGridView23.CurrentRow.Cells(19).Value.ToString.Replace(".", ",")
                DataGridView23.CurrentRow.Cells(20).Value = DataGridView23.CurrentRow.Cells(20).Value.ToString.Replace(".", ",")




                If String.IsNullOrEmpty(DataGridView23.CurrentRow.Cells(21).Value) And Not String.IsNullOrEmpty(DataGridView23.CurrentRow.Cells(22).Value) Then
                    Dim total As Double
                    total = CDbl(DataGridView23.CurrentRow.Cells(5).Value) + CDbl(DataGridView23.CurrentRow.Cells(6).Value) + CDbl(DataGridView23.CurrentRow.Cells(7).Value) + CDbl(DataGridView23.CurrentRow.Cells(8).Value) + CDbl(DataGridView23.CurrentRow.Cells(9).Value) + CDbl(DataGridView23.CurrentRow.Cells(10).Value) + CDbl(DataGridView23.CurrentRow.Cells(11).Value) + CDbl(DataGridView23.CurrentRow.Cells(12).Value) + CDbl(DataGridView23.CurrentRow.Cells(13).Value) + CDbl(DataGridView23.CurrentRow.Cells(14).Value) + CDbl(DataGridView23.CurrentRow.Cells(15).Value) + CDbl(DataGridView23.CurrentRow.Cells(16).Value) + CDbl(DataGridView23.CurrentRow.Cells(17).Value) + CDbl(DataGridView23.CurrentRow.Cells(18).Value) + CDbl(DataGridView23.CurrentRow.Cells(19).Value) + CDbl(DataGridView23.CurrentRow.Cells(20).Value) + CDbl(DataGridView23.CurrentRow.Cells(22).Value)

                    DataGridView23.CurrentRow.Cells(23).Value = total.ToString("n2")

                End If



                If String.IsNullOrEmpty(DataGridView23.CurrentRow.Cells(22).Value) And Not String.IsNullOrEmpty(DataGridView23.CurrentRow.Cells(21).Value) Then
                    Dim total As Double
                    total = CDbl(DataGridView23.CurrentRow.Cells(5).Value) + CDbl(DataGridView23.CurrentRow.Cells(6).Value) + CDbl(DataGridView23.CurrentRow.Cells(7).Value) + CDbl(DataGridView23.CurrentRow.Cells(8).Value) + CDbl(DataGridView23.CurrentRow.Cells(9).Value) + CDbl(DataGridView23.CurrentRow.Cells(10).Value) + CDbl(DataGridView23.CurrentRow.Cells(11).Value) + CDbl(DataGridView23.CurrentRow.Cells(12).Value) + CDbl(DataGridView23.CurrentRow.Cells(13).Value) + CDbl(DataGridView23.CurrentRow.Cells(14).Value) + CDbl(DataGridView23.CurrentRow.Cells(15).Value) + CDbl(DataGridView23.CurrentRow.Cells(16).Value) + CDbl(DataGridView23.CurrentRow.Cells(17).Value) + CDbl(DataGridView23.CurrentRow.Cells(18).Value) + CDbl(DataGridView23.CurrentRow.Cells(19).Value) + CDbl(DataGridView23.CurrentRow.Cells(20).Value) + CDbl(DataGridView23.CurrentRow.Cells(21).Value)

                    DataGridView23.CurrentRow.Cells(23).Value = total.ToString("n2")

                End If


                If Not String.IsNullOrEmpty(DataGridView23.CurrentRow.Cells(22).Value) And Not String.IsNullOrEmpty(DataGridView23.CurrentRow.Cells(21).Value) Then
                    Dim total As Double
                    total = CDbl(DataGridView23.CurrentRow.Cells(5).Value) + CDbl(DataGridView23.CurrentRow.Cells(6).Value) + CDbl(DataGridView23.CurrentRow.Cells(7).Value) + CDbl(DataGridView23.CurrentRow.Cells(8).Value) + CDbl(DataGridView23.CurrentRow.Cells(9).Value) + CDbl(DataGridView23.CurrentRow.Cells(10).Value) + CDbl(DataGridView23.CurrentRow.Cells(11).Value) + CDbl(DataGridView23.CurrentRow.Cells(12).Value) + CDbl(DataGridView23.CurrentRow.Cells(13).Value) + CDbl(DataGridView23.CurrentRow.Cells(14).Value) + CDbl(DataGridView23.CurrentRow.Cells(15).Value) + CDbl(DataGridView23.CurrentRow.Cells(16).Value) + CDbl(DataGridView23.CurrentRow.Cells(17).Value) + CDbl(DataGridView23.CurrentRow.Cells(18).Value) + CDbl(DataGridView23.CurrentRow.Cells(19).Value) + CDbl(DataGridView23.CurrentRow.Cells(20).Value) + CDbl(DataGridView23.CurrentRow.Cells(21).Value) + CDbl(DataGridView23.CurrentRow.Cells(22).Value)

                    DataGridView23.CurrentRow.Cells(23).Value = total.ToString("n2")

                End If

            End If
        End If


Es algo más largo que el ejemplo que puse al principio, porque en realidad el datagridview tenía más de dos columnas.
El código básicamente hace esto:

- Primero me cambia los puntos por comas, por que es la única forma de que sume los valores.
- Después según si las dos celdas que hay que modificar son valores null o no, sumas las celdas.
Por el momento me funciona bien, pero no sé que hacer para evitar los problemas que dan las celdas con datos null. Por ejemplo en el caso de que alguno de los valores de las celdas 5 hasta 14 fuera null, entonces ya no me funcionaría.

20
Hola,
Tengo que sumar una fila en un datagridview similar a la siguiente:

Columna 1  columna 2    Columna 3   Columna 4      Columna 5
      As.            Re.                1,2             0,15
      Po.            Fu.                0,12
      Po.            Re.                                  4,5
      As.            Lo.                1,56            3,56

Los valores de la columna 1 y 2 son letras pero los valores de las columnas 3 y 4 son numéricos. La idea es que cuando modificó o introduzco un dato en las columnas 3 o 4, automáticamente aparezca la suma en la columna 5.

El datagridview esta enlazado a una base de datos sql.

He estado buscando por los foros y aparte de que todo lo que encuentro es para sumar columnas, no se cómo aplicar la función SUM a mi caso particular.

Alguien sabe o tiene alguna idea de cómo podría hacerse esto?

Espero alguien pueda ayudarme...

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