Ver la Versión Completa : Problemas con DBGrid
Ricomarz
22-02-2007, 08:10:45
Hola Buenas Noches para unos y dias para otros ...
Quisiera ver si alguien me puede ayudar con un problema que tengo con el DBGrid, les explico :
Tengo un archivo.txt el cual contiene cierta informacion, la cual obtengo y las asigno a unas variables.
Lo siguiente que he intentado hacer es el de insertar esos datos en un BDGrid pero no mas no puedo .... no se como hacerle jeje .. Bueno como no me salia opte por un ListBox con el cual si logre agregar los datos, pero quiero agregar los datos en un DBGrid tmb ... :)
Espero puedan ayudarme ...
saludos
P.D="Si pueden mandarme sus sugerencias a mi correo se los agradecere mucho, herectis@hotmail.com "
marcoszorrilla
22-02-2007, 08:18:42
Un DbGrid es un control para bases de datos, aunque también puede acceder ficheros de texto, separados por comas, tabulaciones...., me da la impresión que lo que estás buscando es un StringGrid.
Un Saludo.
Neftali
22-02-2007, 11:24:52
Siguiendo con lo que comenta Marcos, estaría bien que describieras qué formato tiene el archivo de texto (por si tiene estructura de tabla) y cómo lo quieres almacenar en el DBGrid.
También estaría bien que explicaras cómo lo estás intentando hacer (código).
fjcg02
22-02-2007, 23:44:50
Para poder realizar lo que quieres, yo lo hago de la siguiente manera:
- Creo un odbc para ficheros de tipo texto. Te pide el directorio, le indicas los separadores de campos (;,tabulador, ',', ...), y todos los archivos que hay en el directorio los toma como tablas.
- En la aplicación puedes utilizar cualquier motor de bbdd que maneje odbc ( bde, ado, ...)
A partir de ese momento, añades querys, datasets, dbgrids, ... y los tratas como si fueran tablas normales. Tiene alguna limitación obviamente, pero para leer información es más que suficiente. Permite hacer group by, order by, ....
Espero que te sirva de ayuda.
Un saludo
Edito: Como es que un pringao como yo corrijo a marcos y a neftali ??
Ricomarz
28-02-2007, 00:36:21
Bueno, el formato del archivo esta asi:
Formato Primer Archivo
65500614433 0102200702470560IVA COMISION -000000000013200000009859009700000000TOTAL DE MOVS. 000012
65500614433 0102200711080224DEP EN EFECTIV +00000000190610000000987724570000022400000000000031237651
Formato Segundo Archivo
0709018000000000000315410780000000000000.000000000000000.000000000001851.100001470592007-01-17ENSENADA 5059EF
0709018000000000000315448200000000000000.000000000000000.000000000001906.100002499502007-01-17RODOLFO 6610EF
Asi es como obtengo los datos que quiero del primer y segundo formato, y los asingo a una variable, para despues agregarlos al dbgrid ...
procedure Bancomer();
Var
Fichero : TextFile;
Linea,dig,imp,fec,horas: String;
ref,fol,lon,i:integer;
begin
If FileExists ('D:\Proyectos\StandandOn\Caja Permanente\LeerArchivo\bancomer.txt') Then
begin
AssignFile (Fichero,'D:\Proyectos\StandandOn\Caja Permanente\LeerArchivo\bancomer.txt');
Reset (Fichero);
While not Eof(Fichero) Do
Begin
Readln(Fichero,Linea);
//Agrego los datos a variables
ref:=StrToInt(Copy(Linea,20,6));
dig:=Copy(Linea,26,2);
imp:=Copy(Linea,69,7);
fol:=StrToInt(Copy(Linea,80,5));
fec:=Copy(Linea,85,10);
horas:= FormatDateTime('hh:mm:ss', Time);
//Agrego el contenido de las variables a un ListBox
Form1.ListBox.Items.Add(' '+ IntToStr(Abs(ref)) + ' ' + dig + ' ' + imp + ' ' + IntToStr(Abs(fol)) + ' ' + fec + ' ' + horas);
end;
CloseFile (Fichero);
end
Else
Showmessage ('El fichero no existe')
end;
Bueno aqui sta la forma en que hago la insercion de los datos al ListBox, pero lo que necesito ahora es agregarlos a un DBGrid, he intentado pero no se como hacerle... Espero puedan ayudarme ... Por que la verdad me urge hacerlo antes del jueves ...
Saludos ...
Ricomarz
Para una implementación rápida, te aconsejo un tipo record:
type TImportado = record
ref: integer;
dig:string;
imp:=string;
fol:=integer;
fec:=TDate;
horas: TTime;
end;
Cuando lees del archivo, en lugar de usar variables sueltas usas un Record de este tipo, y ahora creas un procedimiento que añada un registro a la base de datos:
Supongo que el DBGrid está apuntando a Tabla1.
procedure AnadeRecord( Datos:TImportado);
begin
Tabla1.Append;
tabla1CampoREf.asInteger := datos.ref;
tabla2CampoDig.asString := datos.dig;
....
Tabla1.Post;
end;
También se puede usar sqls para la inserción, que quizás sea más eficiente, pero esto es lo más rápido de implementar.
Saludos
MikyVato
28-02-2007, 19:58:22
Hola, justo tengo un problema muy similar. Tengo un archivo de texto separado por tabulaciones y me gustaria mostrarlo en un DBgrid pero no se como hacerlo, sino me equivoco Marcos hace mension a esto pero no explica el como hacerlo. Una vez que tenga el dbgrid cargado con el archivo de texto debo imprimir una especie de ticket con cada elemento que se cargue en la grilla.
Bueno creo que mate dos pajaros de un tiro, espero puedan ayudarme
fjcg02
28-02-2007, 23:54:53
Respecto a los archivos que no tienen un caracter que separa los campos, no estoy seguro, pero cuando éstos vienen separados por comas, punto y coma, tabulador, etc, es tal y como lo explico.
Una vez definido el odbc, cada fichero txt se convierte en una tabla, que puede ser manejada vía querys.
Un saludo
enriqueangulo
02-03-2007, 19:19:59
instale el Queryprint7, y tengo un dbgrid. Mi problema esta que cuando imprimo el dbgrid si lo imprime pero corto, osea le falta parte de una columna.
Si alguno de ustedes me podría ayudar a solucionar esto, les estaría agradecido.
MikyVato
02-03-2007, 20:48:17
Hola, quería comentarles ya logre conectar mi archivo de texto separado con tabulaciones con mi ADOTable pero e aqui que tengo un problemita, va en realidad varios. Primero muestro la forma que tiene mi archivo de texto asi vamos aclarando dudas:
-1 784745 1 P-0070 C-004 400 4.1 27.4 5.8 9.3 28.3 363 81.5 72 7.8 5 1 8.1 33 413 1 1 2307 2.1 41 1 A C CN21 1 -115 10651 670627 12 10651 TU 2006 IPC S AG 41-2
Esta es solo una línea del archivo, de este archivo solo necesito me muestre tres columnas que son la segunda, tercera y la nro 25, cada archivo contiene al menos 150 líneas, además hago notar que el archivo no tiene encabezado es decir las columnas tabuladas no contienen rotulo o titulo, si quiero agregar un rotulo a la columna del dbgrid éste no muestra nada (por que??), como puedo hacer un querry para seleccionar solo las columnas que me interesan??.
Y por ultimo y ya para colmar el vaso, quiero lograr imprimir un ticket de cada línea obtenida en una impresora que esta en Red
Vaya no quiero ser abuso pero estoy un poco perdido, espero puedan ayudarme gracias.........
fjcg02
02-03-2007, 23:38:41
Creo recordar que para visualizar sólo un par de campos puedes hacer dos cosas:
1.- Si usas un ado table, incluir en el grid sólamente los campos que quieras; ya sabes, boton derecho en el grid y añadir 3 columnas , poniendo el dato Title-Caption ( titulo) que quieras en cada campo.
2.- Si usas un ADOQuery, puedes hacer lo siguiente, teniendo en cuenta que al no haber primer registro de campos, se numeran 1,2,3, y así sucesivamente ( te hablo de memoria )
select [1] as Campo1, [2] as Campo2, [5] as Codigo, [27] as ZYZ from archivo.txt
Para imprimir, habrás de crear un report con el QReport, una vez creado, imprimirlo.
Espero haberte ayudado.
Un saludo
vBulletin v3.6.8, Derechos ©2000-2013, Jelsoft Enterprises Ltd.