puzzleman | |
| 2007-06-15 14:13 - Respuestas: 16 - Tema nº: 2453151
Características: Windows XP Profesional, AMD XP 2600 1GB.
Hola a todos, tengo el siguiente problema: tengo una base de datos en el programa IBM Assistant Filing y lo quiero pasar a una base de datos mas moderna como office, pero no se como. He conseguido sacar los datos a un fichero de texto pero no me lo pone por columnas, seria asi:
PACIENTE....: Dª Mª TERESA Garcia
EDAD........: 25
NºBIOPSIA...: 0523
MEDICO......: DR.F. sanchez
ORGANO......: Riñon
DIAGNOSTICO.: Regular
CIA: ninguna
CODIGO: P
FECHA INFORME.: 05/11/11
f.ENTRADA.....: 04/11/05
OTROS.......: Nada
Y lo tengo todo en un fichero de texto con la informacion seguida una detras de la otra y no se como decirle que quiero que tenga los campos con los nombres como PACIENTE....: , EDAD........: , etc y que me ponga dentro de los campos todos los datos que corresponden.
No se si se podra hacer o con macros o algo. Alguna idea?
Muchas gracias!!
| |
|
|
ebolo | |
|
Re: Pasar de txt de IBM Assistant Filing a Access (Solucionado) - 2007-06-16 11:13 - Respuesta 2
Hola puzzleman, te voy a poner el código para que te cree la tabla y te añada todos los registros a la tabla creada.
Se supone que hay 11 campos para crear, son los que has puesto tú en el ejemplo anterior. Te los crea en el mismo orden que se los encuentra como tipo Texto y d elongitud 50 caracteres. Eso se lo puedes mdificar tú. La tabla que crea se llama DATOs, también le puedes poner tú en el código el nombre que quieras.
Te lo pongo en el evewnto de un botón de comando 'Al hacer Click.
La ruta del txt se la tienes que poner tú la buena, donde pone ruta entre comillas.
Private Sub Comando2_Click()
Dim ruta As String, num As Integer, lee As String, q, l As Integer
Dim campo(100) As String, valor(100), consulta2, consulta1, consulta As String
ruta = "turuta\archivo.txt"
num = FreeFile
Open ruta For Input As num
q = 1
While Not EOF(num)
Input #num, lee
If InStr(lee, ":") Then
If q < 12 Then campo(q) = Left$(lee, InStr(lee, ":"))
valor(q) = Right$(lee, Len(lee) - InStr(lee, ":") - 1)
q = q + 1
End If
Wend
Close num
consulta = "CREATE TABLE DATOS ("
consulta1 = "INSERT INTO DATOS("
For l = 1 To q - 1
If l < 12 Then
If InStr(campo(l), ".") = 0 Then
campo(l) = Left$(campo(l), Len(campo(l)) - 1) & ".:"
End If
consulta = consulta & "[" & Left$(campo(l), InStr(campo(l), ".") - 1) & "] TEXT(50),"
consulta1 = consulta1 & "[" & Left$(campo(l), InStr(campo(l), ".") - 1) & "],"
End If
Next l
consulta = Left$(consulta, Len(consulta) - 1) & ")"
CurrentDb.Execute consulta
consulta1 = Left$(consulta1, Len(consulta1) - 1) & ") VALUES("
For l = 1 To q - 1
consulta2 = consulta2 & "'" & valor(l) & "',"
If l Mod 11 = 0 Then
CurrentDb.Execute consulta1 & Left$(consulta2, Len(consulta2) - 1) & ")"
consulta2 = ""
End If
Next l
End Sub
Está probado en acces97 y funciona bien. Si tienes alguna pega lo dices.
Saludos.
| |
|
|
ebolo | |
|
Re: Pasar de txt de IBM Assistant Filing a Access (Solucionado) - 2007-06-16 11:15 - Respuesta 3
Se me ha olvivado comentarte que lo he puesto para 100 registros; si son más debes de ponerle el nº que sea ó superior en la línea que pone DIm campo(100), valor (100)....
| |
|
|
puzzleman | |
|
Re: Pasar de txt de IBM Assistant Filing a Access (Solucionado) - 2007-06-16 12:29 - Respuesta 4
Muchas graciaas! Voy a probarlo ahora mismo! Me has salvado la vida! jeje ;)
Saludos! | |
|
|
puzzleman | |
|
Re: Pasar de txt de IBM Assistant Filing a Access (Solucionado) - 2007-06-16 12:38 - Respuesta 5
Estoy un poco verde con esto, y no se como creo un boton en access (no hablas de VB no?) que le doy a crear macro?
Gracias de nuevo y saludos! | |
|
|
|