Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas con DBGrid (https://www.clubdelphi.com/foros/showthread.php?t=40622)

Ricomarz 22-02-2007 08:10:45

Problemas con DBGrid
 
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 [Germán.Estévez] 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

Formato de archivo
 
Bueno, el formato del archivo esta asi:

Formato Primer Archivo
Cita:

65500614433 0102200702470560IVA COMISION -000000000013200000009859009700000000TOTAL DE MOVS. 000012
65500614433 0102200711080224DEP EN EFECTIV +00000000190610000000987724570000022400000000000031237651
Formato Segundo Archivo

Cita:

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 ...

Código:

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

Lepe 28-02-2007 12:01:53

Para una implementación rápida, te aconsejo un tipo record:
Código Delphi [-]
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.
Código Delphi [-]
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

Justo lo que estaba buscando
 
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

Una gran duda sobre impresion
 
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

Progreso Adelante
 
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:
Cita:


-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 )
Código SQL [-]
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


La franja horaria es GMT +2. Ahora son las 05:15:46.

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