Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Problema con ejecutable en Red

Estas en el tema de Problema con ejecutable en Red en el foro de Visual Basic clásico en Foros del Web. Hola a todos escribo porque tengo el siguiente problema tengo hecho un sencillo codigo en visual basic 6 para unir impresoras por la red de ...
  #1 (permalink)  
Antiguo 26/05/2011, 07:42
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Problema con ejecutable en Red

Hola a todos escribo porque tengo el siguiente problema tengo hecho un sencillo codigo en visual basic 6 para unir impresoras por la red de mi trabajo el asunto es que al compilar el archivo ejecutable .exe desde la maquina donde fue creado funciona de maravillas pero ahora resulta que comparti la carpeta donde se encuentra el programa para que pueda abrirse desde otras computadoras y me salta el siguiente error:

Run-Time error '430':

La clase no soporta automatizacion o no soporta la interfase esperada

Los elementos que usa el programa son:

Una conexion a una base de datos de access mediante ole db
La referencia Windows Script Host Model

Tengo el ejecutable compilado con sus dependencias con el programa fusion de modo que no necesite la pc remota tener instalado el vb, de todos modos son librerias basicas y la pc remota tiene instalado el access 2003 por lo cual supongo deberia tener las librerias asi como el mdac etc. tambien he probado en crear un paquete de instalacion con todas las dependencias y sigo teniendo el mismo problema, bueno eso seria mi problema como hago para ejecutar mi programa remotamente sin tener este error desde ya agradezco su ayuda

Saludos

Última edición por djaevi; 26/05/2011 a las 09:34
  #2 (permalink)  
Antiguo 26/05/2011, 10:33
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: Problema con ejecutable en Red

Hola!
Sugerencias:

• Incluye los RUNTIME FILES de VB6.0, ademas de las .DLLs, .OCX, etc.
• Registrar AUTOMATICAMENTE o MANUAL con REGSVR32
• Verifica que no se te haya quedado algo necesario cuando empaquetaste la aplicación.
• Tambien hay que veriricar el acceso a la BD, si los usuarios no tienen permiso de escritura en el compartido, no podran siquiera abrir la BD Access
  #3 (permalink)  
Antiguo 27/05/2011, 09:56
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: Problema con ejecutable en Red

Gracias lokoman por responder ya he hecho todo lo que me has sugerido pero no tuve suerte registre todas las librerias dll, ocx etc y nada no consigo hacerlo funcionar ni en red ni haciendo un paquete instalador e instalando todo mi programa en el equipo :S alguna idea?
  #4 (permalink)  
Antiguo 27/05/2011, 10:45
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: Problema con ejecutable en Red

Bueno estuve haciendo una serie de pruebas y estoy convencido que el conflicto esta con la base de access la carpeta compartida tiene permisos totales para todos los usuarios tanto en la solapa compartir como de seguridad de windows, aca les dejo el codigo de mi aplicacion aver si me pueden ayudar, en primer lugar tengo un modulo con el codigo para hacer la conexion a la base de access:

Modulo1:

Código vb:
Ver original
  1. Global Conexion As New ADODB.Connection
  2. Global Tabla As New ADODB.Recordset
  3. Sub cerrar()
  4. Conexion.Close
  5. End Sub
  6. Sub abrir()
  7. Conexion.ConnectionString = App.Path + "\..\db\impresoras.mdb"
  8. Conexion.Provider = "microsoft.jet.oledb.4.0"
  9. Conexion.Open
  10. End Sub

y el codigo que va por detras del formulario

Código vb:
Ver original
  1. Private Sub Form_Load()
  2. Call abrir
  3. Tabla.Open "SELECT * FROM impresoras", Conexion, adOpenDynamic, adLockOptimistic
  4. instrucciones.FontSize = 10
  5. instrucciones.Text = "Haga doble click sobre la impresora que desee agregar."
  6. Dim Item As ListItem
  7. With printList
  8.     .ColumnHeaders.Add , , "Id", 550
  9.     .ColumnHeaders.Add , , "Impresora", 2900
  10.     .ColumnHeaders.Add , , "Usuario", 2900
  11.     .ColumnHeaders.Add , , "Ubicacion", 2900
  12.     .Width = 9300
  13.     .Height = 4050
  14.     .GridLines = True
  15.     .View = lvwReport
  16. End With
  17. Do Until Tabla.EOF
  18.     With printList
  19.         Set Item = .ListItems.Add(, , Tabla("Id"))
  20.             Item.SubItems(1) = Tabla("Impresora")
  21.             Item.SubItems(2) = Tabla("Usuario")
  22.             Item.SubItems(3) = Tabla("Lugar")
  23.     End With
  24. Tabla.MoveNext
  25. Loop
  26. Tabla.Close
  27. End Sub
  28.  
  29. Private Sub printList_DblClick()
  30.     addPrint (printList.SelectedItem.index)
  31. End Sub
  32.  
  33. Private Sub addPrint(index As Integer)
  34.     Dim progress As Boolean
  35.     Dim count As Double
  36.     count = 1
  37.     Tabla.Open "Select imp_string, pc_string From impresoras WHERE id = " & index
  38.     Do Until Tabla.EOF
  39.         Dim str As String
  40.         str = "\\" & Tabla("pc_string") & "\" & Tabla("imp_string")
  41.     Tabla.MoveNext
  42.     Loop
  43. Tabla.Close
  44.     Dim obj As WshNetwork
  45.     Set obj = New WshNetwork
  46.     progressBar.Value = 1
  47.     TiempoPausa = 3
  48.     Inicio = Timer
  49.     progressBar.Visible = True
  50.     Do While Timer < Inicio + TiempoPausa
  51.         DoEvents
  52.         count = count + 0.001
  53.         If count > 99 Then
  54.             count = 1
  55.         End If
  56.         progressBar.Value = count
  57.     Loop
  58.     On Error GoTo salida
  59.     obj.AddWindowsPrinterConnection (str)
  60.     If Err.Number = 0 Then
  61.         progressBar.Value = 99
  62.         MsgBox "La impresora se agrego correctamente", vbInformation, "Impresora Agregada"
  63.     End If
  64. salida:
  65.     If Err.Number <> 0 Then
  66.         progressBar.Value = 99
  67.         MsgBox "Hubo un error al intentar conectarse a la impresora compruebe lo siguiente: " & vbCrLf & "- La Pc donde se encuentra la impresora esta encendida" & vbCrLf & "- Tanto la pc donde se encuentra la impresora como la suya estan conectadas a la red" & vbCrLf & "- La impresora que desea agregar ya existe como parte de sus impresoras", vbCritical, "Error!"
  68.     End If
  69. End Sub

Los controles que utilizo son 2 image, 1 listView donde cargo los datos de la base, un textbox y una barra de progreso, desde ya gracias por su ayuda
  #5 (permalink)  
Antiguo 27/05/2011, 11:29
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: Problema con ejecutable en Red

Todo lo que encuentro referente al error es sobre los Microsoft Data Access Components (MDAC), que son los que se usan en las conexiones a las Bases.

http://www.mecsw.com/info/appnote/app_017.html

Hay que bajar e instalar la ultima versión desde el site de Microsoft. Este es el que yo tengo, intenta a ver si te sirve:

http://myfreefilehosting.com/f/2696e5f66d_7.49MB


Tengo unas preguntas para cuando ejecutas en la PC remota:

• El error es cuando cargas la aplicacion?
• Si es asi, veo que usas una ruta relativa en vez de una absoluta en la linea:
Código vb:
Ver original
  1. Conexion.ConnectionString = App.Path + "\..\db\impresoras.mdb"
Cambiala por la ruta absoluta, es mas confiable a mi parecer, puede que te funcione bien en tu PC, pero en las demas den error.

Yo uso la conexion asi:
Código vb:
Ver original
  1. Dim Conexion As ADODB.Connection
  2.     Dim Ruta As String
  3.    
  4.     Ruta = "C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Neptuno.mdb"
  5.     Set Conexion = New ADODB.Connection
  6.    
  7.     Conexion.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _
  8.         & Ruta & ";Persist Security Info=False"
  9.     Conexion.Open

Es lo mismo, pero con ruta absoluta.


• Si no da error al cargar la aplicacion en la PC remota, los datos de la Base se cargan en los LIST?
• Si es asi, el error es en el EVENTO printList_DblClick()?
Corre el ejecutable desde la PC remota... no desde el SERVER, es posible que alguna politica impida el funcionamiento correcto en los ejecutables desde la red. Tambien verifica que los usuarios tengan permiso a agregar impresores.

Última edición por lokoman; 27/05/2011 a las 11:35
  #6 (permalink)  
Antiguo 30/05/2011, 07:16
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: Problema con ejecutable en Red

Gracias por contestar lokoman pero mi problema persiste te paso a comentar:

El error sale al intentar abrir la aplicacion por lo cual el evento dblClick de momento no seria el problema:

He intentado instalar la version del mdac que me dejaste (gracias por tomarte el tiempo de subirla) tanto en el server como en el equipo remoto para que ambos tengan las mismas librerias pero en ambos me salio un mensaje diciendo que el equipo ya cuenta con el mdac instalado.

Lo que he hecho para probar es poner una ruta absoluta a la base de datos pero por red esto seria: "\\recCompartido\aplicacion\db\impresoras.db"

Esto lo hago debido a que la base se va a modificar desde el server y no quisiera estar teniendo que copiarla en cada equipo que tenga instalado el programa cada vez que se actualice ya que los usuarios solo usan la base para ver las impresoras disponibles y unirse a ellas.

De igual modo para probar tambien probe como me sugeriste de poner la ruta a la base de datos en local "C:\Archivos de Programa" etc etc pero al igual que antes en el server funciona y en el equipo remoto no.

Otra cosa que me llama la atencion es que al instalar el programa en la pc remota no se copia la base de datos por lo cual la copie manualmente donde deberia estar y nada tampoco funciona.

Todos los usuarios tienen permisos para agregar impresoras de igual modo estoy haciendo las pruebas con 2 pcs donde el usuario que uso es el mio el cual es administrador.

Bueno por ahora esto es todo je gracias de nuevo por tu ayuda
  #7 (permalink)  
Antiguo 30/05/2011, 08:59
Avatar de DexterGlue  
Fecha de Ingreso: septiembre-2010
Ubicación: Managua
Mensajes: 60
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Problema con ejecutable en Red

hola djaevi

He obtenido ese tipo de error cuando la aplicacion trata de buscar el dll en el lugar que esta registrado y este muy probablemente no coincide con la version registrada.

Pienso que el error es posible que te de por que la aplicacion busca los dll que ella necesita en las estaciones clientes y al no encontrarlas manda ese error. Puede probar verificando eso.

Saludos
  #8 (permalink)  
Antiguo 01/06/2011, 06:53
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: Problema con ejecutable en Red

Hola dexter gracias por comentar probe de colocar a mano las librerias pero nada sigo sin suerte :S estoy considerando cambiarme a delphi como me sugirieron varios compañeros no puede ser que haya que instalar el visual basic para que una aplicacion funcione 100% :(

Salu2

Etiquetas: ejecutable, red
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:40.