 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Cerúleo Master


Registrado: 04 Ago 2003Mensajes: 332Ubicación: Santander, España
|
Publicado: Mie 10 Ago, 2005 10:31 am Asunto: Cargar tabla desde archivo de texto |
|
|
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 |
|
 |
Jumanor Lt


Registrado: 28 Feb 2003Mensajes: 91Ubicación: tacna-Peru
|
Publicado: Mie 17 Ago, 2005 9:58 am Asunto: Archivos |
|
|
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
Saludos |
|
| Volver arriba |
|
 |
Cerúleo Master


Registrado: 04 Ago 2003Mensajes: 332Ubicación: Santander, España
|
Publicado: Vie 19 Ago, 2005 6:14 pm Asunto: |
|
|
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 |
|
 |
Jumanor Lt


Registrado: 28 Feb 2003Mensajes: 91Ubicación: tacna-Peru
|
Publicado: Vie 19 Ago, 2005 8:03 pm Asunto: |
|
|
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  _________________ 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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|