puzzleman | |
| 2007-06-16 12:52 - Respuestas: 16 - Tema nº: 2453151
Tengo hecho el boton con el siguiente codigo en el evento on click
Option Compare Database
Private Sub Comando0_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 = "c:\prueba.txt"
num = FreeFile
Open ruta For Input As num
que = 1
While Not EOF(num)
Input #num, lee
If InStr(lee, ":") Then
If que < 12 Then campo(q) = Left$(lee, InStr(lee, ":"))
valor(q) = Right$(lee, Len(lee) - InStr(lee, ":") - 1)
que = que + 1
End If
Wend
Close num
consulta = "CREATE TABLE DATOS ("
consulta1 = "INSERT INTO DATOS("
For l = 1 To que - 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 que - 1
consulta2 = consulta2 & "'" & valor(l) & "',"
If l Mod 11 = 0 Then
CurrentDb.Execute consulta1 & Left$(consulta2, Len(consulta2) - 1) & ")"
consulta2 = ""
End If
Next l
On Error GoTo Err_Comando0_Click
DoCmd.GoToRecord , , acFirst
Exit_Comando0_Click:
Exit Sub
Err_Comando0_Click:
MsgBox Err.Des-c-r-i-p-tion
Resume Exit_Comando0_Click
End Sub
Pero al ejecutarlo me sale error:
Se ha producido el error '5' en tiempo de ejecucion
Argumento o llamada a procedimiento no valida
y se me marca en el depurardor la linea:
valor(q) = Right$(lee, Len(lee) - InStr(lee, ":") - 1)
Tengo el office 2007 sera por eso?
Gracias de nuevo! | |
|
|
puzzleman | |
|
Re: Pasar de txt de IBM Assistant Filing a Access (Solucionado) - 2007-06-16 12:54 - Respuesta 7
Por cierto una cosilla, los campos diagnostico y otros pueden tener dos lineas con salto de linea en ellos influye en algo?
Gracias | |
|
|
puzzleman | |
|
Re: Pasar de txt de IBM Assistant Filing a Access (Solucionado) - 2007-06-16 13:54 - Respuesta 8
Bueno ya he solucionado el problema, era cuestion de que habia unas variables (q y que) que tenian que ser la misma y no lo eran. Ahora me falla porque los campos no pueden estar vacios.
Asi lo tengo ahora:
Private Sub Comando0_Click()
Dim ruta As String, num As Integer, lee As String, que, l As Integer
Dim campo(300) As String, valor(8000), consulta2, consulta1, consulta As String
ruta = "c:\prueba.txt"
num = FreeFile
Open ruta For Input As num
que = 1
While Not EOF(num)
Input #num, lee
If InStr(lee, ":") Then
If que < 8000 Then campo(que) = Left$(lee, InStr(lee, ":"))
valor(que) = Right$(lee, Len(lee) - InStr(lee, ":") - 1)
que = que + 1
End If
Wend
Close num
consulta = "CREATE TABLE DATOS ("
consulta1 = "INSERT INTO DATOS("
For l = 1 To que - 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 que - 1
consulta2 = consulta2 & "'" & valor(l) & "',"
If l Mod 11 = 0 Then
CurrentDb.Execute consulta1 & Left$(consulta2, Len(consulta2) - 1) & ")"
consulta2 = ""
End If
Next l
On Error GoTo Err_Comando0_Click
DoCmd.GoToRecord , , acFirst
Exit_Comando0_Click:
Exit Sub
Err_Comando0_Click:
MsgBox Err.Des-c-r-i-p-tion
Resume Exit_Comando0_Click
End Sub
Gracias de nuevo!! | |
|
|
puzzleman | |
|
Re: Pasar de txt de IBM Assistant Filing a Access (Solucionado) - 2007-06-16 14:09 - Respuesta 9
Esto ya esta casi perfecto muchas gracias! Te comento para que veas lo que me da problemas:
este es un ejemplo de lo que tengo y siento que este en mayusculas ;)
PACIENTE....: D.RAFAEL RUIZ
EDAD........: 34
NºBIOPSIA...: 386
MEDICO......: DR.BRUNO SAEZ
ORGANO......: RECTO
DIAGNOSTICO.: TEJIDO DEGRANULACION Y MUY ESCASOS FRAGMENTOS DE EPITELIO CON D
MOD SE RECOMIENDA NUEVA BIOPSIA
CIA: ASISA
CODIGO: R
FECHA INFORME.: 05/04/11
f.ENTRADA.....: 05/04/05
OTROS.......:
En el campo diagnostico hay dos lineas y la segunda que empieza por MOD SE.... no me la coje.
En el campo OTROS si no pone nada me da error, supongo q habria que comprobar los campos y si es vacio que meta el caracter espacio en blanco no?
He tenido que cambiar lo de TEXT(50) por TEXT(200) porque no me cogia todo el texto, ( El limite cual es 256? y si necesito mas en alguno?
Muchas gracias de verdad que me has ayudao muchisimooo!! | |
|
|
puzzleman | |
|
Re: Pasar de txt de IBM Assistant Filing a Access (Solucionado) - 2007-06-16 14:21 - Respuesta 10
Por cierto me falla al sacar el nombre del campo f.ENTRADA y lo saca bien pero al crearlo lo crea como f solo. Has puesto el . como separador no?
A unas malas con un editor de texto cambio f.ENTRADA por f-ENTRADA por ejemplo y ya esta.
Saludos! | |
|
|
|