Tengo una aplicación en VB5. La instalación se hace de manera correcta. Sin embargo al ejecutar el aplicativo me genera un error: "NO SE PUDO ENCONTRAR EL ISAM INSTALABLE". Agradezco de antemano la colaboración. Gracias AguilaMao Bogotá-Colombia
2 Respuestas
Respuesta de athrarn
1
1
athrarn, - Sistemas Operativos : - MS-DOS, Windows 3
Al parecer te falta añadir en la instalación los driver de ISAM. Estos drivers son de comunicación de BBDD. Comprueba que has instalado los ODBC para la Base de datos, dado que doy por hecho que usas una conexión con una Base de datos. En estos artículos de Microsoft tienes información también : http://support.microsoft.com/support/kb/articles/q90/1/11.asp http://support.microsoft.com/support/kb/articles/q155/6/66.asp http://support.microsoft.com/support/kb/articles/q107/6/72.asp Como con seguridad esos drivers son de microsoft Jet, te recomiendo que te asegures que las referencias están creadas en el proyecto para que el instalador te las incluya, y si las creas con CreateObject, inserta los drivers que coinciden con "Xbase ISAM". En el peor de los casos, en una inicialización de la aplicación, puedes forzar la carga de los drivers con este código : : Declare Function GetSystemDirectory Lib "Kernel" (ByVal lpBuffer As String, ByVal nSize As Integer) As Integer Declare Function GetPrivateProfileString Lib "Kernel" (ByVal lpSectionName As String, ByVal lpEntryName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Integer, ByVal lpFileName As String) As Integer 'Set installable Isam options... Dim sBuf As String * 80 Dim i as integer If GetPrivateProfileString("Installable ISAMs", "dBASE III", "", sBuf, 40, sIniFile) = 0 Then i = GetSystemDirectory(sBuf, 80 - 1) If i = 0 Or i > 80 Then 'Error... Exit Sub End If sBuf = Left(sBuf, i) & "\xbs110.dll" If WritePrivateProfileString("Installable ISAMs", "dBASE III", sBuf, sIniFile) = 0 Then 'Error... End If 'Do not view deleted records If WritePrivateProfileString("dBase ISAM", "Deleted", "On", sIniFile) = 0 Then 'Error... End If End If
Disculpame, pero... ¿Dónde coloco este código? En el module. ¿Vas? ¿Cómo creo con CreateObject? Gracias por tu tiempo.
La conexión mediante ISAM supongo que la haces para conectarte a un servicio microsoft antiguo o para conectarte a DBASEIII (si no me equivoco, que puede ser.) El código es para asegurarte la carga de los drivers de DBASEIII. Si usas una conexión a Jet, la solución es más sencilla. Cuando generas las referencias del programa puedes hacer dos cosas mirar la librería a la que se refieren, ya sea en la información de la MSDN de microsoft (la tienes en la red) o directamente en el menu referencias te debería poner que Librería (normalmente DLL) usas. El tercer modo de saber las librerías que usas es editar como texto el archivo ".VBP" del proyecto de Visual basic. En ese archivo tienes los números de referencia en la maquina, de todas las librerías que usa tu proyecto. Si Buscas esas referencias en el registro del sistema de windows, tendrás todas las librerías que referencia tu proyecto en ejecución. (Salvo las que crees con CreateObject pero a esas me dedico luego.) Juntando todas las referencias, debes asegurarte que en el paquete de instalación están referenciadas esas librerías para que el ejecutable destino pueda crear los objetos definidos en esas clases que tienen las librerías. (Por favor dime que me he explicado... que no es fácil...). Create Object... Bueno, digamos es la forma a lo bruto de hacer lo mismo. Si para crear un objeto tipo Excel, tu creas una referencia a la librería de objetos de excel y luego declaras un objeto de la librería. Hacer lo mismo con create object es quitar la referencia y escribir : Dim XLApp as Object Set XLApp = CreateObject("Excel.Application", "LocalizacionDeLaLibreria") Esa linea, si has creado la referencia en el menu de Herramientas/Referencias, podría substituirse por Dim XLApp as new Excel.Application o por Dim XLApp as Excel.Application Set XLApp = Excel.Application Espero haberte sido de utilidad. ( Y sobre todo haberme sabido explicar.)
Como estas, te comento: El error que te esta dando tiene que ver con el acceso a datos, concretamente ISAM significa Indexed Sequential Access Method y se refiere al acceso a archivos/datos. Seguramente lo que te este ocurriendo es que en el ordenador en el que estas instalando no tienes instalados los drivers correspondientes o alguno de los componente que requiere tu programa. Esto te habrá pasado cuando haz creado el archivo de instalación y lo habrás dejado todo por defecto, pues bien, si quieres que el error desaparezca, tienes que seleccionar en el asistente todos los archivos, componentes y DLL que te indique que usa tu programa. Esto sale en una de las pantallas del asistente. Luego desinstala el programa, y vuelve a instalar con las nuevas opciones, seto debería de funcionar. Nada más, espero que se te haya solucionado, si no es así dímelo y te busco otra solución, ya que puede ser un error de VB5, pero no creo por lo que me comentas. En cualquier caso, aquí estoy si lo necesitas.