Ver Mensaje Individual
  #12 (permalink)  
Antiguo 12/04/2010, 01:21
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!

Si algun dia nos conocemos personalmente, dame ostias hasta el DNI, estoy ciego y no habia visto el .TextMatrix cuando lo tenia delante de mis narices en la linea 4 de la segunda sentencia.
Y ahora ya voy captando,lo comentado, es lo que he comentado varias veces que en los manuales y tutoriales que corren por ahi en ningun sitio ponian lo que acabas de postear que si te posicionas en un Row/Col haces u obtienes lo mismo que en un .TextMatrix; entonces la linea :

Código vb:
Ver original
  1. GridCabecera MsFlexgrid1, LaColumna, ElAncho, ElTitulo, ElAjuste

que es exactamente lo del Row/Col,¿el orden de propiedades es ese? ¿Cuantas mas y en que orden puede llevar?

¿La primera fila la "0" y la primera columna "0" que se podrian tomar como indice o cabecera respectivamente ¿Tienen algun caracter(tratamiento) especial o es indiferente, pues veo que por defecto el MsFlexgrid la diferencia en color, ¿hay que tratarlas siempre por separado o simplemente como fila y columna (0,0) y punto?.

Cita:
Iniciado por erbunson Ver Mensaje
Si quieres deberías pegar el Codigo de la UDT que utilizas para leer los datos y la sentencia Open del Fichero para saber la longitud del mismo.
Aqui en este punto estoy tambien anclado pues en el formulario reloj que es donde entro los datos en el archivo Horas.dat los guardo de esta manera .:

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. horainicio1 As Date
  12. horafin1 As Date
  13. horainicio2 As Date
  14. horafin2 As Date
  15. horainicio3 As Date
  16. horafin3 As Date
  17. Totalhoras As Date
  18. dia As String * 8
  19. semana As String * 4
  20. mes As String * 12
  21. año As Integer
  22.  
  23. End Type
  24.  
  25. 'Variables para utilizar la estructura anterior
  26.  
  27. Dim Horas As Horas_T
  28. Dim HorasTemp As Horas_T
  29.  
  30. 'Variables para el archivo de los datos de Horas_T y temporal
  31. Dim FileFree As Integer
  32. Dim FileTemp As Integer
  33.  
  34. 'Variables para la posición del primer y último registro
  35. Dim RegActual As Long
  36. Dim RegUltimo As Long
  37.  
  38. ' Variable para la posición Temporal del registro
  39. Dim RegActualTemp As Long
  40.  
  41. Dim Pos As Integer, p As Integer
  42.  
  43. ' Variable para el cronometro
  44. Dim marco As Integer
  45. Dim horainicio As Date
  46. Dim horafin As Date
  47. Dim horainicio1 As Date
  48. Dim horafin1 As Date
  49. Dim horainicio2 As Date
  50. Dim horafin2 As Date
  51. Dim horainicio3 As Date
  52. Dim horafin3 As Date
  53. Dim tiempo_C As Date
  54. Dim conthoras As Integer
  55. Dim dia_C As String
  56. Dim mes_C As String
  57. Dim semana_C As String
  58. Dim año_C As Integer
  59.  
  60. ' Variable para identificar dia y mes.
  61. Dim diatemp As Integer
  62. Dim mestemp As Integer
  63. Dim x As Integer
  64. Dim i As Integer
  65.  
  66. Dim lcdTest As New mcLCD
  67.  
  68.  
  69. Private Sub cmd_fin_Click()
  70.  
  71. diatemp = Weekday(Format(Date, "ww"))
  72. mestemp = Month(Now)
  73. semana_C = Format(Date, "WW")
  74. año_C = Format(Date, "YYYY")
  75.  
  76.  
  77. horafin = Time
  78. marco = 0
  79.  
  80. dia_C = diatemp
  81. mes_C = mestemp
  82.  
  83.  
  84. 'Sentencia para Nombrar los dias de la semana.
  85. Select Case diatemp
  86.     Case 1
  87.     dia_C = "Lunes"
  88.    
  89.     Case 2
  90.     dia_C = "Martes"
  91.    
  92.     Case 3
  93.     dia_C = "Miercoles"
  94.    
  95.     Case 4
  96.     dia_C = "Jueves"
  97.    
  98.     Case 5
  99.     dia_C = "Viernes"
  100.    
  101.     Case 6
  102.     dia_C = "Sabado"
  103.    
  104.     Case 7
  105.     dia_C = "Domingo"
  106.  
  107. End Select
  108.  
  109. 'Sentencia para Nombrar los meses.
  110. Select Case mestemp
  111.     Case 1
  112.     mes_C = "Enero"
  113.    
  114.     Case 2
  115.     mes_C = "Febrero"
  116.    
  117.     Case 3
  118.     mes_C = "Marzo"
  119.    
  120.     Case 4
  121.     mes_C = "Abril"
  122.    
  123.     Case 5
  124.     mes_C = "Mayo"
  125.    
  126.     Case 6
  127.     mes_C = "Junio"
  128.    
  129.     Case 7
  130.     mes_C = "Julio"
  131.    
  132.     Case 8
  133.     mes_C = "Agosto"
  134.    
  135.     Case 9
  136.     mes_C = "Septiembre"
  137.    
  138.     Case 10
  139.     mes_C = "Octubre"
  140.    
  141.     Case 11
  142.     mes_C = "Noviembre"
  143.    
  144.     Case 12
  145.     mes_C = "Diciembre"
  146.    
  147. End Select
  148.    
  149. tiempo_C = horafin - horainicio
  150.  
  151. 'Datos salida por MsgBox
  152.  
  153. MsgBox tiempo_C & "   minutos realizados." & vbCrLf & vbCrLf _
  154.         & Date & vbCrLf & vbCrLf & "KW-" & semana_C
  155.        
  156. MsgBox horafin & vbCrLf & horainicio & vbCrLf & "________" & vbCrLf & " " & vbCrLf _
  157.         & tiempo_C & vbCrLf & año_C & vbCrLf & dia_C & "  , " & mes_C & vbCrLf & "KW-" & semana_C
  158.        
  159. 'Guardamos en el archivo Horas.dat los datos del contenido de las variables.
  160. GuardarDatos
  161.  
  162. 'Escribimos los datos en el archivo y en la posición
  163. Put #FileFree, RegActual, Horas
  164.        
  165.        
  166. 'Cerramos archivo de datos.
  167.      
  168. Close FileFree
  169.        
  170. End
  171. End Sub
  172.  
  173. Private Sub cmd_Inicio_Click()
  174. x = x + 1
  175. marco = 2
  176. horainicio = Time
  177.  
  178. 'Asignamos los datos de la hora de inicio
  179. Select Case x
  180.  Case 1: horainicio1 = horainicio
  181.  Case 2: horainicio2 = horainicio
  182.  Case 3: horainicio3 = horainicio
  183.          
  184. End Select
  185.  
  186. 'Escribimos los datos en el archivo y en la posición
  187. Put #FileFree, RegActual, Horas
  188. End Sub
  189.  
  190. Private Sub cmd_pausa_Click()
  191.  
  192. i = i + 1
  193. marco = 1
  194. horafin = Time
  195.  
  196. 'Asignamos los datos de la hora de pausa
  197.  
  198.  
  199. 'Asignamos los datos de la hora de inicio
  200. Select Case i
  201.  Case 1: horafin1 = horafin
  202.  Case 2: horafin2 = horafin
  203.  Case 3: MsgBox "     Ejecucion no valida." & vbCrLf & "Esta es la ultima salida presione Detener", _
  204.  vbExclamation, "Guardar datos."
  205.          
  206. End Select
  207.  
  208. 'Escribimos los datos en el archivo y en la posición
  209. Put #FileFree, RegActual, Horas
  210.  
  211.  
  212.  
  213. End Sub
  214.  
  215. Private Sub Form_Load()
  216.  
  217.    x = 0
  218.    i = 0
  219.    conthoras = conthoras
  220.    conthoras = conthoras + 1
  221.    lcdTest.NewLCD Picture1
  222.    
  223.    'Carga el primer registro del archivo
  224. Cargar
  225.  
  226. End Sub
  227.  
  228. Private Sub Cargar()
  229.  
  230. FileFree = FreeFile
  231. Open "Horas.dat" For Random As FileFree Len = Len(Horas)
  232.  
  233. RegActual = 1
  234. ' Almacenamos la posición del último registro
  235. RegUltimo = LOF(FileFree) / Len(Horas)
  236.  
  237. If RegUltimo = 0 Then
  238. RegUltimo = 1
  239. End If
  240.  
  241. End Sub
  242.  
  243. Private Sub GuardarDatos()
  244.  
  245. 'Asignamos los datos de la estructura con el contenido de las variables.
  246. With Horas
  247.  
  248.  ' Variable para del archivo Horas.dat
  249.  
  250. .horainicio1 = horainicio1
  251. .horafin1 = horafin1
  252. .horainicio2 = horainicio2
  253. .horafin2 = horafin2
  254. .horainicio3 = horainicio3
  255. .horafin3 = horafin3
  256. .Totalhoras = conthoras
  257. .dia = dia_C
  258. .semana = semana_C
  259. .mes = mes_C
  260. .año = año_C
  261.  
  262. End With
  263.  
  264. End Sub
  265.  
  266. Private Sub Picture1_Click()
  267.  
  268.    Unload frmLCD
  269.  
  270. End Sub
  271.  
  272. Private Sub Timer1_Timer()
  273.  
  274. If marco = 0 Then
  275.    lcdTest.Caption = "00:00:00"
  276.    ElseIf marco = 1 Then
  277.    lcdTest.Caption = horafin
  278.    Else
  279.    lcdTest.Caption = Time
  280.    
  281.    End If
  282. End Sub

El problema es que no se si en el formulario del MsFlexgrid he de llamar a los datos igual y como tratar o filtrarlos para evitar los tres problemas que comento; de momento lo que estoy haciendo es una rutina llamada "Visualizardatos ()" y otra "Datos ()". :
La "Visualizardatos ()" estoy asignando cada dia de la semana con un número y cada registro de entrada o salida tambien para poder tener una especie de coordenada y poder identificar la celda de MsFlexgrid y con un Select case le inserto su dato obtenido.(1er. problema, como poder indentificarlo dentro de mi Horas.dat).

Y en la segunda rutina "Datos ()", aqui es donde Habro el archivo leo los datos y pretendo una vez identificado cada dato guardarlo en una variable para posteriormente cerrar el archivo. Mi problema es que con la sentencia :

Código vb:
Ver original
  1. Get #FileFree, RegActual, horas

No se si la he de declarar igual que en la del reloj o no (creo que por logica si) pero como trato los registros vacios(dias no trabajados, dias con solo una entrada, etc) este es un punto que me estoy rompiendo los cascos y habriendo el archivo para ver como los guarda, púes eso veo un monton de caracteres irreconocibles y me quedo peor que al principio.

Un saludo

Última edición por XYON126; 12/04/2010 a las 07:29