En el proyecto este que me creé de cero solamente con el datagridview y el botón para añadir las fechas lo hacía todo en tiempo de diseño, la creación de la columna, el estilo de la celda con el formato de fecha, etc. Solamente le insertaba en tiempo de ejecución dos fechas.
Te adjunto el código real del problema.
La configuración del la grid grdHis la hago todo por código, es este (aunque aquí no aplico el formato a la celda de la fecha si lo he hecho anteriormente pero al no funcionar la ordenación quité todo lo referente al formato de la celda de la fecha:
Código PHP:
Me.grdHis.Columns.Add("CODHIS", "Código")
Me.grdHis.Columns.Add("FECHIS", "Fecha")
Me.grdHis.Columns.Add("DESHIS", "Descripción")
Me.grdHis.Columns(0).Visible = False
Me.grdHis.Columns(1).AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells
Con esta consulta devulevo los datos en un DataTable
Código PHP:
"SELECT * FROM HIS WHERE CODHIS = " & Me.txtCOD.Text & " ORDER BY FECHIS;"
Cargo los datos en una matriz que pertenece a un tipo de datos creado por mi. La variable Fila es un DataRow.
El procedimiento prcLinGridHis se encaga de asignar los datos a las columnas del datagridview.
Código PHP:
ReDim HIS(Tabla.Rows.Count)
If Tabla.Rows.Count > 0 Then
i = 0
For Each Fila In Tabla.Rows
With HIS(i)
.CODHIS = Fila.Item("CODHIS")
.CPAHIS = Fila.Item("CPAHIS")
.FECHIS = Fila.Item("FECHIS")
.DESHIS = Fila.Item("DESHIS")
Me.grdHis.Rows.Add()
prcLinGridHis(i, i)
i = i + 1
End With
Next
Esta es la defición del tipo de dato
Código PHP:
Dim HIS as HisClin
--------------------------------
Public Structure HisClin
Public Grabar As Boolean
Public CODHIS As Integer
Public CPAHIS As Integer
Public FECHIS As Date
Public DESHIS As String
End Structure
El procedimiento prcLinGridHis recibe como parámetros el índice de la matriz HIS que queremos leer y la fila de la grid donde se añadirán los datos
Código PHP:
Private Sub prcLinGridHis(ByVal Indice As Integer, ByVal Fila As Integer)
With HIS(Indice)
Me.grdHis.Item("CODHIS", Fila).Value = .CODHIS
Me.grdHis.Item("FECHIS", Fila).Value = Format(.FECHIS, "dd/MM/yyyy")
Me.grdHis.Item("DESHIS", Fila).Value = .DESHIS.Replace(Chr(13) & Chr(10), " ")
If .DESHIS <> "" Then
Me.grdHis.Item("DESHIS", Fila).ToolTipText = .DESHIS
Else
Me.grdHis.Item("DESHIS", Fila).ToolTipText = ""
End If
End With
End Sub
A ver si lo conseguimos.
Gracias de nuevo. Un saludo