Visual Basic - Problemas al empaquetar. Ayudenme por favor.

Life is soft - evento anual de software empresarial
 
Vista:

Problemas al empaquetar. Ayudenme por favor.

Publicado por Luna (4 intervenciones) el 22/08/2004 15:52:11

Estoy creando el proyecto de instalación de mi programa y me he dado cuenta que hay varias rutas en mi programa que debo cambiar. En tres casos me salen dudas, son los siguientes:

1.- En el DataEnvironment para los reports le defino la base de datos que debe utilizar en sus propiedades (claro esta le marco una ruta dentro de mi pc, que el siguiente usuario puede no ser la misma). No se como decirle que debe utilizar (App.path + "\basedatos.mdb")

2.- Similar al anterior... En los ADODC que crea automaticamente la base de datos tambien se define en sus propiedades... ahi tambien le pongo la ruta dentro de mi pc. Si le pongo el App.path + "\basedatos.mdb" coje como App.path el path del visualbasic.... como puedo definirle que coja la correcta?

3.- En dos momentos del aplicativo llamo a que habra un fichero .html le pongo lo siguiente:
Shell "Explorer c:\Mis Documentos\Proyecto\Manual.html" y lo abre correctamente
pero claro el usuario no lo pondrá en la misma ruta asi que le pongo
Shell "Explorer" + App.path + "\Manual.html" pero me dice que no encuentra el fichero (y App.path tiene el valor correcto o sea... c:\Mis Documentos\Proyecto) como se lo debo indicar?

Tengo 3 dias para solucionarlo ayudadme por favor... si no soluciono esto no puedo proceder a crear el proyecto de instalacion.... y lo malo es que ahi tambien tengo mis dudas y tengo poco tiempo....

Muchas Gracias

Luna
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas al empaquetar. Ayudenme por favor.

Publicado por ruri (583 intervenciones) el 22/08/2004 19:02:51
Luna:
Para poder utilizar la base de datos en la máquina del cliente, es necesario modificar la cadena de conexión. Vas por buen camino, se utiliza App.PAth. La solución es parecida para el dataenviroment y para el adodc. A continuación te envío un fragmento de código que a mí me funcionó siempre. Está hecho para el dataenviroment, pero podés adaptarla fácil al adodc:
_____________________________________________________
dim dbPath as string
dbPath = strAppPath & "\Datos.mdb"
With dte
With .Recordsets
'Cierra todos los recordsets
For k = 1 To .Count
.Item(k).Close
Next k
End With
'Cierra la conexión
.con.Close
'Establece la nueva cadena de conexión
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & dbPath & "';Mode=ReadWrite|Share Deny None;Persist Security Info=False"
.con.ConnectionString = strcon
'Abre la conexiín
.con.Open strcon, , , adConnectUnspecified
End With
________________________________________________________

En cuanto a lo de la función shell, no funciona debido a la falta del espacio y las comillas después de la sentencia explorer. El código que debería funcionar sería:

Shell "Explorer.exe " & chr$(34) & App.path & "\Manual.html" & chr$(34)

Espero haberte sido de ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas al empaquetar. Ayudenme por favor.

Publicado por Luna (4 intervenciones) el 22/08/2004 19:25:59
Gracias ruri.

Lo de explorer funciona :)

En cuanto al codigo para DataEnvironment, aunque en sus propiedades se las haya introducido supongo que entrando este codigo en DataEnvironment_Initialize() cojera lo que se le haya introducido ahi.
He puesto el codigo y me dice el siguiente error al ejecutarlo:
"La operacion no esta permitida si el objeto esta cerrado"
le doy a debug y me localiza el error en la linea siguiente del codigo:
.Item(k).close

Que le puede estar pasando??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas al empaquetar. Ayudenme por favor.

Publicado por ruri (583 intervenciones) el 23/08/2004 00:40:29
Luna:
Es cierto, no todos los recordsets tienen porque estar abiertos, colocá On error resume next al principio del bloque de código. Este código lo suelo utilizar en un SubMain o al cargar el primer formulario

Suerte Ruri
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Y si pongo lo siguiente?

Publicado por Luna (4 intervenciones) el 22/08/2004 19:43:09
Y si en Dataenvironment_Initialize() le pongo simplemente:

Connection1.ConnectionString=("PROVIDER=MICROSOFT.JET.OLEDB.3.51;DATA SOURCE=" & database )

En principio no me da error.
database es una variable global donde le pongo el path de la base de datos

Ahora, si esto lo instalo en otro ordenador funcionara?

No se debe cerrar conexiones ni recordsets obligatoriamente?

A pesar que en la ficha de Propiedades de Connection1 ponga la ruta de la bd en mi pc no dara problemas?

Muchas gracias por atender mis consultas.

Luna
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Y si pongo lo siguiente?

Publicado por ruri (583 intervenciones) el 23/08/2004 00:43:55
Luna:
En otras ocasiones probé códigos parecidos. No arrojan error, pero al llevarlos a otra máquina no funcionan. Es por eso que utilizo la rutina que te mandé. Cambiar el conectionString sin cerrrar la conexión no parece tener efecto (creo haberlo leído en algún lado).

Suerte Ruri
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar