PDA

Ver la Versión Completa : De una tabla a un archivo texto


robero espinoza
11-10-2003, 02:17:52
Hola a todos espero esten bien, quiero ver si me pueden ayudar con un problema que tengo, quiero pasar de una tabla a un archivo texto los registros que contiene la tabla esto para ese archivo texto me funcione en una importacion que tengo que hacer, asea que tomar la informacion de la tabla y crear un archivo texto y que ahi contenga la informacion de la tabla pero en el archivo, espero me entiendan y me puedan ayudar.
muchas gracias y saludos....

roman
11-10-2003, 02:47:26
Una forma rápida de implementarlo sería recorriendo la tabla y por cada registro agregar una línea al archivo de texto formada por los valores de los campos separados por comas:


var
Lineas: TStringList;
Linea: String;

begin
Lineas := TStringList.Create;

while not Table.Eof do
begin
Linea := '';
for I := 0 to Table.Fields.Count - 1 do
if Linea = ''
then Linea := Table.Fields[I].AsString
else Linea := Linea + ',' + Table.Fields[I].AsString;

Lineas.Add(Linea);
Table.Next;
end;

Lineas.SaveToFile('tuarchivo.txt');
Lineas.Free;
end;


De esta manera obtienes un archivo CSV (Comma Separated Values) que pueden leer muchos programas como por ejemplo Excel.

// Saludos

marcoszorrilla
11-10-2003, 18:43:15
Supongo que te hayas dado cuenta que a nuestro amigo y moderador Román se le olvidó declarar la variable I.


var
Lineas: TStringList;
Linea: String;
I:Integer;
....


Un Saludo.

roman
12-10-2003, 05:50:39
Nada, lo que sucede es que me gusta ahorrar índices y por ello uso uno solo declarado en una variable global.

:D :D

// Saludos

marcoszorrilla
12-10-2003, 10:01:15
Yo también trabajo de esa manera para situaciones en las que necesito repetidamente ciertas variables, las declaro como globales, aunque hay gente que es contraria a esta idea.

Un Saludo,

Mick
12-10-2003, 16:50:49
No tiene sentido usar una variable global porque no se ahorra nada.
El hecho de definir una variable local dentro de la funcion no hace que el programa sea mas lento ni que ocupe mas memoria, es más, el uso de variables globales si que puede hacer que el ejecutable sea mas grande.
Otros problemas de usar esas variables globales:
-Hacen menos entendibles los programas.
-Las funciones que las usen no son Thread Safe.
-El tamaño del ejecutable y la memoria usada es mayor.
-En determinados casos podria ser mas lenta la ejecucion del codigo.

En definitiva, no se gana absolutamente nada por usar variables globales, sino que al contrario se pierde.


Salud2 !!!

marcoszorrilla
12-10-2003, 17:21:04
El hecho de definir una variable local dentro de la funcion no hace que el programa sea mas lento


En mi caso, me refiero a que por ejemplo si utilizo una variable llamada estado, que permite saber cuando abro un formulario si estoy:

Añadiendo
Modificando
Consultando


Simplemente antes de llamar al formulario le paso un valor a esta variable que es de tipo global y esta en unit a parte, y dicha variable me sirve para todos los formularios de toda la aplicación, en mi caso busco la unicidad y la simplicidad, y este es el motivo de trabajar así.

Un Saludo.

roman
13-10-2003, 00:05:09
Posteado originalmente por mi mismo
Nada, lo que sucede es que me gusta ahorrar índices y por ello uso uno solo declarado en una variable global.

:D :D


Noten por favor las caritas sonrientes: yo no uso variables globales para índices. Sin embargo, para casos como el que indica marcoszorrilla sí que las uso. Por ejemplo, en un sistema en el que deseo mantener el id del usuario para poder verificar los derechos que tiene para cada módulo, una variable global me parece apropiada.

Hace poco vi (no recuerdo dónde, quizá aquí mismo) un truquito que no he puesto en práctica pero me pareció ingenioso: este tipo de variables globales que luego no recordamos bien cuáles son, podemos meterlas dentro de una clase:


unit VarGlobales;

interface

type
TGlobales = class
UsuarioId: Integer;
Estado: Boolean;
Etcetera: Char;
end;

var
Globales: TGlobales;

implementation

initialization
Globales := TGlobales.Create;

finalization
Globales.Free;
end.


Des esta manera, incluyendo la unidad VarGlobales en cada módulo qua las necesite, al escribir

Globales.

en el editor de Delphi, se desplegará la lista de donde seleccionaremos la que necesitemos. Así además, en el código quedará claroque estamos usando una variable global:

Globales.Estado

// Saludos