Error al llenar tabla desde archivo txt
Saludos
En un anterior hilo pregunte si era posible llenar una tabla (socios) con datos de un archivo txt y Neftali me respondio: Cita:
Resumiendo me salió el siguiente código El problema es que en tiempo de ejecución me sale el siguiente error "Project miproyecto.exe raised exception class EDBEngineError whyt message Invalid use of keyword" o sea me da error al encontrar un espacio en blanco dentro del texto. ¿Que me falta?:confused: ¿que me sobra?:confused: ¿Que hice mal? Alguien me puede aconsejar Les agradezco de antemano su ayuda |
Yo simplificaría todo, no tengo tiempo para leer el código, pero si un registro es una línea de tu fichero de texto y los campos, tienen un separador o son de longitud fíja.
Leería mediante un bucle las líneas, por cada línea leida, utilizado la función Copy si los campos son de longitud fija iría rellenando los campos de la BD y me ahorraría el paso intermedio de cargarlo en un memo. Un Saludo. |
Cita:
Cita:
Cita:
Otra cosa que estaría bien es saber cómo son las líneas del fichero de texto. ¿Puedes poner dos o tres? Para ver la estructura que tienes, los separadores,... La idea del código es la correcta, recorrer las líneas e ir insertando en la tabla: * Debes tener en cuenta, que los "cortes" de la línea en trozos sean correctos. * Recuerda también que al realizar un Insert, los campos de tipo texto van entre comillas (Revisa la función QuetedStr); * Ten en cuenta que algun campo al realizar los "cortes" puede ser vacío, al insertar ese campo debes cambiarlo por un NULL, sino en la sentencia aparecerán dos comas ( , ) seguidas y te dará error. * Para buscar el sepoarador entre campos y "cortar" usa las funciones Pos Y Copy. |
Y si lo haces así...
Supongamos estas variables ft : textfile; lin : string; y un fichero donde está la información, un código de 5 letras y una descripción, separados por una coma (o lo que sea) Código:
assignfile(ft,DirectoryEdit1.text+'\Anotacion.txt'); |
Detallando un poco mas
1 Archivos Adjunto(s)
Gracias a todos por sus sugerencias, y sobre todo por su paciencia:) .
Les detallo un poco mas el problema. - Los campos son de longitud variable (es decir.. los datos no tienen el mismo largo) por eso voy leyendo el fichero caracter por caracter. - La linea donde aparece el error es : Código Delphi [-]Query2.ExecSql; Archivo Adjunto 517- Una muestra de los datos Gracias de nuevo por su ayuda.. y por seguir ayudandome :p |
Hola,
personalmente en un proyecto utilicé un odbc para acceder a ficheros de texto con formatos tipo registros. Una vez creado el odbc, al que sólo hay que indicar el directorio, cada fichero de texto se trata como una tabla/query. Es una pasada la facilidad con la que se puede manejar este tipo de información, y creo que te puede venir de maravilla. Una vez el usuario te haya seleccionado el fichero, modificas los datos del dataset y los tratas como si leyeras una tabla normal. Echale un vistazo porque creo que merece la pena. Un saludo |
No le veo problema a la estructura de tu fichero txt.
Código:
var l1,l2,l3,l4 : string; |
1 Archivos Adjunto(s)
Insisto, mira un poco lo que te digo en el mensaje anterior.
En el formulario que te adjunto, las tablas que ves en él son realmente ficheros de texto. Incluso se puede hacer maestro-detalle. Si quieres no visualizas los registros y los utilizas a tu antojo Un saludo |
Prueba a cambiar la línea del SQL por esta:
frmNumeroUno.Query2.SQL.Add('insert into socios (ci,Ncta,Nombres,Calf) values('+QuotedStr(ci)+','+QuotedStr(num)+','+QuotedStr(nom)+','+QuotedStr(cat)+')'); Teniendo en cuenta que todos los campos son string. Si hubiera algún numérico no le pongas el QuotedStr() |
Gracias a todos
Al fin lo solucioné..... mejor dicho.. lo solucionaron ustedes :)
Use la sugerencia: Cita:
Cita:
A todos los que dieron sugerencias muchas gracias, les aseguro que las estoy revisando para aprender un poco mas y utilizarlas en futuros programas(muy pronto por cierto).. asi que seguro que pronto sabran de mi de nuevo... :) De nuevo gracias a todos A los moderadores: no se si esto es spam... si es asi mil disculpas |
La franja horaria es GMT +2. Ahora son las 17:05:19. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi