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 

Componentes Office_2k

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Componentes Office_2k Responder citando

Buenas, necesito vuestra ayuda para solucionar un problema que tengo desde hace tiempo, ya puse varias consultas en el foro pero no recibí ninguna respuesta. A ver, como lo explico, me pasan unos datos en un Hoja de Excel y necesito importarlos a una tabla de Access.

A la base de datos me conecto mediante ADO, los componentes que utilizo (ADOQuery, ADOConnection) los tengo en un datamodule. La cuestión es que no consigo exportar los datos, probé automatizando excel, pero no lo conseguí. Creé una macro en la base de datos que servía para importar esos datos pero no consigo invocarla de ningún modo. Cuando intento automatizar Access e intento abrir la base de datos que el usuario ha seleccionado, me sale un error al utilizar el método Open:
Código:

Variant AccessApp = CreateOleObject("Access.Application");
AccessApp.GetActiveObject("Access.Application");
AccessApp.OlePropertySet("Visible", true);
AccessApp.OleFunction("Open", nombreBD);


Se abre Access pero cuando llega al método Open me sale un error :
"EOleSysError: Nombre Desconocido".

Con lo cual ni siquiera logro acceder a la base de datos, ¿cómo debería hacerlo?

Por todo ello empecé a pensar en utilizar los componentes Office_2k, donde aparecen "AllMacros", "AllModules" etc etc, pero no sé utilizarlos, no encuentro información por ningún sitio, y además en cuanto coloco uno de esos componentes en mi programa e intento compilar me encuentro con lo siguiente:

[C++ Error] Datamodule.h(55): E2015 Ambiguity between 'Error' and 'Dao_2k::Error'

Y tampoco sé como se puede solucionar esto, el error viene porque existe ambigüedad entre cosas definidas en ADODB.hpp y lo que define la directiva: #pragma link "Access_2K_SRVR"

Podeis explicarme algo de todo esto??, me podeis indicar algún modo de exportar los datos de excel a Access??, sea como sea, por favor necesito solucionar esto para poder entregar mi proyecto final de carrera a tiempo.

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

A ver si te sirve este pequeño ejemplo:
Código:
Variant AccessApp = CreateOleObject("Access.Application");
AccessApp.GetActiveObject("Access.Application");
AccessApp.OlePropertySet("Visible", true);

// Quitamos las preguntas sobre seguridad
const int msoAutomationSecurityLow = 1;
AccessApp.OlePropertySet("AutomationSecurity", msoAutomationSecurityLow);

// Abrimos la base de datos
WideString nombreBD = "D:\\datos\\bd1.mdb";
AccessApp.OleProcedure("OpenCurrentDatabase", nombreBD);

// Ejecutamos el siguiente metodo de ejemplo contenido en un modulo:
//   Sub MostrarTexto(texto As String)
//       MsgBox texto
//   End Sub
AccessApp.OleFunction("Run", "MostrarTexto", "texto de prueba");

AccessApp.OleProcedure("CloseCurrentDatabase");
AccessApp.OleProcedure("Quit");
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Vale _Leo, eres un as!!, he conseguido hacer lo que quería, aunque he tenido que quitar el trozo de:

Código:
// Quitamos las preguntas sobre seguridad
const int msoAutomationSecurityLow = 1;
AccessApp.OlePropertySet("AutomationSecurity", msoAutomationSecurityLow);


Ya que con eso me sale el mismo error que con el método Open: "Nombre desconocido".

Pero no importa porque no aparece ninguna pregunta de seguridad.
Y la cuestión es que ahora ya no me parece tan difícil, pero me había obcecado en seguir caminos oscuros....

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

El Access se cierra...

Código:

Variant AccessApp = Variant::CreateObject("Access.Application");
AccessApp.GetActiveObject("Access.Application");
AccessApp.OlePropertySet("Visible", true);

// Quitamos las preguntas sobre seguridad
const int msoAutomationSecurityLow = 1; 
AccessApp.OlePropertySet("AutomationSecurity", msoAutomationSecurityLow);

// Abrimos la base de datos
WideString nombreBD = ExtractFilePath(Application->ExeName)+"BD.mdb";
//AccessApp.OleProcedure("OpenCurrentDatabase", nombreBD);

AccessApp.OleFunction("OpenCurrentDatabase", nombreBD, false, "mypassword");

AccessApp.OleProcedure("CloseCurrentDatabase");
AccessApp.OleProcedure("Quit");
AccessApp = Unassigned;



¿cómo puedo hacer para que el Access se mantiene abierto?

Gracias!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
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.