Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-06-2011
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.964
Poder: 29
delphi.com.ar Va camino a la fama
Cita:
Empezado por darkone2k4 Ver Mensaje
La información a exportar primero debe ser visualizada en un DBGRID.
Sé como recorrer el DBGRID y pasar los datos al archivo TXT, pero la exportación debe realizarse con ciertas condiciones, como por ejemplo:
1.- Los campos se deben justificar a la derecha.
2.- Los campos deben ir de forma continua, sin ningún tipo de separador. Esto lo sé hacer.
3.- Cada campo tiene su tamaño específico al momento de exportar.
Un poco tarde, pero... ¿Has visto mis componentes Firesoft ExportSuite?

Uno de ellos TDataToAscii hace exactamente lo que pides!... Puedes asignarle las columas de un DBGrid o bien definir campo a campo de forma explícita o bien puedes dejar que el componente los tome autmáticamente del dataset!



Cita:
Empezado por darkone2k4 Ver Mensaje
1.- Los campos se deben justificar a la derecha.
Cada campo tiene la propiedad Alignment que la puedes asignar o la copia del campo/columna asignado

Cita:
Empezado por darkone2k4 Ver Mensaje
2.- Los campos deben ir de forma continua, sin ningún tipo de separador.
Si defines las propiedades Separator y Quote = #0 del TDataToAscii no escribe estos valores.


Cita:
Empezado por darkone2k4 Ver Mensaje
3.- Cada campo tiene su tamaño específico al momento de exportar.
Cada campo tiene la propiedad FixedLength que es copiada automáticamente de la propiedad DisplayWidth.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #2  
Antiguo 03-06-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
hola ecfisa!!!

Ante todo gracias por la explicacion que me diste en el hilo.

ahora bien, necesito si podes explicarme para que sirve la variable BM de tipo TBookMarkStr, tambien como hacer para que no lo

tire todo hacia la derecha,y por ultimo para que tambien exporte el nombre de las columnas del DBGrid. con eso no te molesto mas.
te vuelvo a repetir, muchisimas gracias por la explicacion anterior.

saludos.

Hola ezequiel913.

Tal como me solicitaste por correo privado intentaré explicarte los tres puntos que consultas.

1) Marcas de posición
Empecemos por TBookmark de tipo Pointer, que puede almacenar la posición de un registro de un TDataSet y por lo tanto regresar a él despues de realizar algún desplazamiento en el DataSet. Es decir que nos permite 'marcar' un punto del DataSet para luego retornar a él.

Su uso va aparejado de tres métodos: GetBookmark, GotoBookmark y FreeBookmark.
GetBookmark nos permite obtener la posición del registro actual del DataSet.
GotoBookmark nos posiciona en el registro previamente guardado en Bookmark
FreeBookmrk libera el recurso utilizado.

Ejemplo:
Código Delphi [-]
...
var
  BM: TBookmark;
begin
  BM:= DataSet.GetBookmark;   // guardar en BM la posición del registro actual
  try
    while not DataSet.Eof do  // desplazarse hasta el fin del DataSet
      DataSet.Next;
  finally
    DataSet.GotoBookmark(BM); // volver al registro almacenado en BM
    DataSet.FreeBookmark;     // liberar el recurso
  end;
end;

Pero existe el tipo TBookmarkStr con igual finalidad y resultado.TBookmarkStr es de tipo string (no Pointer) y usándolo, el ejemplo anterior quedaría:
Código Delphi [-]
...
var
  BM: TBookmarkStr;
begin
  BM:= DataSet.Bookmark;     // guardar en BM la posición del registro actual
  while not DataSet.Eof do   // desplazarse hasta el fin del DataSet
    DataSet.Next;
  DataSet.Bookmark:= BM;     // volver al registro almacenado en BM.
end;
Como verás este es más simple de usar.

2) Texto a la derecha o izquierda.
Simplificando es sólo una manipulación de cadenas de caracteres. Por ejemplo si quiero ajustar un string a una longitud de 30 caracteres y este tiene 12,
le faltan 18 para completar los 30. Entonces:

Completar 30 caracteres con contenido a la izquierda:
Código Delphi [-]
var
 st: string;
begin
  st:= 'TBookmarkStr';
  st:= StringOfChar(' ',30-Length(st)) + st; 
  // ahora st vale '                    TBookmarkStr'

Completar 30 caracteres con contenido a la derecha:
Código Delphi [-]
var
  st: string;
begin
  st:= 'TBookmarkStr';
  st:= st + StringOfChar(' ',30-Length(st)); 
  // ahora st vale 'TBookmarkStr                     '

Centrar contenido en 30 caracteres:
Código Delphi [-]
var
  st: string;
begin
  st:= 'TBookmarkStr';
  st:= StringOfChar('.',(30-Length(st)) div 2)
       +st+
       StringOfChar('.',(30-Length(st)) div 2);
   // ahora st vale '       TBookmarkStr         '
  ...
end;

3)Para exportar el título de las columnas agregamos: (texto en negrita)
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  BM: TBookMarkStr;
  i: Integer;
  s: string;
  ArchTexto: TextFile;
begin
  AssignFile(ArchTexto,'C:\A_LA_DERECHA.TXT');
  Rewrite(ArchTexto);
  BM:= DBGrid1.DataSource.DataSet.Bookmark;
  DBGrid1.DataSource.DataSet.DisableControls;
  // Comienza exportar titulos de columnas
  s:= '';
  for i:= 0 to DBGRid1.Columns.Count -1 do
    s:= s + StringOfChar(' ', DBGrid1.Fields[i].DisplayWidth-
                         Length(DBGrid1.Columns[i].Title.Caption)) +
                         DBGrid1.Columns[i].Title.Caption;
  Writeln(ArchTexto, s);
  Writeln(ArchTexto);
  // Fin exportar titulos de columnas
  DBGrid1.DataSource.DataSet.First;
  for i:= 0 to DBGrid1.Column
  while not DBGrid1.DataSource.DataSet.Eof do
  begin
    s:= '';
    for i:= 0 to DBGrid1.FieldCount - 1 do
    begin
      (* llenar con blancos a la izquierda (largo físico de campo - largo) y concatenar *)
      s:= s + StringOfChar(' ', DBGrid1.Fields[i].DisplayWidth -
                           Length(DBGrid1.Fields[i].AsString)) +
                           DBGrid1.Fields[i].AsString;
    end;
    Writeln(ArchTexto, s); (* guardar campos formateados del registro  *)
    DBGrid1.DataSource.DataSet.Next;
  end;
  CloseFile(ArchTexto);
  DBGrid1.DataSource.DataSet.Bookmark:= BM;
  DBGrid1.DataSource.DataSet.EnableControls;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
exportar reporte a un archivo con formato ebeltete Impresión 7 10-08-2024 00:46:21
Exportar en formato XBRL cincosoft Impresión 1 14-01-2016 20:52:12
Exportar a Excel con formato numérico Viky Varios 7 08-06-2011 21:01:38
Exportar un DBGRID a excel con formato de fecha Luis Castro Varios 3 21-01-2011 21:54:38
Exportar a Excel en formato .xls Parabol77 Varios 3 23-10-2010 01:32:23


La franja horaria es GMT +2. Ahora son las 10:09:25.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi