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
ezequiel913 ezequiel913 is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 39
Poder: 0
ezequiel913 Va por buen camino
informacion!!

Cita:
Empezado por ecfisa Ver Mensaje
Hola darkone2k4.

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;
  DBGrid1.DataSource.DataSet.First;
  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;

Un saludo.




hola ecfisa!!
solo queria pedirte si podes mandarme un mensaje detallandome mas o menos que se hace con la rutina, osea se que es para exportar los datos del DBgrid a un archivo TXT pero si podes comentar las lineas de codigo puntuales, por ejemplo para que sirve el BOOKMARK, como hacer para que tambien se exporten los nombres de las columnas y que no este todo hacia la derecha, para saber como se maneja, asi no es solo copy-paste, sino saber como funciona.

desde ya muchas gracias!!
saludos
Responder Con Cita
  #2  
Antiguo 02-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
Hola ezequiel913.

Te documento el código linea a linea:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  BM: TBookMarkStr;
  i: Integer;
  s: string;
  ArchTexto: TextFile;
begin
  // Asociar un nombre de archivo a una variable de tipo File
  AssignFile(ArchTexto,'C:\A_LA_DERECHA.TXT');
  // Crear un archivo, abrirlo
  Rewrite(ArchTexto);
  // Guardar posición actual del DataSet
  BM:= DBGrid1.DataSource.DataSet.Bookmark;
  // Desactivar el mostrado en los controles data-aware asociados al DataSet
  DBGrid1.DataSource.DataSet.DisableControls;
  // Posicionarnos en el primer registro del DataSet
  DBGrid1.DataSource.DataSet.First;
  // Mientras el DataSet tenga registros...
  while not DBGrid1.DataSource.DataSet.Eof do
  begin
    s:= ''; // Inicializar cadena a vacío
    for i:= 0 to DBGrid1.FieldCount - 1 do  // desde el 1er al último campo
    begin
      // Concatenar en 's' cada campo con tantos espacios a la izquierda 
      // como le falten al largo actual del campo para llegar al largo declarado
      s:= s + StringOfChar(' ', DBGrid1.Fields[i].DisplayWidth -
                           Length(DBGrid1.Fields[i].AsString)) +
                           DBGrid1.Fields[i].AsString;
    end;
    // Guardar el campo ajustado en el archivo de texto
    Writeln(ArchTexto, s);
    // Desplazarnos al próximo registro del DataSet
    DBGrid1.DataSource.DataSet.Next;
  end;
  // Cerrar archivo.
  CloseFile(ArchTexto);
  // Volver a posición previamente guardada del DataSet
  DBGrid1.DataSource.DataSet.Bookmark:= BM;
  // Activar el mostrado en los controles data-aware asociados al DataSet
  DBGrid1.DataSource.DataSet.EnableControls;
end;
Lo que puede quedar un poco confuso es el uso de StringOfChar, que devuelve n caracteres iguales al especificado.
Si queremos mostrar la palabra 'hola' (de longitud 4) ajustada a longitud 7 rellenando con '@' los lugares faltantes a la izquierda sería:
Código Delphi [-]
   ShowMessage(StringOfChar('@',7-Length('hola'))+'hola'); // muestra: @@@hola 
  //Que es el resultado de concantenar  tantos '@' como le faltan a 'hola'
  //para llegar a una longitud de 7 caracteres y la palabra 'hola'
De todas formas si hay algo en lo que no me expliqué bién, te ruego que me lo hagas saber y gustoso busco otra forma de hacerlo.

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 22:17:34.


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