Delphi - Copiar BD Access a fichero texto

 
Vista:

Copiar BD Access a fichero texto

Publicado por daynel (1 intervención) el 27/04/2005 03:59:14
Este código me lo bajé y no me funciona, si alguien me pudiera decir que le falta, he probado de varias formas y nada....


procedure TForm1.Button1Click(Sender: TObject);

procedure GrabaDelimitado( Datos:TDatasource;
Fichero: string;
Delimitador:char);
var
f : textfile;
n : integer;
Linea : string;
begin
AssignFile(f,Fichero);
Rewrite(f);

With Datos.DataSet do
begin
DisableControls;
{Vamos al primer registro}
{First record}
First;
{Vamos registro a registro, hasta el final}
{From first to last, one by one}
While Not Eof do
begin
Linea:='';
{Recorremos todos los campos del registro}
{all field of the record}
for n:=0 to FieldCount-1 do
begin
If (Fields[n] is TBlobField) or
(Fields[n] is TGraphicField) or
(Fields[n] is TMemoField) or
(Fields[n].IsNull)
then
Linea:=Linea+Delimitador
else
Linea:=Linea+Delimitador+Fields[n].AsString;
end; {Del For}
Linea:=Copy(Linea,2,Length(Linea)-1);
Memo1.Lines.Add(Linea);
writeln(f,Linea);
Next;
end; {Del While}
EnableControls;
end; {Del With}
CloseFile(f);
end;

begin
GrabaDelimitado(DataSource1,'c:\kk\Texto.txt',',');
end;


A petición de un usuario, que me pedia algo así para tablas Paradox:
Ya puestos, gracias a un DataSource... sirve para cualquier dataset al que esté asociado.

La función genera un fichero de texto, en el que graba todos los registros de la base de datos asociada al DataSource, generando una linea por cada registro, y separando los campos con un delimitador dado.

NOTA: La función se salta los campos binarios (memo, imágenes, blobs, etc).



Cosas a tener en cuenta: si en un campo de texto, tienes algun caracter igual que el delimitador que has elegido...tendrás problemas.
Por ejemplo, si como delimitador usas una coma ',' y en algun campo de texto tienes algún registro que tenga alguna coma en el texto... pues el resultado estará masl delimitado.
Aunque supongo que no te será problema usar otro delimitador... o usar un delimitador de varios caracteres, cambiando el parámetro char de la función por string.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder