Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-12-2005
YaninaGenia YaninaGenia is offline
Miembro
 
Registrado: jun 2005
Ubicación: Buenos Aires
Posts: 95
Poder: 19
YaninaGenia Va por buen camino
Question SQL a Texto con Delphi

Hola a todos!!!
Necesito pasar el contenido de todo un query a un archivo de texto, y ya he publicado en este foro como se hace, pero si o si es necesario especificarle uno a uno los campos de query.
¿Hay alguna forma de generar el archivo de texto sin tener que meterse con el contenido del query especìficamente?

Yanina Genia
Responder Con Cita
  #2  
Antiguo 20-12-2005
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.932
Poder: 27
delphi.com.ar Va por buen camino
¿A algo así te referís? :
http://www.clubdelphi.com/foros/show...95&postcount=5

O vos querés definir campo a campo?
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 20-12-2005
YaninaGenia YaninaGenia is offline
Miembro
 
Registrado: jun 2005
Ubicación: Buenos Aires
Posts: 95
Poder: 19
YaninaGenia Va por buen camino
Smile Si...

El problema que tengo con esta solución (que me pareciòn muy eficiente) es que no me pone en el archivo los nombres de las columnas y son muy importantes para lo que tengo que hacer, porque sino el usuario veria numeros sueltos y no entenderìa nada (ya sabemos como son los usuarios), ¿Hay alguna forma de agregarle a esa función algo para que pongas los nombres de los campos?

Yanina Genia
Responder Con Cita
  #4  
Antiguo 20-12-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Código Delphi [-]
TuQuery.Fields[x].FieldName
__________________

Responder Con Cita
  #5  
Antiguo 20-12-2005
YaninaGenia YaninaGenia is offline
Miembro
 
Registrado: jun 2005
Ubicación: Buenos Aires
Posts: 95
Poder: 19
YaninaGenia Va por buen camino
Thumbs down ...

Quise decir donde pongo ese código para que en la exportación figuren los nombres de las columnas. Esa propiedad la conozco, tan novata no soy!!!


Yanina
Responder Con Cita
  #6  
Antiguo 20-12-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
_________________________________
__________________

Responder Con Cita
  #7  
Antiguo 20-12-2005
YaninaGenia YaninaGenia is offline
Miembro
 
Registrado: jun 2005
Ubicación: Buenos Aires
Posts: 95
Poder: 19
YaninaGenia Va por buen camino
Red face ...

Jajaja, no llores hijo, ahora me voy a poner a resolverlo porque ya vine de comer y me volviò a andar el cerebro. Es muy facil, en un ratito lo publico.

Yanina
Responder Con Cita
  #8  
Antiguo 20-12-2005
YaninaGenia YaninaGenia is offline
Miembro
 
Registrado: jun 2005
Ubicación: Buenos Aires
Posts: 95
Poder: 19
YaninaGenia Va por buen camino
Cool Listo!!!

Gracias Delphi.com.ar por tu ayuda, aca publico el còdigo que me mandaste un poco modificado:

Código:
procedure DataSetToStream(ADataSet: TDataSet; AStream: TStream);
var
  i: Integer;
  S: string;
begin
  if not ADataSet.IsEmpty then
  begin
	S := '';
	ADataSet.EnableControls;
	try
	  for i := 0 to ADataSet.Fields.Count -1 do
	  begin
		if (i = ADataSet.Fields.Count -1) then
		  S := S + ADataSet.fields[i].FieldName + #13#10
		else
		  S := S + ADataSet.fields[i].FieldName + ';';
	  end;
	  AStream.Write(S[1], Length(S));
	  ADataSet.First;
	  repeat
		S := '';
		for i := 0 to ADataSet.Fields.Count -1 do
		  if ADataSet.Fields[i].Visible then
		  begin
			if (i = ADataSet.Fields.Count -1) then
			  S := S + ADataSet.Fields[i].DisplayText + #13#10
			else
			  S := S + ADataSet.Fields[i].DisplayText + ';';
		  end;
		AStream.Write(S[1], Length(S));
		ADataSet.Next;
	  until ADataSet.Eof;
	finally
	  ADataSet.DisableControls;
	end;
  end;
end;
Con eso me salen las exportaciones con los nombres de las columnas. Le saquè el if que pregunta i > 0 porque no es necesario. Y en lugar del #9 le puse ; porque lo convierto a CSV.

Yanina Genia
Responder Con Cita
  #9  
Antiguo 20-12-2005
Avatar de Thales
Thales Thales is offline
Miembro
 
Registrado: ago 2005
Posts: 48
Poder: 0
Thales Va por buen camino
Cita:
Empezado por YaninaGenia
Quise decir donde pongo ese código para que en la exportación figuren los nombres de las columnas

Yanina
Te muestro una modificación del código de Federico para que muestre los nombres de los campos al principio del fichero

Código Delphi [-]
procedure DataSetToStream(ADataSet: TDataSet; AStream: TStream);
var
  I: integer;
  S: string;
begin
  with ADataSet do
  begin
    // Nombres de Campos
    S := '';
    for I := 0 to Pred(FieldCount) do
    begin
      if I > 0 then S := S + #9;
      S := S + Fields[i].DisplayLabel;
    end;
    S := S + #13#10;
    AStream.Write(S[1], Length(S));
    Open;
    // Registros
    while not Eof do
    begin
      S := '';
      for I := 0 to Pred(FieldCount) do
      begin
        if I > 0 then S := S + #9;
        S := S + Fields[i].DisplayText;
      end;
      S := S + #13#10;
      AStream.Write(S[1], Length(S));
      Next;
    end;
  end;
end;
 
procedure DataSetToFile(ADataSet: TDataSet; AFileName: string);
var
  Stream: TStream;
begin
  Screen.Cursor := crHourglass;
  try
    Stream := TFileStream.Create(AFileName, fmCreate);
    try
      DataSetToStream(ADataSet, Stream);
    finally
      Stream.Free;
    end;
  finally
    Screen.Cursor := crDefault;
  end;
end;

Un saludo
Responder Con Cita
  #10  
Antiguo 20-12-2005
Avatar de Thales
Thales Thales is offline
Miembro
 
Registrado: ago 2005
Posts: 48
Poder: 0
Thales Va por buen camino
oops.. no me di cuenta que había más mensajes en el hilo y que YaninaGenia ya había dado con una solución

Un saludo
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 09:18:29.


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
Copyright 1996-2007 Club Delphi