Visual Basic.NET - Llenar Excel según la variable repetitiva en la columna del DTGV

 
Vista:
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 22/04/2019 06:59:25
Hola, estoy programando en vb.net, y sé lo referente a vaciar datos de un DTGV a Excel pero:

Alguien me puede decir como sería el ciclo en VB.NET para que de un DataGridView tomar todos los VALORES de medición de la paciente Alice y acomodarlos en un excel.

Supongo que deben ser dos condicionantes ya que en el DataGridView no solo tengo la fecha de recepción del día 28 de marzo si no de todo el mes de marzo.
La idea es llenar una columna por día del mes con los valores de la paciente Alice.

DTGGGG
Excel
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 22/04/2019 23:34:45
Hola,

No optimizado y no probado (demasiado perezoso para crear una aplicación de prueba ...), pero espero darle una buena idea :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Dim ColonaPaciente  As Integer
Dim ColonaFecha  As Integer
Dim ColonaValor  As Integer
Dim PrimeraLinea  As Integer
Dim CatidadLinea As Integer = 0
Dim ColonaValorXLS  As Integer
 
' Supongo tu imagen mostra la Rows(0) con las palabras Fecha, Paciente, NombreMedicion,
 
For C As Integer = 0 To DataGridView1.Columns.Count-1
If DataGridView1.Item(C, 0).Value = "Fecha Recepcion Paciente" Then ColonaFecha = C
If DataGridView1.Item(C, 0).Value = "Paciente" Then ColonaPaciente = C
If DataGridView1.Item(C, 0).Value = "Valor" Then ColonaValor = C
Next C
 
For R As Integer = 0 To DataGridView1.Rows.Count-1
If DataGridView1.Item(ColonaPaciente, R).Value = «Alice» Then
If CantidadLinea = 0 Then
PrimeraLinea = R
End If
CantidadLiena +=1
End If
 
' … … …  … 
 
        XLSAPP = New Excel.Application
        XLSAPP.Visible = True
        XLSAPP.Workbooks.Open("ElArchivaXLS.xls")
 
        Dim ColXLS As Integer  ‘ Colona XLS, la primera es numero 1
        Dim LinXLS As Integer = 1  ‘ Linea XLS, la primera es numero 1
 
Dim Fecha As String
 
       	 For ColXLS = 1 To 31
            		Fecha = XLSAPP.Cells(LinXLS, ColXLS).Text
            		If Fecha = DataGridView1.Item(ColonaFecha, PrimeraLina).Value Then
                		ColonaValorXLS = ColXLS
                		Exit For
End If
Next
 
Dim LineaDGV As Integer = PrimeraLinea
 
For LinXLS = 2 To CantidadLiena – 1
	XLSAPP.Cells(LinXLS, ColonaValorXLS).Text =  DataGridView1.Item(ColonaValor, LineaDGV).Value
LineaDGV +=1
Next LinXLS

Saludos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 23/04/2019 23:47:40
Hola Phil Rob, me podrías ayudar, mi objetivo es llenar un Excel en base al DTGV (concetado a una base de datos Acces las Fechas de recepcion pueden variar según el paciente)

Me marca error en la línea 82 If DataGridView1.Item(C, 0).Value = "FechaRecepcion" Then ColumnaFecha = C

Que dice: An unhandled exception of type 'System.InvalidCastException' occurred in Microsoft.VisualBasic.dll

Additional information: Conversion from string "FechaRecepcion" to type 'Double' is not valid.


Adjunto mi código, con la base de datos Acces, el formato de excel.

Mi forma deseada es la de la imagen Forma-deseada.jpg
Forma-deseada

Mi formulario tiene 1 DTG, 2 botónes, 1 Combobox y 2 Data time piker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
Imports System.Data
Imports System.Data.OleDb
Imports Microsoft.Office.Interop
 
Public Class Form1
    Dim cadena As New OleDbConnection
    Dim m_Excel As Excel.Application
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
        Try
            cadena.ConnectionString = "Provider=Microsoft.ACE.OLEDB.16.0; Data Source=C:Desktop\Pruebavisu.accdb"
            cadena.Open()
            Mostrar()
            LLENAR()
 
            MsgBox("Conectado con la Base de Datos", vbCritical, "Aviso")
        Catch ex As Exception
            MsgBox("No se conceto con la Base de Datos", vbCritical, "Aviso")
 
 
 
        End Try
    End Sub
    Private Sub Mostrar()
        Dim oda As New OleDbDataAdapter
        Dim ods As New DataSet
        Dim consulta As String
        consulta = "Select *From Pacientes"
        oda = New OleDbDataAdapter(consulta, cadena)
        ods.Tables.Add("pacientes")
        oda.Fill(ods.Tables("Pacientes"))
        DataGridView1.DataSource = ods.Tables("Pacientes")
 
 
 
    End Sub
 
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim oda As New OleDbDataAdapter("SELECT * FROM Cavidades " &
        " Where FechaRecepcion BETWEEN #" & DateTimePicker1.Value.ToString("MM/dd/yyyy") &
        "# AND #" & DateTimePicker2.Value.ToString("MM/dd/yyyy") & "# AND NombreMedicion = '" & ComboBox1.Text & "' ORDER BY FechaRecepcion DESC, Column1 DESC", cadena)
 
        Dim ods As New DataSet
 
 
 
 
        oda.Fill(ods)
        DataGridView1.DataSource = ods.Tables(0)
 
 
 
    End Sub
 
 Private Sub LLENAR()
        Dim Da As New OleDbDataAdapter("SELECT distinct NombreMedicion From Pacientes", cadena)
        Dim DT As New DataTable
        Da.Fill(DT)
        ComboBox1.DataSource = DT
        ComboBox1.DisplayMember = "NombreMedicion"
        'ComboBox1.ValueMember = "ID"
 
    End Sub
 
 Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button3.Click
 
        Dim ColumnaPaciente As Integer
 
        Dim ColumnaFecha As Integer
 
        Dim ColumnaValor As Integer
 
        Dim PrimeraLinea As Integer
 
        Dim CantidadLinea As Integer = 0
 
        Dim ColumnaValorXLS As Integer
 
        For C As Integer = 0 To DataGridView1.Columns.Count - 1
 
            If DataGridView1.Item(C, 0).Value = "FechaRecepcion" Then ColumnaFecha = C
 
            If DataGridView1.Item(C, 0).Value = "Pacientes" Then ColumnaPaciente = C
 
            If DataGridView1.Item(C, 0).Value = "VALOR" Then ColumnaValor = C
        Next C
 
        For R As Integer = 0 To DataGridView1.Rows.Count - 1
 
            If DataGridView1.Item(ColumnaPaciente, R).Value = "Alice" Then
 
                If CantidadLinea = 0 Then
 
                    PrimeraLinea = R
 
                End If
 
                CantidadLinea += 1
 
            End If
        Next R
 
 
        m_Excel = New Excel.Application
 
        m_Excel.Visible = True
 
        m_Excel.Workbooks.Open("C:Desktop\Formato.xlsx")
 
 
 
        Dim ColXLS As Integer
 
        Dim LinXLS As Integer = 1
 
 
 
        Dim Fecha As String
 
 
 
            For ColXLS = 1 To 31
 
            Fecha = m_Excel.Cells(LinXLS, ColXLS).Text
 
            If Fecha = DataGridView1.Item(ColumnaFecha, PrimeraLinea).Value Then
 
                ColumnaValorXLS = ColXLS
 
                Exit For
 
            End If
 
        Next
 
            Dim LineaDGV As Integer = PrimeraLinea
 
 
 
        For LinXLS = 2 To CantidadLinea - 1
 
            m_Excel.Cells(LinXLS, ColumnaValorXLS).Text = DataGridView1.Item(ColumnaValorXLS, LineaDGV).Value
 
            LineaDGV += 1
 
        Next LinXLS
 
       End Sub
End Class

Espero puedas asesorarme
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 24/04/2019 15:51:15
Hola,

Cuidado ! El nombre de la colona en tu imagen es "Fecha Recepcion Paciente", en 3 palabras. A la linea 82, leo "FechaRecepcion". No es bien ...
Tambien, para mi codigo de la linea 82 y otros, es supongado que la primera linea de tu imagen es la linea numero 0 del DataGridView.
Si no como esta, tienes que remplazar el codigo If DataGridView1.Item(C, 0).Value = ... por If DataGridView1.Item(C, NumeroLineaEnDataGrid).Value = ...

Otra error es a la liena 13 : Veo ods.Tables.Add("pacientes") pero tiene que ser ods.Tables.Add("Pacientes").

Tengo tu archivos pero no lo miro si no es realmente necesario, no teng tiempo ...

Buen trabajo ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 24/04/2019 20:28:08
Hola, este es mi DataGridView1

DTGV1


Por el código antes del tuyo no te preocupes no me marca error .

Apartir de la línea 66 donde escribí tu código me aparece este error aunque cambie el 0 por otro número :(


error

No entiendo que sucede
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 25/04/2019 16:13:28
Hola,

Quizó veo ...

Remplazas .... .Value por .... .Value.ToString

Si todavia un error, tienes que ejecutar paso a paso y leer los valores.
Tambien puedes enviar todo el archivo de desarollo VB para que pruebo el codigo ...

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 25/04/2019 18:15:52
Hola Phil., mira al poner Value.ToString ya no me marcó el error,

Pero ahora se marcó este error nuevo en la línea 91 del código.

Error2

Como vez
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 25/04/2019 19:31:08
Como lo sugieres te mando el archivo de desarrollo VB con la base de datos Acces y el formato de Excel.
Espero puedas ayudarme, no se como resolverlo :(
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 26/04/2019 00:05:24
Hola,

Tengo tu archivo ahora.
Demasiado tarde hoy (aqui, es la medianoche)
Miraré mañana en la tarde.

Buena noche
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 26/04/2019 15:13:21
Ok, comprendo, muchas gracias.
Espero puedas ayudarme.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 26/04/2019 17:50:11
Hola,

La foto del DGV en tu primero mensaje no mostra que hay ColunmsHeader. He supongado que las palabras VALOR, Paciente, Fecha ..., estaban en Rows numero 0.
Como este palabras estan en ColunmsHeader, tienes que corregir mi codigo como esta :
1
2
3
4
5
6
7
8
9
10
11
12
For C As Integer = 0 To DataGridView1.Columns.Count - 1
 
            'If DataGridView1.Item(C, 0).Value.ToString = "FechaRecepcion" Then ColumnaFecha = C
            'If DataGridView1.Item(C, 0).Value.ToString = "Pacientes" Then ColumnaPaciente = C
            'If DataGridView1.Item(C, 0).Value.ToString = "VALOR" Then ColumnaValor = C
 
            If DataGridView1.Columns(C).HeaderText = "FechaRecepcion" Then ColumnaFecha = C
            If DataGridView1.Columns(C).HeaderText = "Paciente" Then ColumnaPaciente = C
            If DataGridView1.Columns(C).HeaderText = "VALOR" Then ColumnaValor = C
 
 DataGridView1.Sort(DataGridView1.Columns(ColumnaPaciente), System.ComponentModel.ListSortDirection.Ascending)
        Next C

El primero foto de el DGV mostra las informaciones ordenado pero no es el caso con tu codigo. Es la razon para que agrego la linea :
DataGridView1.Sort(DataGridView1.Columns(ColumnaPaciente), System.ComponentModel.ListSortDirection.Ascending)

En tu primero mensaje, el foto de XLS no mostra las mismas informaciones que en el archivo Formato.xlsx. La continuacion de mis codigos no convienen para este modelo.
Tambien, las fechas no estan en buen model, estan en modelo americano en el DGV y en modelo europeo en XLS.

Es possible que el DGV tiene las informaciones ordenados sobre "Patientes" y sobre "FechaRecepcion", tienes que ajustar la consulta SQL con " ... ORDER BY Patientes, FechaRecption ASC".
Tambien tienes que ver el modelo de fecha en la consulta .

Tienes que corrigir este detalles ante continuar ...

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 27/04/2019 07:59:24
Hola, buenas noches, corregí lo que comentas, te explico como funciona mi desarrollo hasta el momento.

1. Al ejecutar el proyecto, el DataGridView muestra TODO lo que hay en la base de datos Acces y ordenado así:

1


2. Luego selecciono en los DataTimePiker el periodo de la FechaRepcion que quiero visualizar (el mes de marzo por ejemplo), luego en el combobox elijo el NombreMedicion que deseo filtrar (X-01-Positive o Indice de x01) y finalmente presiono el Botón 1:

2

3. Lo siguiente sería llenar el Excel presionando el bótón 2 (tu código), pero me aparece este error:

3

Siendo dramático y para poder explicar, el Excel a llenar "Formato" debe tener la forma:

4


La columna A del excel tiene el nombre de los pacientes y debajo de ellos el nombre de las mediciones (NombreMedición), que en este caso son dos (X-01-Positive, Indice de x01). Y la Linea 1 del excel tiene las FechaRecepción en formato Americano igual que el DTGV, de la forma Mes/Día/Año (controlado en la línea 52 del código, como también la forma ASC y DSC al oprimir el botón 1)

También menciono que en el DTGV, desde el principio la columna FechaRecepcion está ordenada según la Column1, y la columna Paciente se ordena alfabéticamente al presionar el botón 1. No necesariamente hay mediciones de todos los días o para todos los pacientes en la base de datos, por ello ciertas columnas del excel deben quedar vacías.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
Imports System.Data
 
Imports System.Data.OleDb
 
Imports Microsoft.Office.Interop
 
Public Class Form1
 
    Dim cadena As New OleDbConnection
 
    Dim m_Excel As Excel.Application
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
        Try
            cadena.ConnectionString = "Provider=Microsoft.ACE.OLEDB.16.0; Data Source=C:\Desktop\Pruebavisu.accdb"
            cadena.Open()
            Mostrar()
            LLENAR()
 
            MsgBox("Conectado con la Base de Datos", vbCritical, "Aviso")
        Catch ex As Exception
            MsgBox("No se conceto con la Base de Datos", vbCritical, "Aviso")
 
 
 
        End Try
    End Sub
 
    Private Sub Mostrar()
 
        Dim oda As New OleDbDataAdapter
 
        Dim ods As New DataSet
 
        Dim consulta As String
 
        consulta = "Select *From Pacientes"
 
        oda = New OleDbDataAdapter(consulta, cadena)
 
        ods.Tables.Add("Pacientes")
 
        oda.Fill(ods.Tables("Pacientes"))
 
        DataGridView1.DataSource = ods.Tables("Pacientes")
 
    End Sub
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim oda As New OleDbDataAdapter("SELECT * FROM Pacientes " &
        " Where FechaRecepcion BETWEEN #" & DateTimePicker1.Value.ToString("MM/dd/yyyy") &
        "# AND #" & DateTimePicker2.Value.ToString("MM/dd/yyyy") & "# AND NombreMedicion = '" & ComboBox1.Text & "' ORDER BY Paciente ASC, FechaRecepcion ASC, Column1 ASC", cadena)
 
        Dim ods As New DataSet
 
 
 
 
        oda.Fill(ods)
        DataGridView1.DataSource = ods.Tables(0)
 
    End Sub
    Private Sub LLENAR()
 
        Dim Da As New OleDbDataAdapter("SELECT distinct NombreMedicion From Pacientes", cadena)
 
        Dim DT As New DataTable
 
        Da.Fill(DT)
 
        ComboBox1.DataSource = DT
 
        ComboBox1.DisplayMember = "NombreMedicion"
 
 
    End Sub
 
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
 
 
 
        Dim ColumnaPaciente As Integer
 
 
 
        Dim ColumnaFecha As Integer
 
 
 
        Dim ColumnaValor As Integer
 
 
 
        Dim PrimeraLinea As Integer
 
 
 
        Dim CantidadLinea As Integer = 0
 
 
 
        Dim ColumnaValorXLS As Integer
 
 
 
        For C As Integer = 0 To DataGridView1.Columns.Count - 1
 
 
            If DataGridView1.Columns(C).HeaderText = "FechaRecepcion" Then ColumnaFecha = C
 
            If DataGridView1.Columns(C).HeaderText = "Paciente" Then ColumnaPaciente = C
 
            If DataGridView1.Columns(C).HeaderText = "VALOR" Then ColumnaValor = C
 
            DataGridView1.Sort(DataGridView1.Columns(ColumnaPaciente), System.ComponentModel.ListSortDirection.Ascending)
 
        Next C
 
 
 
        For R As Integer = 0 To DataGridView1.Rows.Count - 1
 
 
 
            If DataGridView1.Item(ColumnaPaciente, R).Value = "Alice" Then
 
 
 
                If CantidadLinea = 0 Then
 
 
 
                    PrimeraLinea = R
 
 
 
                End If
 
 
 
                CantidadLinea += 1
 
 
 
            End If
 
        Next R
 
 
 
        m_Excel = New Excel.Application
 
 
        m_Excel.Visible = True
 
 
        m_Excel.Workbooks.Open("\Desktop\Formato.xlsx")
 
 
        Dim ColXLS As Integer
 
 
 
        Dim LinXLS As Integer = 1
 
 
        Dim Fecha As String
 
 
        For ColXLS = 1 To 31
 
 
 
            Fecha = m_Excel.Cells(LinXLS, ColXLS).Text
 
 
 
            If Fecha = DataGridView1.Item(ColumnaFecha, PrimeraLinea).Value Then
 
 
 
                ColumnaValorXLS = ColXLS
 
 
 
                Exit For
 
            End If
 
        Next
 
 
 
        Dim LineaDGV As Integer = PrimeraLinea
 
 
        For LinXLS = 2 To CantidadLinea - 1
 
 
            m_Excel.Cells(LinXLS, ColumnaValorXLS).Text = DataGridView1.Item(ColumnaValorXLS, LineaDGV).Value
 
            LineaDGV += 1
 
        Next LinXLS
 
 
 
    End Sub
 
End Class

Espero puedas ayudarme, te adjunto mi desarrollo VB.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 27/04/2019 10:03:33
Si, lo vi bien, pero para las fechas, no es possible. Tienes que ajustar la consulta SQL.
Quizá : …BETWEEN #" & DateTimePicker1.Value.ToString("dd/MM/yyyy") &
"# AND #" & DateTimePicker2.Value.ToString("dd/MM/yyyy") …
En lugar de : … BETWEEN #" & DateTimePicker1.Value.ToString("MM/dd/yyyy") &
"# AND #" & DateTimePicker2.Value.ToString("MM/dd/yyyy") …
Tambien tiene que los Pacientes estan reagrupado por Nombre y ordenado por FecheRecepcion, si no, no es possible llenar XLS.

Tengo tu ultimo archivo. Veré esta en la tarde.

Hasta pronto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 27/04/2019 11:34:07
Continuación ...
He vido, esta es bien, pero para fechas, es puedo utilizar la colonna "Column 1" para poner en XLS ?

Edgar01
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 27/04/2019 15:46:38
Segunda continuación ...

Ne es necesario utilizar Column1, cambio FechaRecepcion de fecha americana en fecha europeana, directamente en DataGridView.
1
2
3
4
5
6
7
8
9
10
11
12
13
        ' Cambiar fecha americana ==> fecha euopena  (como en XLS)
        Dim Mese As String
        Dim Dia As String
        Dim Ano As String
        Dim Sep As Integer
        For R As Integer = 0 To DataGridView1.Rows.Count - 1
            Fecha = DataGridView1.Item(ColumnaFecha, R).Value
            Sep = Fecha.IndexOf("/")
            Mese = Fecha.Substring(0, Sep)
            Dia = Fecha.Substring(Sep + 1, Fecha.LastIndexOf("/") - Sep - 1)
            Ano = Fecha.Substring(Fecha.LastIndexOf("/"))
            DataGridView1.Item(ColumnaFecha, R).Value = Dia & "/" & String.Format("{0:00}", CType(Mese, Integer)) & "/" & Ano
        Next R

Sólo hay que llenar XLS ... trabajo ...

Hay un caracter "/" demasio, pero corrijo.

Edgar02
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 27/04/2019 20:18:01
Eres muy amable, tómate tu tiempo, yo te espero :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 27/04/2019 20:39:24
Anexo foto de la explicación del formato de Excel


Dramatizacion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 28/04/2019 00:00:10
Hola,

Veo solamente ahora tu mensaje, pero mi codigo no es demasio lejos de la solucion.

No tuve el tiempo que esperaba esta tarde ...

Pero, trabajo un poco. Aquí he adjuntado el código de Form1. No el archivo del projeto completo por que no utilizo las mismas versiones de referencias que tu. Tienes que copiar-pegar.

Cuidado! La página XLS es visible solamente tant el llenado es terminado. Este trabajo es lento, 1 o 2 minutos.

Espero darte buenas ideas para la continuacion ...

Buenas nochas

Edgar03
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 28/04/2019 11:50:44
Hola,

La noche trae consejos ...
Esta mañana, he modificado algunos codigos para acelera el ejecucion (ahora, 20 segundos).

El procedimiento Button2_Click es modificado.
Algunos procedimientos y funciones estan agregado :
CambiarFechaMedicin, OrdonarDGV, PreparFecha y PreparData.

Todos este codigos estan en el archivo Form1Partial.zip adjuntado.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 29/04/2019 00:37:40
Hola amigo, ¿ como es el XLS "Formato" que tu usaste?
Tengo el siguiente problema que creo está relacionado con la forma de escribir la fecha en línea 1 del XLS "Formato".

Sí el archivo XLS tiene la forma:

1

El código arroja este error:

2

Pero, sí el archivo XLS tiene la forma:

3

El programa no marca error, pero no hace lo de tu XLS

Solo llena la columna del día 11/03/2019 y escribe el nombre del paciente muchas veces:

4

No se si esto tenga que ver, pero mis DTPiker tienen este formato:

FormatDTP

¿Como debe ser la forma inicial del XLS?
Aquí he adjuntado el Form1.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 29/04/2019 10:48:37
Hola,

Mi Format.xls es tuya, no he cambiado los parametros.

Edgar04

Tu consulta SQL con su fechas y ordenamientos estan bien.
El modelo de fecha del DatePicker tambien es bien sin mificacion.
No tengo error cuando ejecuto.

Edgar05

Tienes que ver tu referencias :

Edgar06
...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 29/04/2019 12:30:26
Continuación ...

He probado el Form1 que has enviado con tu ultimo mensaje.
No he error. Tienes verificar las referencias.

Si no funciona, puedas hacer un video y lo poner en Dropbox ?

Edgar07
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 29/04/2019 18:24:36
Continuacion ... continuacion ...

Pruebo comprender tu problema pero no veo.

Pero, busco otros problemas.
Por ejemplo, estaba possible buscar con FechaMedicion de 01/03/2019 a 30/03/2019, pero no estaba possible buscar con FechaMedicion de 01/03/2019 a 20/03/2019.

He corrigido algun codigos. Esta es mejor. Es el codigo que escriba las fechas en linea 1 en XLS y es possible buscar con FechaMedicion de 01/03/2019 a 20/03/2019, o otros ...

Adjunto todo el Form1. Los procediementos modificado son :
Button1_Click, Button2_Click, PreparFecha y Form1_FormClosed (agregado). Tambien modifico el principio de la Class :
1
2
3
4
5
6
7
8
Public Class Form1
 
    Dim cadena As New System.Data.OleDb.OleDbConnection
    Dim m_Excel As New Microsoft.Office.Interop.Excel.Application
 
    Dim FechaPrimera As Date
    Dim FechaUltima As Date
...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 29/04/2019 23:55:12
Hola mi amigo, ya grabé el vídeo pero no tengo acceso a una red para subirlo a Dropbox, mas tarde te lo comparto.....
Aún así te explico lo que sucede al momento:

Estoy usando el nuevo código que mandaste...
Creo que el problema es el DataTimePiker 2 explico...
Yo uso los DTPIKER para filtrar el rango de FechaRecepcion que quiero visualizar en el DTGV, pero no se filtra como se debe, por ejemplo aquí quiero visualizar del 01 de marzo al 07 de marzo y me filtra fechas extras:

1

El XLS lo arrojá así (aunque filtre del 01 al 31 de marzo), ahora solo se pasa a la columna E

2

Intento entender......
Mi código es el mismo de tu último mensaje, pero ahora agrego estas líneas que tu usas solo para ver comportamiento y el programa arroja error:

Agrego-tus-lineas

Mis referencias están cargadas así:

referencias

Adjunto el XLS que generó su último código y adjunto mi desarrollo VB completo

En unas horas le comparto el vídeo ya que no tengo acceso a una red que me permita cagarlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 30/04/2019 00:05:07
Sucede algo raro, siendo dramático ahora intento filtrar del 01 de Febrero al 06 de Febrero (no existen datos de esas fechas en la base de datos) y arroja ésto:

febrero

No se si tenga que ver los DTP
Mas tarde le comparto el vídeo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 30/04/2019 06:55:49
Continuación.....
link dropbox del vídeo:

https://www.dropbox.com/s/3ww2eo6v7wc7tqy/VB.mp4?dl=0

Buena noche amigo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 30/04/2019 16:17:02
Hola,

El progama no es sin carencia ..., particularmente tiene que ser mejorado para la gestión de la memoria y tambien, permitir dos click del Button2 sin error (no es el caso, tiene que rejecutar el programa).

Pero no veo aqui los errores de tu video... Tiene que corrigir estos problemas ante mejorar loa detalles.

Mira los dos videos que he ponedo en DropBox :
PreparXLS.mp4 : https://www.dropbox.com/s/ze6uduaiwypkeae/PreparXLS.mp4?dl=0
EjecutarPrograma.mp4 : https://www.dropbox.com/s/9mmebskpibk25hk/EjecutarPrograma.mp4?dl=0

Hace PreparXLS por que he vido que podemos introducir errores al tantear ...

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 30/04/2019 18:31:33
Continucion ...

La fecha en FechaMedicion y la fecha en Column1 no tienen los mismos valores. A veces 1 dia de diferencia, a veces no ...
¿Es possible que Column1 esta egual FechaMedicion ?

Edgar08
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 30/04/2019 19:09:26
No es posible que sean iguales siempre, aveces SI.....
Ya que La fecha de recepción es cuando el paciente ( Alice....America.....etc) ingresó...
Y la Colum1 es la fecha cuando se les realizó la NombreMedición (Indice x01.......etc..)
Por eso se crea un valor Primero y uno último dentro de cada FechaRecepcion.....

Siendo dramático:
Registro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 30/04/2019 19:11:29
El formato XLS lo preparé pero me arroja error....
Mira:

1111

Grabo video.....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 30/04/2019 20:11:08
Pongo formato al XLS,todo exactamente igual como en tu vídeo....
1

Ejecuto el programa y ya no me arrojó error.... pero llenó mal y el formato de la celda de las fecha cambió.........

222

Mis refrencias:

Refrences

No sé si sea la computadora o no se que es lo que sucede... Anexo Form1.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 30/04/2019 22:57:24
Hola,

Para las referencias, creo que son bien.
No creo que es la culpa de el computadora.

Para esta error (cf. la imagen), es el caso donde el valor de FechaMedicion es más pequeña que el valor de Column1 (cf. segunda imagen) : el DatadGidView en ColumnaFecha da "29/3/2019" pero las fechas estaban seleccionado de "30/3/2019" a "30/4/2019", y las fechas escibido en XLS estan de "30/3/2019" a "30/4/2019". El programa no encontra "29/3/2019" en XLS. Error cuando arriba la ultima colona de Excel.
El problema de Column1 es la culpa del formato de FechaMedicion en la base de datos. Para evitar el primero problema de FechaMedicion, he remplacado FechaMedicion por Colmun1 en tu consulta SQL : " Where Column1 BETWEEN #" & ... " por que no es posible comparar las fechas STRING si no es en formato "yyyymmdd" y SQL no encontra las fechas esperado. Es la razon del nuevo problema !
¿En la base de datos, es posible que FechaMedicion tengo el mismo formato que Column1?

Edgar09

Edgar10

...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 01/05/2019 00:37:45
Ese nuevo problema no me sucede mas.....
Más que este:

1

El XLS se llena mal
error2

Mas tarde anexo video de prueba.................

Me podrías enviar tu VB para probarlo? para ver que puede ser..........

Es que no entiendo que es lo que pasa........
Ya probé en otras computadoras y mi programa hace lo mismo.......

Mi XLS es 2016 y yo tengo referencia Excel.Interop 15 pero no creo que sea el problema ya que ya probé con un excel versión 97-2003 y sucede lo mismo, solo se llena 1 columna y se repiten todos los nombres
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 01/05/2019 08:32:57
Hola,

Uso de VB2013, es el solo en español que tengo. Pero, puedo usar VB2015 y VB2017, la langua es sin interés si no debo hacer fotos del pantilla para el foro.

Propongo otro solucion :
Cuando abro el programa, copio la DB de "Pruebavisu.accdb" en "Temp.accdb".
En "Temp.accdb", puedo cambiar el formato de FechaMedicion como, me gusta.
Tambien, la consulta " Where FechaMedicion BETWEEN #" & ... " funciona muy bien en "Temp.accdb".
Cuando cerro el programa, el archivo "Temp.accdb" es eliminado.

¿Es que esta solucion te gusta?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 01/05/2019 19:37:59
Continuacion ...

¿Haces tengado una buena dia ?

He escribir el codigo como lo dico en mi mensaje de este mañana.

Adjunto el archivo Form1.zip. Quizá haces una copia de tu version ante probar la nueva, es muy diferente ...

Creo que los resultados son bien.

Buena tarde,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 01/05/2019 20:00:20
Hola mi amigo...
explico, la base de datos Acces existe solo para poder programar sin usar la base de datos real SQL que está en un servidor...
Mi objetivo es cuando el proyecto esté al 100% adaptarlo para funcionar desde la SQL......
Esta línea no la entiendo :
" Where FechaMedicion BETWEEN #" & ."

Solo comento que La column1 debe estar dentro de la FechaRecepcion:

Orden

Por esa razón, intenté ordenar todo primero en el DTGV de esa manera.....

Otra solución sería que me mandes tu proyecto como tu lo corres en tu computadora y yo crear un .exe y enviartelo para ver si en tu computadora funciona igual? o una conexión remota?

Anexo el vídeo de prueba:

https://www.dropbox.com/s/6h6tms9144bo2hw/No%20llena%20bien-1.mp4?dl=0

Quedo a tu disposición
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 01/05/2019 20:51:27
Hola, acabo de ver este mensaje

2222

Lo prebo...... te aviso......
Mi día está siempre atento a este proyecto :(
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 01/05/2019 22:44:51
Hola, buenas noches mi amigo
Probé el código nuevo y sale error....
Me imagino que existe un problema con my Microsoft Excel o algo relacionado?
O será que my Excel es americano y el de usted europeo?
No encuentro una explicación de porque en su computadora los proyectos funcionan bien...... y en la mía NO :(

Anexo el vídeo del nuevo código........

https://www.dropbox.com/s/e65v0f4klwzxpks/Nuevo%20codigo.mp4?dl=0
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 02/05/2019 10:14:40
Hola Edgar,

He vido la video.

Ya no es necesario ajustar los parámetros XLS, lo hago en el código y pongo todo a "Text" :
1
2
3
4
5
6
m_Excel.Cells.Select()
        m_Excel.Selection.ClearContents()
        m_Excel.Cells(1, 1).Select()
        m_Excel.Cells(1, 1) = "Date"
        m_Excel.Rows("1:1").Select()
        m_Excel.Selection.NumberFormat = "@"

El error que es visible en la video viene cuando una fecha no es encontrado en la primera lilea XLS. Es uno bugs ! Es mi culpa :(

Puedas ver en ejecutando paso a paso, en mirando los valores des variables, después désactivar la linea (± Linea 178) : m_Excel.Visible = False . Entonces veras las columnas XLS.

Entonces verás que el bucle es infinito ... Pero el error es arribado ante, en este codiga :
1
2
3
4
5
6
7
For ColXLS = 2 To 200
                    Fecha = m_Excel.Cells(1, ColXLS).Text
                    If Fecha = DataGridView1.Item(ColumnaFecha, LineaFechaXLS).Value Then
                        ColumnaValorXLS = ColXLS   ' Error viene mas tarde si no encontrar Fecha aqui, ColumnaValorXLS  es malo
                        Exit For
                    End If
            Next

Busco ... pero no todo el dia, tengo que hacer algunas tareas ...

Adjunto el directorio RELEASE del projeto, con el EXE. Puedas probar si no es necesario de instalar (no es la misma vercion de referencia : aqui, Office 2013). Pero obtendrás el mismo resultado.

Hasta pronto,



Edgar11
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 02/05/2019 17:58:33
He probado enviar este mesenje via gmail pero no es posible, quizá demasiado bytes con los imagen ...


He trabajado pero no he encontrado una solucion ...

Por favor, puedas trabajar con el Form1 que he adjuntado ?

He hacedo algun modificaciones.

He ponido en las primeras del codigo, los nombres de los archivos y DB que tienen que cambiar para te o para me (imagen 1).

Pero especialmente he agregado herramientas de inspeccion del programa durante el ejecucion (imagen 2).

Esta cree un archivo Debug.txt en el directorio Debug del projecto (imagen 3).

Cuando no hay problema, este archivo puebe ser eliminar. Pero cuando hay erro, tienes que me enviar este archivo por correo.

Saludos,


Edgar12


Edgar13


Edgar14
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 03/05/2019 15:01:29
Hola, acabo de ver el mensaje, lo pruebo y le aviso mi amigo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 03/05/2019 15:27:46
jaja... creia que hay no mas error ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 03/05/2019 17:32:31
Lo pruebo en un rato mas mi amigo, me puedes decir que versión de Visual Studio y Microsoft Office usa usted?
Quiero instalar las mismas versiones de usted en mi computadora para no tener errores....
Yo uso Vstudio 2015 proffesional
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 03/05/2019 18:34:58
No tiene que cambiar tu instalacion. Mejor permitir los errores y me enviar el archivo Debug.txt. Seguro que he hacedo errores.

Para responder a tu pregunta : he utilizado VS2013 et Office2013.

Pero, probaré ahora el progama con VisualStudio 2015 Prof. Te informo rapidemiente del resultado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 03/05/2019 19:02:16
Confirmo que el programa tiene el mismo comportamiento en VS2015 y en VS2013. Tu problem es una culpa en el algoritmo de tratamiento de las fechas.
Espero el archivo Debug.txt para entender el error.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 04/05/2019 07:23:05
Hola mi gran amigo, una disculpa estuve muy ocupado....

Ejecuté el nuevo proyecto y salió este error:

1


El XLS se colgó, pero aún así se llenó solo de esta manera:



Guardé los Debug correspondientes a 3 ejecuciónes, los anexo.
Excel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 04/05/2019 08:17:45
Gracias para las informaciones y el archivo. Es preciso.
Miré en la tarde.
Vea que no es la culpa de tu sytema ?
Salutos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 04/05/2019 16:51:22
Hola Edgar,

He cambiado la manera de agregado 1 dia a la fecha, de fecha a fecha, para escribir la primera linea XLS.

1
2
3
4
5
6
While PreparFecha(FechaDate, 1) <= PreparFecha(FechaUltima, 1)  ' escribir las fechas a la primera linea XLS
            m_Excel.Cells(1, ColXLS) = FechaDate
            ColXLS += 1
            FechaDate = AgregarUnDia(FechaDate)   ' Agregar 1 dia a FechaDate en el formato DD/MM/YYYY y do el resultado en el mismo formato
            'FechaDate = CType(FechaDate, DateTime).AddDays(1).ToString("dd/MM/yyyy")  ' No conviene para que es relacionado con los parametros regionales
        End While

Por supuesto, tuve que agregar funciones ...

Adjunto todo el Form1 para que probas.

Tambien , he cambiado las herramientas de inspeccion del programa durante el ejecucion de Trace en Debug. Es el mismo durante los ajustes del programa pero Debug sera sin accion cuando compila en modo Release.

Por el archivo Debug.txt, no es necesario de hacer un nuevo a cada ejecucion. Todo las informaciones estan agregado a cada ejecucion.

Espero buenas informaciones mañana ...

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 05/05/2019 01:52:42
Hola mi gran amigo, buenas noches allá en Bélgica.
Le informo:
Esta vez el programa ya logró nuestro objetivo.
Esta correcto, y creo que el Debug ayuda a entender los errores que se pueden generar...

El XLS se llena correcto:

Target-complete

Pero, el problema es que el proyecto ahora depende que exista una base de datos Acces...

Ahora que el proyecto ya es correcto que debemos hacer para no depender tampoco de un "PruebavisuTmp.laccdb".

22222


Explico:
Yo creé el "Pruebavisu.accdb" desde una base de datos SQL (que está en un servidor), eso lo hice para poder enviarla a cualquier persona.

El objetivo (cuando el código estuviera correcto) era conectar el proyecto a una DataBase SQL que es la verdadera, pero no puedo hacerlo porque dependo 100% de que mi DataBase ahora sea un Acces.

Que puedo hacer en esta situación?

El programa anterior que NO dependía del "PruebavisuTmp.laccdb", ahora puede ser útil? Conociendo este último Debug?

Programa-anterior


Anexo el Debug de la prueba donde el XLS salió correcto.
:) Amigo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 05/05/2019 10:44:23
Hola Edgar

Gracias por esta buena noticia, es un buen domingo que comienza ...

Para no llenar el directorio innecesariamente con un archivo Debug.txt que creció con cada ejecución, puede hacer un Buscar-Reemplazar de Debug.Listeners para ' Debug.Listeners. Cuando el debug es todavia necesario, tendremos que hacer el contrario.

La DB "PruebavisuTmp.accdb" es solo una copia de trabajo en la que puedo modifcar el formato de las fechas. Cuando usamos otra base de datos, debemos leer la base de datos de origen y crear una copia de trabajo en el servidor o en la computadora local (a menos que podamos cambiar las fechas en el DB de origen).

En el caso donde las computadoras locales tienen "Office" (este es ciertamente el caso ya que usas Excel), es bien que crear la copia de trabajo en el tipo de Access. Creamos una DB "Pruebavisu.accdb" en el directorio del programma y entonces, el programa no debe ser modificar para saber llenar XLS.

Para hacer esta, tienes que leer en la DB SQL, los registros que te gusta, con los campos que son exactamente necesarios para el programa. Les registros leido son escribido en "Pruebavisu.accdb" y el programa crea "PruebavisuTmp.accdb" durante ejecucion y lo eliminar después.

Para leer la DB de origine, tienes que conocer la FraseDeConexion (ConnexionString), el nombre de la tabla y los nombres de los campos.
Con este informaciones, es posible escribir un procedimiento para llenar la DB "Pruebavisu.accdb" que es vacia en el computadora local.

Pero como hacer probas si este DB es SQLServeur o MySql ? Tienes que poder acedar ± con libertad ...

Que tenga un buen día
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 06/05/2019 03:19:18
Hola mi amigo, eres un genio!!!
Entonces me sugieres que lea la tabla de la SQL y de allí el programa realice un Acces "Pruebavisu.accdb" y luego un "PruebavisuTmp.accdb" .....

Ahorita el programa lo que hace es leer nuestra DB siempre desde Acces verdad?...

Entonces solo necesitaríamos que lo que se lea en el DTGV (de la SQL) se arroje en un Acces?
Que tipo de fechas son las correctas? Para ver si puedo cambiarlas...

Buenas noches allá en Bélgica mi gran amigo....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 06/05/2019 10:29:22
Hola Edgar,

"Entonces solo necesitaríamos que lo que se lea en el DTGV (de la SQL) se arroje en un Acces?" : es exactamente eso !

"Que tipo de fechas son las correctas?" : En tu DB "Pruebavisu.accdb", FechaRecepcion es en el formato MM/DD/YYYY y del tipo String. Es como esto que tu programa funciona bien.
Por favor, no cambiar ...

Hasta pronto,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 06/05/2019 18:08:32
Hola mi amigo.....
Entonces necesitamos un código que genere el Acces desde el DTGV...
Y las fechas las dejamos tal cual están....
Te confirmo mas tarde como es el formato de fecha de la SQL (creo que es igual)......
Saludos mi amigo, te deje mis datos por mensaje privado :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 06/05/2019 20:15:41
Ok entiendo, mira mi plan es este:

Yo podría generar un "Acces.accdb" desde otro programa que está conectado a la SQL, una vez echo esto, podría copiar y pegar, o guardar ese Acces.accdb aquí?

Acces1

Cuyo acces tenga esta forma:

Acces2

Y nuestro proyecto crearía un AccesTmp.accdb para trabajar.....

Acces3


Y ya con eso nuestro proyecto ya funcionaría? Verdad?
El acces actualizado siempre debe estar dentro de la carpeta "Debug"?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 06/05/2019 21:11:57
Hola Edgar,

La sola cosa que es necesario es un procedimiento que lea la DB en servidor y carga la DB Puevavisu.accbd. No es dificil.

Tienes que dar el ConnexionString, el nombre de la tabla y los nombres de los campos.
Entonces, escribo un procedimiento que parece a :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Private Sub LeerDBOrigenYCargarDBAccess()
 
        Dim cadenaSQL As New SqlConnection
        Dim MiComandoSQL As New SqlCommand
        Dim ComandoSQL As String
        Dim cadenaAccess As New OleDbConnection
        Dim MiComandoAccess As New OleDbCommand
        Dim ComandoAccess As String
 
        Dim MiDatos As SqlDataReader
 
        Dim FraseDeConexionSQL As String = "Data Source=" & NombreServidor & "; AttachDbFilename=" & NombreBDCompleto & ";Integrated Security=True"
        Dim FraseDeConexionAccess As String = "Provider=Microsoft.ACE.OLEDB.16.0; Data Source=" & "Pruebavisu.accdb"
 
        cadenaSQL.ConnectionString = FraseDeConnexionSQL
        cadenaSQL.Open()
        cadenaAccess.ConnectionString = FraseDeConnexionAccess
        cadenaAccess.Open()
 
        MiComandoSQL = cadenaSQL.CreateCommand()
        MiComandoSQL.CommandType = CommandType.Text
        MiComandoSQL.CommandText = "SELECT ID, FechaRecepcion, Paciente, Column1, Valor, y todo te gusta ... FROM Pacientes  WHERE ... si necesario ..."
 
        MiComandoAccess = cadenaAccess.CreateCommand()
        MiComandoAccess.CommandType = CommandType.Text
 
        MiDatos = MiComandoSQL.ExecuteReader()
        Do While MiDatos.Read
            MiComandoAccess.CommandText = "INSERT INTO ID, FechaRecepcion, Paciente, Column1, Valor VALUE (" & MiDatos.Item(0) & "," &  MiDatos.Item(1) & ", ... y todo la cointinuacion ... )"
            MiComandoAccess.ExecuteNonQuery()
        Loop
        MiDatos.Close()
 
        cadenaSQL.Dispose()
        MiComandoSQL.Dispose()
 
        cadenaAccess.Dispose()
        MiComandoAccess.Dispose()
 
    End Sub

Y para continuar, nada cambiar en el programa ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 06/05/2019 21:47:58
Hola, mi amigo..
Acabo de leer tu mensaje, empezaré a trabajar en ello y te informo como resulta.
Buena noche mi amigo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 09/05/2019 05:47:20
Hola mi gran amigo, aún NO me he conectado a la DB SQL (aún no tengo el nombre del servidor), pero mi consulta es por otro tema relacionado con el proyecto que tenemos.

Intento implementar el proyecto a otro tipo de registros donde los registros de la columna Paciente cambian a :
M19-G1, M19-G2, M19-G3, M19-G4, M20-G1, M20-G2, M20-G3, M20-G4, M21-G1, M21-G2, M21-G3, M21-G4.
M4-B1, M4-B2, M4-B3, M4-B4, M5-B1, M5-B2, M5-B3, M5-B4, M6-B1, M6-B2, M6-B3, M6-B4.

Primero copié y pegué todos mis datos de 1 mes (9,388) a mi acces Pruebavisu.accdb (eliminado los registros anteriores) y los ordené como el Acces Anterior.

Acces

Al ejecutar el programa arrojó esta ventana (durante 11 minutos) antes de mostrar el formulario, me imagino que es cuando crea el AccesTMP para trabajar:

11min

Cuando estuvo listo el formulario para trabajar, filtré del día 1 de Abril al 06 de mayo (las unícas fechas disponibles al momento), y en el comobobx1 seleccioné mi "NombreMedicion" Concentricidad 0:

Filtro

Presioné el Botón 2 para crear el XLS respectivo y si se llena como debería, pero solo del Paciente M19-G1 al M20-G4:

XLS1

Luego del M21-G1 al M6-B4 repite los nombres:

XLS2

Me imagino que es por un límite establecido en el código?
Adjunto Debug y Acces.
Como vez? saludos hasta Bélgica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 09/05/2019 15:40:22
Hola Edgar,

Ahora tengo tu mensaje. Miro este tarde o mañana.
Te informo ...

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.116
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Phil Rob (508 intervenciones) el 10/05/2019 13:07:02
Hola Edgar,

Este estaba mi error ...

1
2
                '       If Fecha = DataGridView1.Item(ColumnaFecha, LineaFechaXLS).Value Then        ''' ERROR !!!
                If Fecha = DataGridView1.Item(ColumnaFecha, LineaDGV).Value Then     ' Buena versión

He hecho algun otras modificaciones para mejorar el funcionamiento.

Adjunto todo el Form.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Edgar
Val: 170
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Llenar Excel según la variable repetitiva en la columna del DTGV

Publicado por Edgar (55 intervenciones) el 13/05/2019 04:41:51
Hola mi amigo como has estado?, que tal su día?

El programa ya funcionó con esa ultima modificación.

Mañana probaré conectarlo a la base de datos SQL.

:) te informo.... :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar