RE:Posicionar un datacombo en un valor
Publicado por
Juan (1 intervención) el 02/11/2006 18:25:14
Bueno te cuento como lo he resuelto yo despues de mirar en el foro.
Aclarar que estoy utilizando VB6 y MySQL.
Lo hago como sigue;
Dim StrRst As String
' Crear los objetos Conexion a la Base de DATOS.
Set DBConex = New adodb.Connection
Set RstSeleccion = New adodb.Recordset
'Utilizo variables publicas para los parametros de la conexion .
'Abrimos la conexion a la base de datos.
DBConex.Open "DRIVER=" & PrmDBCon.Driver & ";" & _
"SERVER=" & PrmDBCon.Server & ";" & _
"DATABASE=" & PrmDBCon.DataBase & ";" & _
"UID=" & PrmValidacion.UsrName & ";" & _
"PWD=" & PrmValidacion.UsrPwd & ";" & _
"OPTION=" & PrmDBCon.Options
'Asignamos parametros al recordset de Seleccion.
RstSeleccion.CursorLocation = adUseClient
RstSeleccion.CursorType = adOpenDynamic
RstSeleccion.LockType = adLockOptimistic
StrRst = "SELECT IdOperario," & _
"concat(Nombre,' ' ,Apellido1,' ',Apellido2) as NombreCompleto," & _
"DNI " & _
"FROM TblOperario;"
'Abrimos el recordset de SELECCION.
RstSeleccion.Open StrRst, DBConex
'Cargamos los DataCombo de SELECCION con los parametros.
Set SelecOper(0).RowSource = RstSeleccion
SelecOper(0).ListField = "IdOperario"
SelecOper(0).BoundColumn = "IdOperario"
SelecOper(0) = RstSeleccion.Fields("Idoperario")
Set SelecOper(1).RowSource = RstSeleccion
SelecOper(1).ListField = "NombreCompleto"
SelecOper(1).BoundColumn = "IdOperario"
SelecOper(1) = RstSeleccion.Fields("NombreCompleto")
Set SelecOper(2).RowSource = RstSeleccion
SelecOper(2).ListField = "DNI"
SelecOper(2).BoundColumn = "IdOperario"
SelecOper(2) = RstSeleccion.Fields("DNI")
Como puedes observar los DataCombo los he creado en una matriz para simplificar codigo. Tambien puedes observar que la 'BoundColumn' es la misma para los tres de esta manera podremos posicionarlos correctamente.
Para que al seleccionar un valor cambien los otros al registro o valor del seleccionado lo he realizado en el evento 'click'
Private Sub SelecOper_Click(Index As Integer, Area As Integer)
Select Case Index
Case 0
SelecOper(1).BoundText = SelecOper(0).BoundText
SelecOper(2).BoundText = SelecOper(0).BoundText
Case 1
SelecOper(0).BoundText = SelecOper(1).BoundText
SelecOper(2).BoundText = SelecOper(1).BoundText
Case 2
SelecOper(0).BoundText = SelecOper(2).BoundText
SelecOper(1).BoundText = SelecOper(2).BoundText
End Select
End Sub
Como se trata de una matriz de DataCombo, el valor de 'Index' nos dice que DataCombo es el seleccionado, con lo que cambiamos solo los otros 2, asignandole el valor al 'BoundText'.
Espero ta haya servido de ayuda.
Saludos.