La Web del Programador: Comunidad de Programadores
 
    Pregunta:  43 - BASES DE DATOS EN VISUAL C++ 4.0
Autor:  Mariano
Cuando creo un proyecto en Visual C++ 4.0 y quiero que este tenga soporte para base de datos, me da dos opciones ya sea por la DAO o por la ODBC, pero en ambas me exigen ingresar una base de datos ya creada e indicar las tablas que uso de ellas.
Sin embargo en la aplicación que yo estoy creando, el usuario me puede indicar cualquier nombre de base de datos y cualquier tabla. Existe alguna forma de cambiar la BD y sus tablas en el momento de ejecución?
Bueno si puede , por favor envíame la respuesta pronto. Te estaré eternamente agradecido. Hasta Pronto...

  Respuesta:  Cesar Armando Cruz Mendoza
Hola Mariano:

No es necesario que especifiques algún tipo de base de datos previamente, solo basta con que establezcas tu conexión con el ADO o el ODBC adecuado al tipo de tabla que quieres utilizar, para ello Microsoft ya te ofrece varios ADO que te permiten interactuar con diversos tipos de tablas.

Dices que tu aplicación debe de ser abierta a cualquier tipo de tabla que el usuario especifique, eso es sencillo, basta con que identifiques el tipo de archivo que esta seleccionando (pudiera ayudarte la extensión del archivo) y en base a esto establecer la conexión con el ADO indicado.

Espero que esto te sea de ayuda. Yo estoy terminando precisamente una aplicación en C que maneja archivos DBF por medio de SQL.

Saludos.

  Respuesta:  Alfredo Barrios
Pero por supuesto, crea el proyecto normal, con soporte para base de datos, luego busca donde grabo el nombre de la base datos, entonces intercambia ese dato por una variable, alimenta la variable desde un archivo ini ó como parametro ya sea al inicio de la aplicación o con un cuadro de dialogo que crees para que el usuario indique el archivo y las tablas.

  Respuesta:  Alonso Salazar
Yo tengo el VC5 pero no creo que cambie mucho la interfase del Visual Studio. Crea tu aplicación comúnmente, el AppWizard te creara una clase que hereda de CDaoRecordset en caso de DAO o de CRecordset en caso de ODBC, esta clase contiene una función miembro llamada GetDefultDbName la cual se utiliza para la construcción del objeto y esta retorna la dirección de la base de datos necesaria, luego existe también otra que se llama GetDefualtSQL la cual retornara la tabla que se desea abrir, con lo indicado anteriormente podrás abrir cualquier base de datos indicada, el único problema es que deberás manejar los campos a mano, debido a que cada campo de la tabla que selecciones en el Wizzard este automáticamente te lo pone como un dato miembro del Record Set y de esta manera se maneja los campos si no sabes o no tienes una noción de los nombres o tipos de datos que se abrirán deberás manejas esto a mano como un vaquero, existe un ejemplo en el VC que yo tengo en el cual uno selecciona una base de datos y el programa lee todas las tablas y campos que se tienen en la BD y me permite cambiar y otras cosas si lo necesitas comunícate con migo y te lo doy el ejemplo.