Ver Mensaje Individual
  #27 (permalink)  
Antiguo 19/04/2010, 13:28
Avatar de XYON126
XYON126
 
Fecha de Ingreso: abril-2006
Mensajes: 272
Antigüedad: 18 años, 1 mes
Puntos: 0
Respuesta: Importar de un .dat o txt a MSFlexGrid

Hola erbunson!

En este codigo que solo tiene un Grid ya que es para ir probando al ejecutarlo no me rellena ninguna celda ¿Donde tengo el error? ¿Porque no me rellena nada?, si pongo MsgBox de control despues de cada paso o sentencia estos si responden bien, en cambio las celdas se quedan en blanco.
Podrias ayudarme.

Código vb:
Ver original
  1. Option Explicit
  2.  
  3. 'Variables
  4. '##################################################
  5.  
  6. ' Estructura para dar de alta los datos de las Horas.
  7.  
  8. Private Type Horas_T
  9.  
  10. 'Variables
  11.  
  12. inicio1 As Date
  13. fin1 As Date
  14. inicio2 As Date
  15. fin2 As Date
  16. inicio3 As Date
  17. fin3 As Date
  18. tiempo As Date
  19. dia As String * 8
  20. fecha As Integer
  21. semana As Integer
  22. mes As String * 10
  23. año As Integer
  24. npedido As Long
  25. Totalhoras As Integer
  26.  
  27.  
  28. End Type
  29.  
  30. 'Variables para utilizar la estructura anterior
  31.  
  32. Dim Horas As Horas_T
  33. Dim HorasTemp As Horas_T
  34.  
  35. 'Variables para el archivo de los datos de Horas_T y temporal
  36. Dim Numero As Integer
  37. Dim FileTemp As Integer
  38.  
  39. 'Variables para la posición del primer y último registro
  40. Dim RegActual As Long
  41. Dim RegUltimo As Long
  42.  
  43. ' Variable para la posición Temporal del registro
  44. Dim RegActualTemp As Long
  45. Dim semanatemp As Integer
  46. Dim Pos As Integer, p As Integer
  47.  
  48. 'Variables para datos temporales de la Grilla
  49.  
  50. Dim inicio1_C As Date
  51. Dim fin1_C As Date
  52. Dim inicio2_C As Date
  53. Dim fin2_C As Date
  54. Dim inicio3_C As Date
  55. Dim fin3_C As Date
  56. Dim tiempo_C As Date
  57. Dim dia_C As String
  58. Dim fecha_C As Integer
  59. Dim semana_C As Integer
  60. Dim mes_C As String
  61. Dim año_C As Integer
  62. Dim npedido_C As Long
  63. Dim Totalhoras_C As Integer
  64.  
  65. 'Variables para las celdas de la Grilla
  66.  
  67. Dim lunes As String
  68. Dim martes As String
  69. Dim miercoles As String
  70. Dim jueves As String
  71. Dim viernes As String
  72. Dim sabado As String
  73. Dim domingo As String
  74. Dim Entrada As Integer
  75. Dim FilaG As Single
  76. Dim ColumnaG As Single
  77. Dim DatoG As Variant
  78. Dim SemanaActual As Integer
  79.  
  80. 'Variables contador
  81.  
  82. Dim x As Integer, s As Integer
  83.  
  84. ' ---------------------------------------------------------------------------
  85. ' \\ -- Descripción : Alternar color por Filas en Flexgrid
  86. ' ---------------------------------------------------------------------------
  87.  
  88.   Private Declare Function SetErrorMode Lib "kernel32" (ByVal wMode As Long) As Long
  89.   Private Declare Sub InitCommonControls Lib "Comctl32" ()
  90.  
  91.  
  92. ' ---------------------------------------------------------------------------
  93. ' \\ -- Función para Colorear por Filas
  94. ' ---------------------------------------------------------------------------
  95.  Private Sub pvSetColors(objFlexgrid As Object, ByVal lColor1 As Long, ByVal lColor2 As Long)
  96.       Dim iRow            As Long
  97.       Dim iCol            As Integer
  98.       Dim lCurrentColor   As Long
  99.  
  100.       With objFlexgrid
  101.       ' -- Desahbilitar el repintado del control para agilizar el trabajo
  102.          .Redraw = False
  103.           .BackColor = lColor1
  104.           ' -- Recorrer las filas
  105.          For iRow = 0 To .Rows - 1 Step 2
  106.               ' -- Establecer la Fila actual del flex
  107.              .Row = iRow
  108.               ' -- Recorre por columna y le aplica el color a la celda indicada de la fila actual
  109.              For iCol = 0 To .Cols - 1
  110.                   .Col = iCol
  111.                   .CellBackColor = lColor2
  112.               Next
  113.           Next
  114.           ' -- Reestablecer la propiedad Redraw para poder refrescar el control
  115.          .Redraw = True
  116.       End With
  117. End Sub
  118.  
  119.   Private Sub pvSetColors2(objFlexgrid As Object, ByVal lColor1 As Long, ByVal lColor2 As Long)
  120.       Dim iRow            As Long
  121.       Dim iCol            As Integer
  122.       Dim lCurrentColor   As Long
  123.  
  124.       With objFlexgrid
  125.       ' -- Desahbilitar el repintado del control para agilizar el trabajo
  126.          .Redraw = False
  127.           .BackColor = lColor1
  128.                   .Row = 6
  129.               ' -- Recorre por columna y le aplica el color a la celda indicada de la fila actual
  130.              For iCol = 0 To .Cols - 1
  131.                   .Col = iCol
  132.                   .CellBackColor = lColor2
  133.            Next
  134.           ' -- Reestablecer la propiedad Redraw para poder refrescar el control
  135.          .Redraw = True
  136.       End With
  137.   End Sub
  138.  
  139.  
  140. ' ---------------------------------------------------------------------------
  141. ' \\ -- Subrutina que Visualiza los datos en el MSFlexGrid1
  142. ' ---------------------------------------------------------------------------
  143. Private Sub VisualizarDatos()
  144.  
  145. Dim ContRegDias As Integer
  146. Dim ContDias As Integer
  147. Dim NrDia As Integer
  148.                  
  149. 'Calculamos el Nr. del dia de la semana.
  150.  
  151. Select Case dia_C
  152.  
  153.     Case Is = "lunes"
  154.          NrDia = 1
  155.     Case Is = "martes"
  156.          NrDia = 2
  157.     Case Is = "miercoles"
  158.          NrDia = 3
  159.     Case Is = "jueves"
  160.          NrDia = 4
  161.     Case Is = "viernes"
  162.          NrDia = 5
  163.     Case Is = "sabado"
  164.          NrDia = 6
  165.     Case Is = "domingo"
  166.          NrDia = 7
  167. End Select
  168.                  
  169. ContDias = 7
  170. ContRegDias = ContDias - NrDia
  171.  
  172. For ContRegDias = 7 To ContRegDias
  173.  
  174. ActualizarDatoG
  175.  
  176. ' Mostramos los datos en las celdas
  177. Select Case dia_C
  178.  
  179.     Case Is = "lunes"
  180.          MSFlexGrid1.TextMatrix(FilaG, 0) = DatoG
  181.     Case Is = "martes"
  182.          MSFlexGrid1.TextMatrix(FilaG, 1) = DatoG
  183.     Case Is = "miercoles"
  184.          MSFlexGrid1.TextMatrix(FilaG, 2) = DatoG
  185.     Case Is = "jueves"
  186.          MSFlexGrid1.TextMatrix(FilaG, 3) = DatoG
  187.     Case Is = "viernes"
  188.          MSFlexGrid1.TextMatrix(FilaG, 4) = DatoG
  189.     Case Is = "sabado"
  190.          MSFlexGrid1.TextMatrix(FilaG, 5) = DatoG
  191.     Case Is = "domingo"
  192.          MSFlexGrid1.TextMatrix(FilaG, 6) = DatoG
  193. End Select
  194. FilaG = FilaG + 1
  195. Next
  196.  
  197. End Sub
  198.  
  199.   ' --------------------------------------------------------------------------
  200. ' \\ -- Subrutina para actualizar los datos  leidos de Horas.dat.
  201. ' --------------------------------------------------------------------------
  202. Private Sub ActualizarDatoG()
  203. FilaG = 0
  204.  
  205. For FilaG = 0 To 6
  206.  
  207.      Select Case FilaG
  208.             Case 0
  209.             DatoG = inicio1_C
  210.             Case 1
  211.             DatoG = fin1_C
  212.             Case 2
  213.             DatoG = inicio2_C
  214.             Case 3
  215.             DatoG = fin2_C
  216.             Case 4
  217.             DatoG = inicio3_C
  218.             Case 5
  219.             DatoG = fin3_C
  220.             Case 6
  221.             DatoG = tiempo_C
  222. End Select
  223. Next
  224. End Sub
  225.  
  226.   ' --------------------------------------------------------------------------
  227. ' \\ -- Subrutina para abrir el archivo Horas.dat.
  228. ' --------------------------------------------------------------------------
  229. Private Sub AbrirArchivo()
  230.  
  231. Numero = FreeFile
  232. Open "Horas.dat" For Random As Numero Len = Len(Horas)
  233.  
  234. RegActual = 1
  235. ' Almacenamos la posición del último registro
  236. RegUltimo = LOF(Numero) / Len(Horas)
  237.  
  238. If RegUltimo = 0 Then
  239. RegUltimo = 1
  240. End If
  241.  
  242. End Sub
  243.  
  244. ' ---------------------------------------------------------------------------
  245. ' \\ -- Función para asignar los Datos de un registro del archivo Horas.dat a
  246. ' -----  las variables internas.
  247. ' ---------------------------------------------------------------------------
  248. Private Sub CargarDatos()
  249.  
  250. Get #Numero, RegUltimo, Horas
  251.  
  252. 'Asignamos contenidos de las variables con datos de Horas.dat.
  253. With Horas
  254.  
  255. inicio1_C = .inicio1
  256. fin1_C = .fin1
  257. inicio2_C = .inicio2
  258. fin2_C = .fin2
  259. inicio3_C = .inicio3
  260. fin3_C = .fin3
  261. tiempo_C = .tiempo
  262. dia_C = .dia
  263. fecha_C = .fecha
  264. semana_C = .semana
  265. mes_C = .mes
  266. año_C = .año
  267. npedido_C = .npedido
  268. Totalhoras_C = .Totalhoras
  269.  
  270. End With
  271.  
  272. End Sub
  273.  
  274. Private Sub Form_Load()
  275. Call pvSetColors(MSFlexGrid1, RGB(255, 255, 203), RGB(255, 255, 255))
  276. Call pvSetColors2(MSFlexGrid1, RGB(255, 255, 203), RGB(255, 234, 255))
  277.  
  278. Dim nrcol As Integer
  279. nrcol = 0
  280. npedido_C = 0
  281.  
  282. For nrcol = 0 To MSFlexGrid1.Cols - 1
  283.       ' Asignamos la Columa
  284.      MSFlexGrid1.Col = nrcol
  285.        ' Ahora podemos asignarle el tamaño que queramos
  286.      MSFlexGrid1.ColWidth(nrcol) = 960
  287. Next
  288.  
  289. AbrirArchivo
  290. CargarDatos
  291. VisualizarDatos
  292.  
  293. End Sub

aqui en este otro codigo esta el contenido del archivo Horas.dat de prueba ..

Código .dat:
Ver original
  1. þA†ÊSæ?7ŨáoSæ?                                 @Î*ÈE?viernes   abril     Ú#z   ªËí2Tæ?±ïØl«Tæ?¹ÄÉ$Uæ?Øwl¶Uæ?e+HVæ?lÁlÁVæ? @Î*ÈE(?viernes   abril     Ú#z   '“TkWæ?K~±äWæ?µŒ=Xæ?î2TvXæ?                  è´N?viernes   abril     Ú#z   ÌâN§â?ðÍ«‰§â?ᐖñ¡§â?ðØl«”¨â?¾y5ñ¬¨â?ÿ Ce‡©â? ¸šxV42?domingo   abril     Ú#z   cÔð·)Fì?ζJ‰rFì?œWÏŠFì?:m*ÓFì?                 ÀšxV4?lunes     abril     Ú#z   y@²Î•Gì?Ház®Gì?                                  Ï*ÈEè>lunes     abril     Ú#z

abierto desde el Bloc de notas.

Un saludo