Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Importar .txt

Estas en el tema de Importar .txt en el foro de Visual Basic clásico en Foros del Web. Hola soy nuevo en esto de visual basic 6, y me gustaria saber como importar un archivo .txt a msflexgrid. Se como exportarlo, y he ...
  #1 (permalink)  
Antiguo 10/04/2010, 12:23
Avatar de Sergio18  
Fecha de Ingreso: abril-2010
Ubicación: No quieras saberlo
Mensajes: 94
Antigüedad: 14 años
Puntos: 0
Importar .txt

Hola soy nuevo en esto de visual basic 6, y me gustaria saber como importar un archivo .txt a msflexgrid.
Se como exportarlo, y he estado googleando y no encuentro una manera de importarlo.

Gracias por adelantado

Salu2

Última edición por Sergio18; 11/04/2010 a las 02:31
  #2 (permalink)  
Antiguo 11/04/2010, 03:19
Avatar de Sergio18  
Fecha de Ingreso: abril-2010
Ubicación: No quieras saberlo
Mensajes: 94
Antigüedad: 14 años
Puntos: 0
Respuesta: Importar .txt

edito: Aqui dejo el exportar

Cita:
Private Sub Command5_Click()
Dim i As Boolean

i = Exportar_FlexGrid_txt(MSFlexGrid1, "practicas.txt", vbTab)
If i Then
MsgBox "Msflexgrid exportado a txt", vbInformation
End If
End Sub


Public Function Exportar_FlexGrid_txt(FlexGrid As Object, _
Path_Txt As String, _
Delimitador As Variant) As Boolean
Dim Fila As Integer
Dim Columna As Integer
Dim Free_File As Integer

Free_File = FreeFile

Open Path_Txt For Output As #Free_File

For Fila = 0 To _
FlexGrid.Rows - 1
FlexGrid.Row = Fila
For Columna = 0 To _
FlexGrid.Cols - 1
FlexGrid.Col = Columna

If Columna > 0 Then
Print #Free_File, Delimitador;
End If

Print #Free_File, vbNullString & FlexGrid.Text & vbNullString;
Next

Print #Free_File, ""

Next
Close
Exportar_FlexGrid_txt = True
Exit Function
Err_Funcion:
Close #Free_File
MsgBox Err.Description, vbCritical
End Function
  #3 (permalink)  
Antiguo 11/04/2010, 04:00
Avatar de XYON126  
Fecha de Ingreso: abril-2006
Mensajes: 272
Antigüedad: 18 años
Puntos: 0
Respuesta: Importar .txt

Hola Sergio18!

En este post http://www.forosdelweb.com/f69/impor...exgrid-796057/ estamos tratando el tema pero mas amplio ya que aqui es tema de .txt y .dat, creo que el problema que tengo yo, es el mismo y erbunson me esta ayudando un montón.

Espero te sirva.

Un saludo
  #4 (permalink)  
Antiguo 11/04/2010, 04:49
Avatar de Sergio18  
Fecha de Ingreso: abril-2010
Ubicación: No quieras saberlo
Mensajes: 94
Antigüedad: 14 años
Puntos: 0
Respuesta: Importar .txt

Hola XYON126

Es que lo que tu quieres hacer es que te salgan los datos una vez habras la ventana yo lo que quiero es al pulsar un boton se importen los datos al msflexgrid.

Gracias igualmente por intentar ayudarme.
Salu2
  #5 (permalink)  
Antiguo 11/04/2010, 05:13
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: Importar .txt

Hola Sergio:

Permíteme que te indique que lo que XYON pretende y lo que pretendes tu es exactamente lo mismo. Todos los caminos conducen a Roma.

Supongamos que tenemos un fichero de datos y queremos cargarlo en un Grid, lo mejor es que hagamos una Rutina que lea el fichero y lo pase al Grid, pero esto lo necesita XYON y lo necesitas tu, la única diferencia entre ambos es que uno lo quiere en el Load y el otro en el Command

Cita:
' Sergio18
Private Sub Command1_Click()
' Ejecutar Rutina de Carga
End Sub

' Xyon126
Private Sub Form_Load()
' Ejecutar rutina de Carga
End Sub

' Sergio y Xion
Public Sub ImportarGrid
'... Bla, Bla, Bla ...
End Sub
Ya que el otro post está mas avanzado si quieres únete a el y vamos comentando.

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #6 (permalink)  
Antiguo 11/04/2010, 07:35
Avatar de Sergio18  
Fecha de Ingreso: abril-2010
Ubicación: No quieras saberlo
Mensajes: 94
Antigüedad: 14 años
Puntos: 0
Respuesta: Importar .txt

Hola erbuson
Tengo una duda, con el codigo que tengo yo de exportar no se podria hacer tambien el de importar cambiando algo?
  #7 (permalink)  
Antiguo 11/04/2010, 08:53
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: Importar .txt

Hola, no hay nada de dificil.

si el proceso de exportar lo que hace es abrir un archivo e ir escribiendo los datos del flexgrid...el proceso de importar es al reves, abris el archivo lo recorres y a medida que lees, vas llenando el flexgrid.

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #8 (permalink)  
Antiguo 11/04/2010, 15:13
Avatar de Sergio18  
Fecha de Ingreso: abril-2010
Ubicación: No quieras saberlo
Mensajes: 94
Antigüedad: 14 años
Puntos: 0
Respuesta: Importar .txt

Hola seba123neo
Lo he cambiado mas o menos al reves pero me sigue sin salir me podrias decir que falla??

Cita:
Private Sub Command6_Click()
Dim blni As Boolean
blni = Importar_practicas_txt(MSFlexGrid1, "practicas.txt", vbTab)
If blni Then
MsgBox "txt importado", vbInformation
End If
End Sub


Public Function Importar_practicas_txt(Path_txt As Object, _
practicas As String, _
Delimitador As Variant) As Boolean
Dim Fila As Integer
Dim Columna As Integer
Dim Free_File As Integer

Free_File = FreeFile

Open Path_txt For Input As #Free_File

For Fila = 0 To _
practicas.Rows - 1
practicas.Row = Fila

For Columna = 0 To _
practicas.Cols - 1
practicas.Col = Columna
'escribe el Delimitador
If Columna > 0 Then
Print #Free_File, Delimitador;
End If

Print #Free_File, vbNullString & practicas.Txt & vbNullString;
Next

Print #Free_File, ""

Next
Close
Importar_practicas_txt = True
Exit Function
Err_Funcion:
Close #Free_File
MsgBox Err.Description, vbCritical
End Function
Me dice que el calificador no es valido y me señala practicas.rows
  #9 (permalink)  
Antiguo 11/04/2010, 15:35
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: Importar .txt

Hola Sergio, te estas empecinando en lo que no es. Te comento que Exportar e Importar son dos cosas muy parecidas y muy diferentes a la vez.

Cuando decides exportar un Grid a un fichero de texto tienes como punto de partida que conoces las Filas que tiene el Grid y las Columnas que tiene cada fila por lo tanto tienes un proceso muy simple.

For Fila = Primera To Ultima
' Guardar las Columnas de la Fila
For Columna = Primera To Ultima
....
Next
' Continuar con la siguiente Fila
Next

En cambio cuando Importas un TXT debes averiguar o por lo menos controlar cuantas columnas vas a necesitar y despues procesar el fichero e ir añadiéndolo al Grid.

Dependerá de como tengas el Txt, etc, es conveniente leer la linea entera de cada registro y procesarla con la funcion Split con lo que consigues una matriz que te indica cuantas columnas necesitaras.

Bueno, es para que te hagas una idea de que de poco te va a servir reutilizar el código de exportar sino que creo que para que tu mismo lo entiendas te conviene mas reescribir el de importar.

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #10 (permalink)  
Antiguo 11/04/2010, 15:49
Avatar de Sergio18  
Fecha de Ingreso: abril-2010
Ubicación: No quieras saberlo
Mensajes: 94
Antigüedad: 14 años
Puntos: 0
Respuesta: Importar .txt

Entonces el for seria:

For Fila = 1 To 4
' Guardar las Columnas de la Fila
For Columna = 1 To 5
Next
Next

Algo asi??
PD:Es que solo llevo 4 dias estudiando visual basic tampoco entiendo mucho
  #11 (permalink)  
Antiguo 11/04/2010, 16:13
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: Importar .txt

El ejemplo que indicas es suponiendo que tienes 4 registros y cada uno de ellos tiene 5 campos diferentes.

Sin embargo debes tener en cuenta que en el Grid las Filas y Columnas empiezan por la numero 0, por lo tanto de ser como supongo, sería.

For Fila = 0 To 3
' Guardar las Columnas de la Fila
For Columna = 0 To 4
' Guardar
Next
Next

Este ejemplo tuyo es para Exportar, no para importar.

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #12 (permalink)  
Antiguo 11/04/2010, 16:17
Avatar de Sergio18  
Fecha de Ingreso: abril-2010
Ubicación: No quieras saberlo
Mensajes: 94
Antigüedad: 14 años
Puntos: 0
Respuesta: Importar .txt

Cita:
El ejemplo que indicas es suponiendo que tienes 4 registros y cada uno de ellos tiene 5 campos diferentes.
Tengo 5 columnas con 4 filas en cada una de ellas con campos diferentes
  #13 (permalink)  
Antiguo 11/04/2010, 16:28
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: Importar .txt

Entonces y siempre que hablamos de Exportar el Grid hacia un Archivo de texto el bucle sería:

' Procesar de la Primera a la última Fila
For Fila = 0 To 3

' Guardar las Columnas de la Fila
For Columna = 0 To 4
' Instruccion Print de Guardar en Archivo
Print Grid.TextMatrix(Fila, Columna);
Next

Next


Pero muy IMPORTANTE si tienes una Fila de Cabecera este proceso también la va a guardar así como si tienes Columnas Fijas.

De todos modos si vas a guardar o leer texto plano, te aconsejaría que le des un vistazo a la propiedad .Clip del MsFlexgrid cuya ayuda de MSDN te copio a continuación

Cita:
Devuelve o establece el contenido de las celdas de la región seleccionada en el control MSHFlexGrid. Esta propiedad no está disponible entiempo de diseño.

Sintaxis

objeto.Clip [= cadena]

La sintaxis de la propiedad Clip consta de las siguientes partes:

Parte Descripción
objeto Expresión de objeto que da como resultado un objeto de la lista Se aplica a.
cadena Expresión de cadena con el contenido del área seleccionada.


Comentarios

La cadena puede almacenar los contenidos de múltiples filas y columnas. En una cadena, el carácter de tabulación, Chr (9), o la constante vbTab indican una nueva celda en una fila. También en una cadena, un carácter de retorno, Chr (13) o vbCR indican el principio de una nueva fila. Utilice la función Chr o las constantes de Visual Basic para incrustar estos caracteres en cadenas.

Cuando coloca datos en un control MSHFlexGrid, sólo afecta a las celdas seleccionadas. Si hay en la región seleccionada más celdas de las descritas en la cadena, las celdas restantes se dejan solas. Si hay más celdas descritas en cadena que en la región seleccionada, se pasa por alto la parte no utilizada de la cadena.
Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #14 (permalink)  
Antiguo 11/04/2010, 16:33
Avatar de Sergio18  
Fecha de Ingreso: abril-2010
Ubicación: No quieras saberlo
Mensajes: 94
Antigüedad: 14 años
Puntos: 0
Respuesta: Importar .txt

Me podrias poner un ejemplo, lo he leido pero no lo entiendo mucho
  #15 (permalink)  
Antiguo 11/04/2010, 16:48
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: Importar .txt

Te comentaba lo del Texto plano, porque es mucho mas facil como te indicaba con la propiedad CLIP, otra cosa sería si pretendes guardar el Grid como en un programa de Planificacion de Horarios que estoy desarrollando estos días y en el que tengo la necesidad de Guardar o Imprimir el Planning con Ajustes, Nombres, Colores, etc.

Adjunto copia de parte de la pantalla para que puedas hacerte una idea de lo que puedes conseguir importar o exportar.

http://lh4.ggpht.com/_UaOp88jX6sk/S8...eenShot001.jpg
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #16 (permalink)  
Antiguo 11/04/2010, 16:56
Avatar de Sergio18  
Fecha de Ingreso: abril-2010
Ubicación: No quieras saberlo
Mensajes: 94
Antigüedad: 14 años
Puntos: 0
Respuesta: Importar .txt

Buff eso es mucho para mi todavia yo solo quiero importar el txt al msflexgrid
  #17 (permalink)  
Antiguo 11/04/2010, 17:03
Avatar de Sergio18  
Fecha de Ingreso: abril-2010
Ubicación: No quieras saberlo
Mensajes: 94
Antigüedad: 14 años
Puntos: 0
Respuesta: Importar .txt

acabo de hacer esto y lo importa pero mal
Cita:
Private Sub Command6_Click()
Open "practicas.txt" For Input As #1
MSFlexGrid1.Text = Input(LOF(1), 1)
Close #1
End Sub
Pero tengo que hacer una funcion ¿no? para que recorrar las filas y columnas
  #18 (permalink)  
Antiguo 11/04/2010, 17:08
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: Importar .txt

La Exportación con la propiedad Clip sería como sigue:

Imaginate que tienes un MsFlexgrid llamado Personas con datos en sus Filas y Columnas, para exportarlo directamente podrías hacer lo siguiente:


Código vb:
Ver original
  1. Private Sub Command1_Click()
  2.   ' Seleccionar la Primera Fila
  3.  Personas.Row = 0
  4.   ' Seleccionar la Primera Columna
  5.  Personas.Col = 0
  6.   ' Seleccionar la última Fila
  7.  Personas.RowSel = Personas.Rows - 1
  8.   ' Seleccionar la última Columna
  9.  Personas.ColSel = Personas.Cols - 1
  10.   ' Abrir el Archivo
  11.  Open "C:\Prueba.txt" For Output As #1
  12.   ' Imprimir la propiedad Clip
  13.  Print #1, Personas.Clip
  14.   ' Cerrar el archivo
  15.  Close #1
  16. End Sub
' Si lo tienes exportado de esta manera, lo puedes importar de un modo similar pero linea a linea no ser que leas todo el archivo, por ejemplo así

Código vb:
Ver original
  1. Private Sub Command1_Click()
  2.   ' Seleccionar la Primera Fila
  3.  Personas.Row = 0
  4.   ' Seleccionar la Primera Columna
  5.  Personas.Col = 0
  6.   ' Seleccionar la última Fila
  7.  Personas.RowSel = Personas.Rows - 1
  8.   ' Seleccionar la última Columna
  9.  Personas.ColSel = Personas.Cols - 1
  10.   ' Variables necesarias, Linea y Registros
  11.  Dim Linea As String, Registros As String
  12.   ' Abrimos el fichero
  13.  Open "C:\Prueba.txt" For Input As #1
  14.   ' Procesamos hasta el final
  15.  While Not EOF(1)
  16.     ' Leemos una linea completa
  17.    Line Input #1, Linea
  18.     ' La añadimos a una variable de memoria con vbCr  al final
  19.    Registros = Registros & Linea & vbCr
  20.   Wend
  21.   ' Cerramos Fichero
  22.  Close #1
  23.   ' Aplicamos la propiedad
  24.  Personas.Clip = Registros
  25. End Sub
Solucionado.


Ten en cuenta que los delimitadores están tal como indica la ayuda que te he copiado antes o sea Chr(9) para separar campos entre columnas y Chr(13) para separar registros

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #19 (permalink)  
Antiguo 11/04/2010, 17:20
Avatar de Sergio18  
Fecha de Ingreso: abril-2010
Ubicación: No quieras saberlo
Mensajes: 94
Antigüedad: 14 años
Puntos: 0
Respuesta: Importar .txt

Ya lo he probado y va perfecto pero tengo que añadir yo las filas y las columnas del txt,si yo añado otra fila al txt esta no se mostrara, como hago para que se muestre sin tener que poner yo todo el rato las columnas o filas.

Cita:
Private Sub Command6_Click()
' Seleccionar la Primera Fila
MSFlexGrid1.Row = 0
MSFlexGrid1.Rows = 5
MSFlexGrid1.FixedRows = 0
' Seleccionar la Primera Columna
MSFlexGrid1.Col = 0
MSFlexGrid1.Cols = 5
MSFlexGrid1.FixedCols = 0
' Seleccionar la última Fila
MSFlexGrid1.RowSel = MSFlexGrid1.Rows - 1
' Seleccionar la última Columna
MSFlexGrid1.ColSel = MSFlexGrid1.Cols - 1
' Variables necesarias, Linea y Registros
Dim Linea As String, Registros As String
' Abrimos el fichero
Open "practicas.txt" For Input As #1
' Procesamos hasta el final
While Not EOF(1)
' Leemos una linea completa
Line Input #1, Linea
' La añadimos a una variable de memoria con vbCr al final
Registros = Registros & Linea & vbCr
Wend
' Cerramos Fichero
Close #1

' Aplicamos la propiedad

MSFlexGrid1.Clip = Registros

End Sub
PD: Muchas Gracias
  #20 (permalink)  
Antiguo 12/04/2010, 12:21
Avatar de Sergio18  
Fecha de Ingreso: abril-2010
Ubicación: No quieras saberlo
Mensajes: 94
Antigüedad: 14 años
Puntos: 0
Respuesta: Importar .txt

Hola otra vez, ahora me gustaria saber como hago para importar datos desde un archivo de access(*.mdb) al msflexgrid

Salu2

Etiquetas: txt
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:24.