Power Builder - Como hago una ventana de login? Parte II

 
Vista:

Como hago una ventana de login? Parte II

Publicado por Isaac (38 intervenciones) el 20/10/2005 21:57:55
En base a la siguiente pregunta:
Como hago una ventana de login usando el objeto conexion que hace el wizard de Builder 9?

Es decir, tengo usuario y password. Imagino que debe haber alguna forma de pasar esos parametros al objeto n_connectservice que crea el wizard de conexiones de builder. No he podido configurarlo correctamente!

Agradezco sus respuestas!

Recibi la siguiente respuesta:
Solución propuesta
------------------------------------------------------------------------------------------
Para utilizar el mismo objeto, puedes hacer los siguiente:

* Creas una nueva función con dos parametros de tipo string ( ejem: of_init(String as_user, String as_password) ) que no retorna nada.

* Cortas el código del evento constructor y lo pegas en esta función.

* Cambia las propiedades del SQLCA (LogID y LogPass) por los argumentos
SQLCA.LogID = as_user
SQLCA.LogPass = as_password

* A la funcion of_connectdb() agrégale dos parámetros de tipo string (ejem : as_user y as_password )

* A la función of_connectdb agrégale el siguiente código antes de la conexión
of_init(as_user,as_password)
Connect using SQLCA;
..........

* En la función of_getconnectioninfo las variables as_logid y as_logpass deben estar así:
as_logid = ""
as_logpass = ""

* El evento open de la aplicación debe quedar así:
this.ToolBarFrameTitle = "MDI Application Toolbar"
this.ToolBarSheetTitle = "MDI Application Toolbar"
Open ( w_login )
// el resto del código pasa a la ventana w_login

* Creas una ventana de tipo Response (ejem: w_login) con los siguientes objetos:
sle_user
sle_password
cb_ok
cb_cancel

* En el boton cb_ok debe esta el siguiente código:
n_genapp_connectservice lnv_connectserv
lnv_connectserv = Create using "n_genapp_connectservice"

If lnv_connectserv.of_ConnectDB (sle_user.text,sle_password.text ) = 0 Then
/* Open MDI frame window */
Open ( w_genapp_frame )
Close(Parent)
End if
Destroy lnv_connectserv
------------------------------------------------------------------------------------------
Pero:
Todo bien pero hay un problema! Ocurre que luego de que sale mi pantalla de login, al dar clic o.k entonces me sale la pantalla de conexion de builder solicitando de nuevo el usuario y password. Peor aun es que cada vez que solicita una transacción sale esa misma ventana pidiendo usuario y password.

Alguien sabe cual puede ser la solución?
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:Como hago una ventana de login? Parte II

Publicado por wend (95 intervenciones) el 21/10/2005 02:46:43
Sabes, por un momento me puse a dudar que el código que te envié estaba mal pero no es así.

Lo probe nuevamente y funciona y en ningún momento me aparece la ventana de conexión; hice la prueba con SQL Server 2000.

Con que BD estás trabajando, y la ventana de conexión es la de ODBC o la de la base de datos.
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:Como hago una ventana de login? Parte II

Publicado por Isaac (38 intervenciones) el 21/10/2005 03:49:34
Estoy trabajando con ASA! Me sale la ventana de la base de datos!
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:Como hago una ventana de login? Parte II

Publicado por wend (95 intervenciones) el 21/10/2005 16:32:43
Tengo otra pregunta, ¿creaste un usuario en la base de datos o tienes una tabla de usuarios?
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:Como hago una ventana de login? Parte II

Publicado por Isaac (38 intervenciones) el 21/10/2005 16:35:11
Hasta ahora hay 3 usuarios creados en base de datos ya que la misma funciona actualmente en un servidor que está en otro sitio en este mismo piso donde trabajo y los tres trabajamos tres módulos diferentes sobre la misma base de datos pero se presenta el mismo problema para los tres.
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:Como hago una ventana de login? Parte II

Publicado por wend (95 intervenciones) el 21/10/2005 16:41:55
Quisiera ver el script de la función of_getconnectioninfo del objecto conexión y cual de las opciones estas ocupando.
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:Como hago una ventana de login? Parte II

Publicado por Isaac (38 intervenciones) el 21/10/2005 16:58:42
Functions ofconnectdb

//*--------------------------------------------------------*/
//* Make a connection to the database
//*--------------------------------------------------------*/
/* Actual DB connection */
of_init(as_user,as_password)
Connect using SQLCA;

If SQLCA.SQLCode <> 0 Then
MessageBox ("Cannot Connect to Database", SQLCA.SQLErrText )
End If

Return SQLCA.SQLCode

Es el cambio que me dijiste que hiciera todo lo demas esta igual!
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:Como hago una ventana de login? Parte II

Publicado por wend (95 intervenciones) el 21/10/2005 17:53:25
Bueno, te pedi el script de la función of_getconnectioninfo.

Me late que hay que corregir la propiedad SQLCA.dbparm
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:Como hago una ventana de login? Parte II

Publicado por Isaac (38 intervenciones) el 21/10/2005 17:55:40
//*--------------------------------------------------------*/
//* The source of connection information can be changed by
//* altering the value of the 'is_connectfrom' variable.
//*--------------------------------------------------------*/
Choose Case is_connectfrom

Case IS_USE_INIFILE /* Populate Database Connection from INI file */
string ls_inifile = ""

as_dbms = ProfileString ( ls_inifile, "Database", "DBMS", "ODBC")
as_database = ProfileString ( ls_inifile, "Database", "Database", "")
as_userid = ProfileString ( ls_inifile, "Database", "UserID", "")
as_dbpass = ProfileString ( ls_inifile, "Database", "DBPass", "")
as_logid = ""
as_logpass = ""
as_server = ProfileString ( ls_inifile, "Database", "Servername", "")
as_dbparm = ProfileString ( ls_inifile, "Database", "DBParm", "ConnectString='DSN=DSN_SINADRO;UID=usuario1;PWD=user1'")
as_lock = ProfileString ( ls_inifile, "Database", "Lock", "")
as_autocommit = ProfileString ( ls_inifile, "Database", "AutoCommit", "false")

Case IS_USE_REGISTRY /* Populate Database Connection from Registry */
string ls_registrykey = "" + "\DataBase"

If RegistryGet ( ls_registrykey, "DBMS", RegString!, as_dbms ) <> 1 Then
RegistrySet ( ls_registrykey, "DBMS", RegString!, "ODBC" )
RegistryGet ( ls_registrykey, "DBMS", RegString!, as_dbms )
End If
If RegistryGet ( ls_registrykey, "Database", RegString!, as_database ) <> 1 Then
RegistrySet ( ls_registrykey, "Database", RegString!, "" )
RegistryGet ( ls_registrykey, "Database", RegString!, as_database )
End If
If RegistryGet ( ls_registrykey, "UserID", RegString!, as_userid ) <> 1 Then
RegistrySet ( ls_registrykey, "UserID", RegString!, "" )
RegistryGet ( ls_registrykey, "UserID", RegString!, as_userid )
End If
If RegistryGet ( ls_registrykey, "DBPass", RegString!, as_dbpass ) <> 1 Then
RegistrySet ( ls_registrykey, "DBPass", RegString!, "" )
RegistryGet ( ls_registrykey, "DBPass", RegString!, as_dbpass )
End If
If RegistryGet ( ls_registrykey, "LogID", RegString!, as_logid ) <> 1 Then
RegistrySet ( ls_registrykey, "LogID", RegString!, "" )
RegistryGet ( ls_registrykey, "LogID", RegString!, as_logid )
End If
If RegistryGet ( ls_registrykey, "LogPassword", RegString!, as_logpass ) <> 1 Then
RegistrySet ( ls_registrykey, "LogPassword", RegString!, "" )
RegistryGet ( ls_registrykey, "LogPassword", RegString!, as_logpass )
End If
If RegistryGet ( ls_registrykey, "Servername", RegString!, as_server ) <> 1 Then
RegistrySet ( ls_registrykey, "Servername", RegString!, "" )
RegistryGet ( ls_registrykey, "Servername", RegString!, as_server )
End If
If RegistryGet ( ls_registrykey, "DBParm", RegString!, as_dbparm ) <> 1 Then
RegistrySet ( ls_registrykey, "DBParm", RegString!, "ConnectString='DSN=DSN_SINADRO;UID=usuario1;PWD=user1'" )
RegistryGet ( ls_registrykey, "DBParm", RegString!, as_dbparm )
End If
If RegistryGet ( ls_registrykey, "Lock", RegString!, as_lock ) <> 1 Then
RegistrySet ( ls_registrykey, "Lock", RegString!, "" )
RegistryGet ( ls_registrykey, "Lock", RegString!, as_lock )
End If
If RegistryGet ( ls_registrykey, "AutoCommit", RegString!, as_autocommit ) <> 1 Then
RegistrySet ( ls_registrykey, "AutoCommit", RegString!, "false" )
RegistryGet ( ls_registrykey, "AutoCommit", RegString!, as_autocommit )
End If

Case IS_USE_SCRIPT /* Populate Database Connection from Script */
as_dbms = "ODBC"
as_database = ""
as_userid = ""
as_dbpass = ""
as_logid = ""
as_logpass = ""
as_server = ""
as_dbparm = "ConnectString='DSN=DSN_SINADRO;UID='sle_usuario';PWD='sle_password''"
as_lock = ""
as_autocommit = "false"


Case Else

Return -1

End Choose

Return 1
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:Como hago una ventana de login? Parte II

Publicado por wend (95 intervenciones) el 21/10/2005 18:14:15
Ahí está el problema, no le estas pasando el usuario y el password, debería quedar así:

as_dbparm = "ConnectString='DSN=EAS Demo DB V9;UID=" + as_logid + ";PWD="+as_logpass+"'"
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:Como hago una ventana de login? Parte II

Publicado por Isaac (38 intervenciones) el 21/10/2005 18:16:39
Donde coloco ese bloque?
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:Como hago una ventana de login? Parte II

Publicado por wend (95 intervenciones) el 21/10/2005 18:55:08
Hay que hacer algunos cambios.

1- Función of_init()
El IF debe quedar de la siguiente manera:

If of_GetConnectionInfo ( ls_dbms, ls_database, ls_userid, ls_dbpass, as_user, as_password, ls_server, ls_dbparm, ls_lock, ls_autocommit ) = 1 Then

Fíjate que se cambio la variable ls_logid por as_user y ls_logpass por as_password.

2 - Función of_getconnectioninfo()
Aquí se arma la cadena de conexión:

Case IS_USE_SCRIPT /* Populate Database Connection from Script */
as_dbms = "ODBC"
as_database = ""
as_userid = ""
as_dbpass = ""
// las varibles que estaban aquí, están abajo
as_server = ""
as_dbparm = "ConnectString='DSN=EAS Demo DB V9;UID="+as_logid+";PWD="+as_logpass+"'"
as_lock = ""
as_autocommit = "false"
//
as_logid = ""
as_logpass = ""
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:Como hago una ventana de login? Parte II

Publicado por Isaac (38 intervenciones) el 21/10/2005 20:43:42
El problema sigue igual!
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:Como hago una ventana de login? Parte II

Publicado por Isaac (38 intervenciones) el 21/10/2005 21:08:23
Tenias razón! Caso resuelto! Gracias mil!
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:Como hago una ventana de login? Parte II

Publicado por dsdsd (1 intervención) el 23/10/2005 06:48:48
tanta cosa para un formulario de login? malditos bastardos
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