Visual Basic - Convertir nombre d form.(string) en objeto form

Life is soft - evento anual de software empresarial
 
Vista:

Convertir nombre d form.(string) en objeto form

Publicado por Diego (2 intervenciones) el 04/09/2006 21:19:06
Hola amigos tengo el siguiente problema, haber si me podeis ayudar:

Estoy realizando una aplicación en la cual a traves de un boton llamo a un formulario que tengo almacenado en la base de datos, pero debido a la gran cantidad de formularios a los que se puede llamar el codigo empieza a ser demasido largo y engorroso. A continuacion os pongo lo que tengo y lo que me gustaria.

Lo que tengo es:

rs.open "Select formulario FROM propiedades WHERE documento LIKE '" & sDocumento & "'", con

if not rs.eof then
if rs.fields(0) = "frmCliente" then
frmcliente.show
elseif rs.fieds(0) = "frmMaeRetencion" then
frmMaeRetencion.show
elseif ..... (y asi sucesivamente)
.......
end if
end if

Lo que me gustaria pq es mucho mas comodo, además de evitar el olvido de algun formulario seria lo siguiente:

rs.fields(0).show

Pero claro un recorset no es un objeto form, necesitaria pasar bien el valor del recordset o de una variable a objeto form, ¿Es posible?, y si es posible ¿cual seria la forma de hacerlo?

Muchas gracias de antemano
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:Convertir nombre d form.(string) en objeto form

Publicado por gatesalias will (7 intervenciones) el 05/09/2006 01:02:15
¿Guardar los formularios en una base de datos?...
Es que se os ucurre cada cosa...... Mira que hay que ser pervertido para eso.
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:Convertir nombre d form.(string) en objeto form

Publicado por israel (25 intervenciones) el 05/09/2006 16:14:43
buenas:

La solucion esta en generar un array GLOBAL con todos los formularios que tengas. Este array de formularios debe cargarse nada mas empezar el programa, o donde tengas ese tema de los formularios. Sobre todo ten en cuenta que solo se debe hacer una vez (sino estarás consumiendo recursos sin necesidad).

Esto es posible haciendolo asi, por ejemplo:

Dim forms(1 To 2) As Form 'DIMENSION SEGUN LOS FORMULARIOS

Private Sub Form_Load() 'CARGA DE FORMULARIOS
Set forms(1) = frmCliente
Set forms(2) = frmMaeRetencion
End Sub

Una vez hecho esto, solo te falta realizar la funcion que abre formularios segun el nombre, como por ejemplo:

Private Sub AbrirForm(ByVal nombre As String)
Dim i As Long
Dim flag As Boolean

flag = False
i = 1
While (i <= UBound(forms)) And flag = False
If forms(i).Name = nombre Then
flag = True
forms(i).Show
Else
i = i + 1
End If
Wend
End Sub

Cuando recibas del campo del recordset el nombre se lo pasas a esta funcion, que será la que automaticamente te abra el formulario. Si pones la funcion y el array en un Modulo (BAS) podras acceder desde cualquier punto del programa.

Postdata: Los nombres aqui si que tienen en cuenta las mayusculas y minusculas, asi que ten cuidado al definirlos en la BD o/y en los formularios.

Espero que te sirva.
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:Convertir nombre d form.(string) en objeto form

Publicado por Christian Rodriguez (4 intervenciones) el 06/09/2006 00:15:32
Creo que yo lo haria asi...

Crear una coleccion, del tipo formulario
asi recorres con un FOR EACH, o sea por cada formulario, cargas el nombre en un Combo (Text), y el indice tambien (ITEMDATA), asi cuando selecciones un formulario de la lista, usas el arreglo de la coleccion con el indice que obtienes del Combo
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