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 

Cargar tabla desde archivo de texto

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Cargar tabla desde archivo de texto Responder citando

Hola.

Soy nuevo en esto de las bases de datos y probablemente lo que voy a preguntar es bastante tonto (antes de preguntar he buscado respuestas similares en el foro, pero no he encontrado nada). Mi consulta es la siguiente: tengo un archivo en formato *.bc3. De este archivo extraigo los datos de los registros de una tabla que inicialmente está vacía. Quiero meter esos datos en la tabla. La tabla tendría los campos "Código", "U.M.", "Descripción", "Precio1", "Precio2", "Precio3" y "Descripción completa", y lo que quiero es introducir esos datos en la tabla, luego cerrar el fichero y luego guardar la tabla. Trabajo con Access y C++Builder 4. La conexión es con el BDE.
Un saludo y gracias de antemano.
_________________
Nunca digas "Es imposible" sin intentarlo antes.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Archivos Responder citando

Si el archivo es de texto habria problemas con la conversion de los flotantes, entonces supongo q son archivos binarios:

yo lo haria asi:

Código:
struct Empleado{
                       char nombre[20];
                       long Precio;
                      };

fstream vSacar;
Empleado vEmpleado;

void Meter()//una idea de como se podria insertrar
{
vSacar.open("prueba.bc3",ios::binary|ios::out);
                strcpy(vEmpleado.nombre,"jorge");
                vEmpleado.Precio=13.5;
                vSacar.seekp(0,ios::beg);
                vSacar.write((char*)&vEmpleado,sizeof(Empleado));

                strcpy(vEmpleado.nombre,"jumanor");
                vEmpleado.Precio=15.5;
                vSacar.write((char*)&vEmpleado,sizeof(Empleado));
vSacar.close();
}

void Sacar(TListBox *List)
{
vSacar.open("prueba.bc3",ios::binary|ios::in);
                vSacar.seekg(0,ios::end);
                int tam=vSacar.tellg()/sizeof(Empleado);
                vSacar.seekg(0,ios::beg);
                for(int i=0;i<tam;i++)
                {
                vSacar.read((char*)&vEmpleado,sizeof(Empleado));
                 List->Items->Add(vEmpleado.nombre);
                 List->Items->Add(vEmpleado.Precio);
                //Table1->Last();
                //Table1->Insert();
                //Table1->FieldValues["nombre"] =vEmpleado.nombre;
                //Table1->FieldValues["precio"] =vEmpleado.Precio;
                }
vSacar.close();
}
La idea seria casi la misma si el archivo fuese de texto pero se tendria q saber el formato de entrada(los saltos de linea u otras cosas).

Espero haberte brindado un idea Wink
Saludos
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Hola jumayor.

Los archivos *.bc3 son archivos de texto plano (*.txt).
Yo leo línea a línea el archivo y extraigo en las correspondiente variables los datos. Por ejemplo:

* Leo línea 1
* Leo línea 2
* ···
*Leo línea "i"
> Nombre="Juan"
> Apellido="Ruiz"
> Sueldo="1000"
> Teléfono="123456789"

(ahora quiero guardar esos datos en una tabla [Nombre|Apellido|Sueldo|Teléfono])

* ···
* Leo última línea

Cita:
//Table1->Last();
//Table1->Insert();
//Table1->FieldValues["nombre"] =vEmpleado.nombre;
//Table1->FieldValues["precio"] =vEmpleado.Precio;
Creo que esta es la parte de código que necesito. ¿Es así como se insertan registros directamente en la tabla? Después, ¿cómo se le dice que guarde la tabla?

Gracias y un saludo.
_________________
Nunca digas "Es imposible" sin intentarlo antes.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

holas Ceruleo: El texto plano supon q sea el siguinte;

E003
yuliana
32.34

E004
liszeth
34.45

E005
yesenia
12.93

Código:

struct Empleados{
                        char codigo[5];
                        char nombre[20];
                        float sueldo;
                       };
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Empleados vEmpleado;
ifstream obj("Empleado.bc3");//include <fstream.h>

while(!obj.eof())
{
obj>>vEmpleado.codigo;
obj>>vEmpleado.nombre;
obj>>vEmpleado.sueldo;

Table1->Last();
Table1->Insert();
Table1->FieldValues["codigo"]=vEmpleado.codigo;
Table1->FieldValues["nombre"]=vEmpleado.nombre;
Table1->FieldValues["sueldo"]=vEmpleado.sueldo;
Table1->Refresh();
}
}


Te daras cuenta de la conversion del float es por eso q el archivo debe ser binario. Asi se graba en la tabla los flotantes

32.3400001525879
34.4500007629395
12.9300003051758


Saludos Wink
_________________
Es dificil decir q es imposible xq el sueño de ayer es la esperanza de hoy y la realidad d mañana
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
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.