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 

Importar datos de Excel a una base de datos SQL

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Importar datos de Excel a una base de datos SQL Responder citando

Hola a tod@s, vereis, necesito importar datos de una hoja excel a una tabla de una base de datos SQL. Los datos que quiero importar están en una sola columna de la hoja excel y el campo de la BD es VARCHAR.
He estado buscando en el foro, por lo visto hay algo aquí:
[url]
http://208.164.29.42/ubb/Forum1/HTML/000605.html
[/url]

pero a mí me aparece la página en blanco.

¿Alguien me puede ayudar?

Gracias!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Monica.

Sabes, lo que se me ocurre es lo siguiente:

Si el archivo esta en unma columna y seguido, busca una forma de separarlo, por ejemplo que los primeros datos ean el nombre, despues direccion etc.

O otra, puedes usar los componentes que trae el Builder 6.0 para el Office y checa las funciones que trae para las hojas de Exel.
_________________
I.S.C. Joel Salinas Alvarado
Linux User:454009
the human knowledge belong to the world
"Hoy el Universo Debian es mas GRANDE"
Zacatecas, Mexico.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Muchas gracias por tu respuesta Snake, pero creo que no me he explicado bien. Así que lo voy a volver a intentar:

La tabla de mi base de datos tiene 2 campos: NumeroSerie y Estado. Ambos son de tipo VARCHAR.

En la tabla excel lo único que tengo es una lista de números de serie, que están todos en una columna de la hoja excel.

Lo que no sé hacer es importar directamente los números de serie de la hoja excel al campo NumeroSerie de la tabla de la base de datos.

¿Me he explicado ahora?

Gracias!
Volver arriba
Mensaje    Asunto: Responder citando

Perdón, el "Invitado" soy yo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Variant e,s ;
e=GetActiveOleObject("Excel.Application");


//seleccionar hoja activa
s=e.Exec(PropertyGet("ActiveSheet"));
if(s.IsEmpty())
{
ShowMessage("No hay ninguna hoja activa");
return;

}



int Fila=5;
int i=5+StrToInt(s.Exec(PropertyGet("Cells")<<500<<1));

while(Fila<i)
{
String Value=s.Exec(PropertyGet("Cells")<<Fila<<1);

Query2->Active=false;
Query2->SQL->Clear();
Query2->SQL->Add("INSERT INTO PAGO_"+FormatDateTime("yyyy",Now())+"(placa, costo_tasa, forma_pago, ipc_1, multas_1, total_1, fec_pago_1, pagado_1, ipc_2, multas_2, total_2, pagado_2)");
Query2->SQL->Add(" VALUES(Mad0, Mad1, Mad2, Mad3, Mad4, Mad5, Mad6, Mad7, Mad8, Mad9, :x10, :x11)");

Query2->Params->Items[0]->AsString=s.Exec(PropertyGet ("Cells")<<Fila<<1);
Query2->Params->Items[1]->AsInteger=s.Exec(PropertyGet("Cells")<<Fila<<2);
Query2->Params->Items[2]->AsString=s.Exec(PropertyGet("Cells")<<Fila<<3);
Query2->Params->Items[3]->AsInteger=s.Exec(PropertyGet("Cells")<<Fila<<4);
Query2->Params->Items[4]->AsInteger=s.Exec(PropertyGet("Cells")<<Fila<<5);
Query2->Params->Items[5]->AsInteger=s.Exec(PropertyGet("Cells")<<Fila<<6);
Query2->Params->Items[6]->AsDateTime=s.Exec(PropertyGet("Cells")<<Fila<<7);
Query2->Params->Items[7]->AsString=s.Exec(PropertyGet("Cells")<<Fila<<Cool;
Query2->Params->Items[8]->AsInteger=s.Exec(PropertyGet("Cells")<<Fila<<9);
Query2->Params->Items[9]->AsInteger=s.Exec(PropertyGet("Cells")<<Fila<<10);
Query2->Params->Items[10]->AsInteger=s.Exec(PropertyGet("Cells")<<Fila<<11);
Query2->Params->Items[11]->AsString=s.Exec(PropertyGet("Cells")<<Fila<<13);
}
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Muchas gracias Eduardo, lo voy a probar ahora mismo y te cuento.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hola Foristas, estoy necesitando leer daots desde un archivo excel y estoy probando la solucion planteada por Eduardo, pero tengo una duda:

como incluyo la unidad ComObj ya que es necesaria para utilizar GetActiveOleObject.

Muchas gracias
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Cita:
He estado buscando en el foro, por lo visto hay algo aquí:
[url]
http://208.164.29.42/ubb/Forum1/HTML/000605.html
[/url]
pero a mí me aparece la página en blanco.


Es un enlace del servidor anterior donde estaba el foro, para convertirla al nuevo solo tienes que usar el número final sin los 0, o sea, ese mismo enlace ahora quedaría así:

https://cppbuilder.es/viewtopic.php?t=605


Cita:
como incluyo la unidad ComObj ya que es necesaria para utilizar GetActiveOleObject

Solo tienes que añadir: #include<ComObj.hpp>
Si necesitas mas detalles pon la palabra "Excel" en el enlace de búsqueda del foro donde se explica esto entre otras cosas.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hola Leo! muchas gracias por tu respuesta, encontre lo que buscaba.
Ahora pregunto si existe otra forma de hacerlo, no se si se puede trabajar con DDE?.

Lo que necesito hacer es leer algo que otra aplicaion escribe en la hoja excel y lo hace via DDE, ahora si, existe otra forma de hacerlo?

De nuevo Muchas gracias
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Cita:
Lo que necesito hacer es leer algo que otra aplicaion escribe en la hoja excel y lo hace via DDE, ahora si, existe otra forma de hacerlo?

No entiendo bien lo que preguntas, ya que da igual que método use la otra aplicación para que tú puedas leerlo, al fin y al cabo tú con quien necesitas comunicarte es con Excel y no con la otra aplicación no ?

Aunque si, puedes usar DDE, pero dudo que así tengas más control. Se usaba mucho en versiones anteriores de Office, aunque sigue funcionando en las actuales.

Un ejemplo muy básico. Necesitaremos tener Excel abierto y una hoja activa con el nombre 'Hoja1'. Solo tienes que añadir el código siguiente en el OnClick de un botón:

    // Añadimos: #include<memory> e #include<ddeman.hpp>
    std::auto_ptr<TDdeClientConv> dde(new TDdeClientConv(0));
    // Enlazamos con Excel
    dde->SetLink("Excel", "Hoja1");
    // Escribimos en la Fila 1 Columna 1
    dde->PokeData("F1C1", "prueba");
    // Leemos la Fila 1 Columna 1
    String valor = dde->RequestData("F1C1");

Uno de los problemas principales es que según en que idioma este Excel tendremos que enviarle los comandos para ese idioma. Por ejemplo, lo anterior cambiaria un poco si fuese para la versión en ingles:

    //...
    dde->SetLink("Excel", "Sheet1");
    dde->PokeData("R1C1", "prueba");
    String valor = dde->RequestData("R1C1");
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Leo! muchas gracias por tu respuesta, creo que me quedo con la primera opcion, tienes razon el DDE trae desventajas (que no conocia) y lo unico que necesito es comunicarme con excel.

Felicidades y Tema Cerrado (ups! eso creo)

Saludos
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.