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

Demasiados Formularios

Estas en el tema de Demasiados Formularios en el foro de Visual Basic clásico en Foros del Web. Bueno, aquí pongo esto a ver si me podíes orientar un poco. Sucede que tengo una aplicación vb6 que se conecta a una base access97. ...
  #1 (permalink)  
Antiguo 16/06/2005, 12:16
jorevale
Invitado
 
Mensajes: n/a
Puntos:
Demasiados Formularios

Bueno, aquí pongo esto a ver si me podíes orientar un poco.

Sucede que tengo una aplicación vb6 que se conecta a una base access97.

En determinado momento del sistema se le ofrece al usuario (mejor dicho, intento ofrecerle al usuario) la posibilidad de que haga consultas a la base y según el resultado de la consulta quisiera que se llenara un MSHFlexGrid con los resultados de la consulta. Este está conectado a la base mediante ADO. La base está protegida con contraseña.

Y el resultado de la consulta lo define el usuario mendiante su clic en los DataCombos (que son varios).

Si hago un Formulario por cada MSHFlexGrid para dejarlo fijo, son demasiados formularios. Y me parece absurdo. Por eso pretendo pasarle en tiempo de ejecución al programa los datos para que me enlace a la base, y ahí es donde me trabo, porque llevo muy poco tiempo en esto.

Agradecería sus sugerencias.

Hasta mañana (que hoy ya tengo fiebre)
  #2 (permalink)  
Antiguo 16/06/2005, 16:07
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 3 meses
Puntos: 1
Puedes hacer los siguiente en un formulario pon tu FlexGrid (bueno me imagino que ya lo tienes).

Por cada Consulta tendras que hacer un procedimiento, este procedimiento llamará al formulario, pero pero solo lo cargas para que puedas acceder a todas las propiedades, objetos y demás (lo cargas así Form1.Load), configuras el FlexGrid a tu manera; vacias o elazas los datos y muestras el formualrio.

Ahora si le hechas candela talvez puedas hacer una utilidad bastante génerica que te simplifique el trabajo rutinario.

Saludes.
__________________
Leer es Saber, REEL.
Mi Blog
  #3 (permalink)  
Antiguo 16/06/2005, 18:02
Avatar de vbx3m  
Fecha de Ingreso: febrero-2005
Ubicación: Venezuela
Mensajes: 524
Antigüedad: 19 años, 3 meses
Puntos: 1
No necesariamente debes poner un flexgrid en cada formulario... Puedes trabajar con condiciones(Select case), crear controles dinamicamente depende de la consulta... Si decides que vas a trabajar por formulario recuerda descargar algunos de memoria (los que no utilices) porque si no se relentiza tu aplicación...
__________________
ホルヘ・ラファエル・マルティネス・レオン
  #4 (permalink)  
Antiguo 17/06/2005, 01:32
 
Fecha de Ingreso: mayo-2005
Mensajes: 93
Antigüedad: 19 años
Puntos: 1
POrqué no obtienes una consulta SQL para cada tipo de listado que quieras y después, los relacionas al mismo HFlexgrid???

Yo tengo esta función

Sub conectarHGridConADODC(componenteHGrid As MSHFlexGrid, CONEXION As ADODB.Connection, Sql As String, rs As ADODB.Recordset)
'Declaración del recordset
Set rs = New ADODB.Recordset
'Apertura del recordset
rs.Open Sql, CONEXION, adOpenKeyset, adLockReadOnly
'Asignación del recordset al HFlexgrid
Set componenteHGrid.DataSource = rs
End Sub

Siendo:

ComponenteHGrid -> El HFlexGrid que vas a utilizar para mostrar los datos
CONEXION --------> La conexión que utilizas para conectar el recordset con la base de datos. Si utilizas string de conexión u ODBC, deberías modificar la función.
SQL ---------------> La SQL que te devuelve los datos que quieres mostrar en el hflexgrid
rs -----------------> El recordset que abres y asocias finalmente al hflexgrid



Es decir, cuentas con una sola pantalla de listados compuesta por un formulario y un hflexgrid, y es esa pantalla la que cargas siempre que quieras mostrar un listado de este tipo.

Otra posibilidad que tengo implementada es una base de datos de listados en la que muestro tengo todos los listados que mi programa es capaz de obtener, con la sql asociada al mismo y con ciertos parámetros por los que suelo determinar dicha búsqueda (generalmente fechas).

Espero qye te haya servido de ayuda
__________________
No te hubieran dado la capacidad de soñar sin darte también la posibilidad de convertir tus sueños en realidad

Última edición por zabait; 17/06/2005 a las 01:41
  #5 (permalink)  
Antiguo 17/06/2005, 01:39
 
Fecha de Ingreso: mayo-2005
Mensajes: 93
Antigüedad: 19 años
Puntos: 1
Y para que puedas formatear bien el HFlexGRid ahí te va una función:

Sub formatearHGrid(GridAux As MSHFlexGrid, widthCeldas(), nomCeldas())

With GridAux

Dim I As Integer

If .Rows = 0 Then .Rows = 1
.Row = 0
'Damos las características y WIDTHs a la primera línea del listado
For I = 0 To UBound(widthCeldas)
.col = I: .CellAlignment = 4: .CellFontBold = True: .ColWidth(I) = widthCeldas(I): .Text = nomCeldas(I)
Next

End With

GridAux.SelectionMode = flexSelectionByRow
GridAux.AllowUserResizing = flexResizeColumns

End Sub

Siendo:


GRidAux -----> El hfelxgrid que quieres formatear
widthceldas -> Array que contiene todos los width de las columnas
nomceldas ---> Array que contiene todos los nombres de las columnas


Ahora entiendes el porqué tengo la base de datos con los listados???? Porque además, tengo dos campos que tienen los valores para cada listado de los dos arrays, separados por comas.

Justo antes de pasarlos como parámetros de la llamada de la función, realizao lo siguiente:

widthceldas() = Array( rs("widthceldas"))
nomceldas() = Array( rs("nomceldas"))


Bueno te acabo de dar todo lo que tengo para listados con hflexgrid, asi que espero que te sirva de ayuda
__________________
No te hubieran dado la capacidad de soñar sin darte también la posibilidad de convertir tus sueños en realidad
  #6 (permalink)  
Antiguo 17/06/2005, 02:45
jorevale
Invitado
 
Mensajes: n/a
Puntos:
De acuerdo

Gracias Zabait, muy amable

Analizaré el código y voy a intentar seguir tus pasos. Me parece que me puede servir.

Salu2
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:13.