Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Armar cadena con datos de un query (https://www.clubdelphi.com/foros/showthread.php?t=74226)

oscarac 06-06-2011 16:43:50

Armar cadena con datos de un query
 
buenos dias
el titulo parece facil, pero el query tiene diferentes tipos de datos
entonces me gustaria tener ideas de como hacr lo que necesito (armar una cadena con los campos de un query)

estaba haciendo mas o menos esto

Código Delphi [-]
 
    qryTemporal.Close;
    qryTemporal.SQL.Clear;
    qryTemporal.sql.Add(StrSql);
    qryTemporal.Open;
    qryTemporal.First; // Por siacaso
    AssignFile( F, ExtractFilePath( Application.ExeName ) + 'prueba.txt' );
    while not qryTemporal.Eof do
    begin
    for i:= 0 to qryTemporal.FieldCount do
      begin
         if tipodedato de qryTemporal.Fields[i].Value = Fecha Then
             _Cadena := _Cadena + DatetoStr(qryTemporal.Fields[i].Value + '¦')
         if tipodedato de qryTemporal.Fields[i].Value = Float Then
             _Cadena := _Cadena + FloatToStr(qryTemporal.Fields[i].Value + '¦')
         if tipodedato de qryTemporal.Fields[i].Value = Integer Then
              _Cadena := _Cadena + inttostr(qryTemporal.Fields[i].Value + '¦')
         if tipodedato de qryTemporal.Fields[i].Value = string Then
            _Cadena := _Cadena + qryTemporal.Fields[i].Value + '¦';
      end;
    end;


alguna idea?

oscarac 06-06-2011 16:51:12

mmmm
lo que pretendo hacer es generar un archivo de texto el cual se envie por mail y pueda ser leido en otra computadora con el fin de actualizar la informacion

ahora la pregunta seria.....

si todo lo transformo en cadena, como sabre que tipo de dato "Original" para poder grabarlo en la base de datos

mmm me parece que tendre que identificar cada uno de los campos para cuando actualice la informacion

oscarac 06-06-2011 16:58:59

encontre esto

Código Delphi [-]
 
 if (qryTemporal.Fields[i].DataType = ftString) then

ahora la cuestion se me complica en el uso del archivo de texto que al leerlo como saber el tipo de dato original

maeyanes 06-06-2011 18:02:21

Hola...

Si ya sabes cuales son los tipos de datos de los campos, no debe ser dificil lo que buscas hacer.

Podrías hacer algo como esto:

Código Delphi [-]
procedure ExportData(const TableName: string);
var
  I: Integer;
  ExportedData: TStringList;
  Line: string;
  Query: TQuery; // Puedes cambiarlo por el tipo que uses.

begin
  Query := TQuery.Create(nil);
  try
    // Configuras el componente para que use la conexión a la base de datos.
    Query.SQL.Text := Format('select * from %s', [TableName]);
    Query.Open;
    Query.First;
    ExportedData := TStringList.Create;
    try
      while not Query.Eof do
      begin
        Line := '';
        for I := 0 to Pred(Query.FieldCount) do
          Line := Format('%s%s,', [Line, Query.Fields[i].Value]);
        Delete(Line, Lenght(Line), 1); // Eliminamos la coma final
        ExportedData.Add(Line);
        Next
      end;
      ExportedData.SaveToFile(TableName + '.txt') // o .csv
    finally
      ExportedData.Free
    end
  finally
    Query.Free
  end
end;

Y ya para leer los datos, solo tienes que hacer un método que lea el archivo de texto y obtenga el valor de cada campo, sabiendo que cada valor está separado por una coma (,).

Te recomiendo que leas sobre los archivos de valores separados por comas (csv).

Espero te sirva.



Saludos...


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

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