Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Como pasar el contenido de unos campos a una tabla TXT

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Como pasar el contenido de unos campos a una tabla TXT Responder citando

Hola a todos,

Tengo el siguiente código dentro de un for que recorre "tabla" y coje los campos (1..Cool para guardarlos en "tabla_txt"

char linea_txt[1000];

El problema consiste en que "linea_txt" solo recoje parte del string que se monta con sprintf dejando el resto fuera.

tbla_txt->Insert();
sprintf(linea_txt,"%-19.19s %20.20s %3.3s %2.2s %2.2s %6.6i %10.2f %10.2f",
tabla->FieldByName("campo1")->AsString,
tabla->FieldByName("campo2")->AsString,
tabla->FieldByName("campo3")->AsString,
tabla->FieldByName("campo4")->AsString,
tabla->FieldByName("campo5")->AsString,
tabla->FieldByName("campo6")->AsInteger,
tabla->FieldByName("campo7")->AsFloat,
tabla->FieldByName("campo8")->AsFloat);
tbla_txt->Fields[0]->AsString=linea_txt;
tbla_txt->Post();

¿Alguien podría decirme cual es el problema ??, porque he mirado y no le encuentro

¿Se podría hacer esto mismo con un TStringList?.

Un saludo y gracias

Volver arriba
Mensaje    Asunto: Como pasar el contenido de unos campos a una tabla TXT Responder citando

// La forma de hacerlo con un TSringList sería de la siguiente manera.
// Para este caso "Campo1" y "Campo2" contienen registros de tipo "int",por su parte "Campo3" contiene registros de tipo "float".


TStringList *TXT = new TStringList();
// Consulta Tabla1 desde su inicio hasta el último registro

Table1->First();
while (!Table1->Eof)
{
TXT->Add(IntToStr(Table1->FieldByName("CAMPO1")->AsInteger) + "\t" +
IntToStr(Table1->FieldByName("CAMPO2")->AsInteger) + "\t" +
FloatToStr(Table1->FieldByName("CAMPO3")->AsFloat) + "\n"));
Table1->Next();
}
// Debes insertar el componente SaveDialog en tu form

SaveDialog1->Title = "Guardar TXT";
SaveDialog1->DefaultExt = String("txt");
if (SaveDialog1->Execute())
{
TXT->SaveToFile(SaveDialog1->FileName);
}
delete TXT;

Espero que te sirva
Saludos desde Chihuahua, México
Atte Daniel

Volver arriba
Mensaje    Asunto: Como pasar el contenido de unos campos a una tabla TXT Responder citando

Muchas gracias Daniel,


He conseguido hacerlo sin problemas.
Pero me han aparecido dos nuevas consultas:

1ª- ¿habría alguna posibilidad de mostrar los campos en columnas?

2ª- ¿Se podría inicializar TXT, es decir, ponerla en blanco sin tener que borrarla?

Un saludo y gracias

Volver arriba
Mensaje    Asunto: Como pasar el contenido de unos campos a una tabla TXT Responder citando

Hola Pepe.
En el procedimiento anterior se crea un TXT con los campos como columnas y sus correspondientes registros en las filas.
¿Deseas incluir los títulos de los campos?
Si es así entonces sería suficiente con agregar la siguiente línea:

TXT->Add("CAMPO1\tCAMPO2\tCAMPO3\n");
// Esto ya lo tienes //
Table1->First();
while (!Table1->Eof)
{
TXT->Add(IntToStr(Table1->FieldByName ("CAMPO1")->AsInteger) + "\t" +
IntToStr(Table1->FieldByName("CAMPO2")->AsInteger) + "\t" +
FloatToStr(Table1->FieldByName("CAMPO3")->AsFloat) + "\n"));
Table1->Next();
}

O si lo que deseas es colocar los campos en filas y registros en columnas. De ser así entonces dame tiempo para diseñar el agoritmo correspondiente.

Y en relación a tu segunda pregunta no comprendo bien si deseas iniciailizar el TXT para reescribirlo o es otra cosa. Pero si deseas sobreescibirlo no necesitas inicializarlo.


Por favor confirmame si entendí bien tus cuestionamientos
Saludos
Atte Daniel
e_mail: danielnl@sequia.edu.mx

Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.