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

obtener nombre de control combobox

Estas en el tema de obtener nombre de control combobox en el foro de Visual Basic clásico en Foros del Web. Hola a todos tengo un problema con la obtencion de un nombre de mi control combo box. les comento adetalle tengo tres combobox los cuales ...
  #1 (permalink)  
Antiguo 14/07/2011, 17:07
 
Fecha de Ingreso: mayo-2009
Mensajes: 76
Antigüedad: 14 años, 10 meses
Puntos: 0
obtener nombre de control combobox

Hola a todos tengo un problema con la obtencion de un nombre de mi control combo box. les comento adetalle
tengo tres combobox los cuales se ponen visibles dependiendo de un radiobutton seleccionado pero uno a la vez es decir si el radiobutton seleccionado es 1 se muetra el combobox1 y si el radiobuton seleccionado es 2 se muetra el combobox2, hasta el momento todo perfecto.
el siguente paso es validar que los combox no esten vacios, para eso cuento con la suguiente funcion. donde combo propietario y combocompartido son los combos que pueden variar.
Private Function ValidaCampos()
On Error GoTo Err_ValidaCampos
'*Procedimiento : Validacion_Campos
'*Objetivo: Validar de los datos y contenido de la pantalla antes de procesar la información.
'*Base de datos origen:
Dim bFalta As Boolean
Dim strval As String
Dim vacio As Boolean 'para indicar si el origen destino estan vacios

vacio = True
bFalta = False
If ComboPropietario.Text = Empty Or ComboPropietario.Text = "" Then
bFalta = True
End If

If ComboCompartido.Text = Empty Or ComboCompartido.Text = "" Then
bFalta = True
End If

If cbxcliente.Text = Empty Or cbxcliente.Text = "" Then
bFalta = True
End If


If cbxproyecto.Text = Empty Or cbxproyecto.Text = "" Then
bFalta = True
End If


If bFalta = True Then
MsgBox "Favor de llenar los campos vacíos", vbInformation
bNoOk = True
End If
Exit_ValidaCampos:
Exit Function
Err_ValidaCampos:
Me.MousePointer = 0
MsgBox Err.Description
Resume Exit_ValidaCampos
End Function


para obtener esos combos variados hago la suguiente funcion
Private Function ComboPropietario() As ComboBox

Dim cbx1 As Control

If cbxUNP.Visible Then
ComboPropietario = cbxUNP.Name
ElseIf cbxPromotorP.Visible Then
ComboPropietario = cbxPromotorP.Name
Else
ComboPropietario = cbxGerenciaP.Name
End If

End Function que me regresa un combo el punto es que al correr la aplicacion se muestra el siguente error
variable de tipo de objeto o la variable de bloque whih no esta establecida

he visto algunas formas de soolucionaerlo como inocializar el contro pero no me da resultado tal vez este haciendo algo mal y no logro detectar que puede ser agradesco ua yuda de antemano
  #2 (permalink)  
Antiguo 14/07/2011, 21:06
Usuario no validado
 
Fecha de Ingreso: junio-2010
Ubicación: Guatemala
Mensajes: 196
Antigüedad: 13 años, 10 meses
Puntos: 25
Mensaje Respuesta: obtener nombre de control combobox

Saludos,

Primero: Te recomiendo que revises la siguiente guía y esta tambien, puedes usar el navegador google chrome para ver la página traducida.

Segundo: Usa las opciones del foro para mostrar tu código, ya que facilita la lectura del mismo (más personas te pueden ayudar).

Tercero: No son críticas, son sugerencias :)

Código vb:
Ver original
  1. Private Function ComboPropietario() As ComboBox
  2.    Dim cbx1 As Control
  3.  
  4.    If cbxUNP.Visible Then
  5.       ComboPropietario = cbxUNP.Name
  6.    ElseIf cbxPromotorP.Visible Then
  7.       ComboPropietario = cbxPromotorP.Name
  8.    Else
  9.       ComboPropietario = cbxGerenciaP.Name
  10.    End If
  11. End Function

Ok el problema lo tienes en la funcion ComboPropietario(), recuerda que debes de asignar un objeto ComboBox que es el que devuelves en la función.

Para asignar un objeto lo haces de la siguiente manera:
Código vb:
Ver original
  1. Set objObjeto1 = objObjeto2

El código de tu función ComboPropietario quedaria de la siguiente manera:
Código vb:
Ver original
  1. Private Function ComboPropietario() As ComboBox
  2.  
  3.     If cbxUNP.Visible Then
  4.         ' Primero asignar el objeto
  5.        Set ComboPropietario = cbxUNP
  6.         ComboPropietario = cbxUNP.Name
  7.     ElseIf cbxPromotorP.Visible Then
  8.         Set ComboPropietario = cbxPromotorP
  9.         ComboPropietario = cbxPromotorP.Name
  10.     Else
  11.         Set ComboPropietario = cbxGerenciaP
  12.         ComboPropietario = cbxGerenciaP.Name
  13.     End If
  14.  
  15. End Function

Con eso creo que ya puedes modificar el resto de tu código, ya que a mi me genera error en ComboCompartido (Por no tener el código).

Tambien puedes arreglar tu manejo de errores de la siguiente manera:

Has creado dos etiquetas una arriba de la otra, sin embargo algo que han criticado mucho a los programadores de VB es el uso de goto, trata de usarlo solo para manejo de errores, pero no te muevas de un lado para otro ;)

Por ejemplo el manejo de los errores en tu funcion ValidaCampos puede quedar de la siguiente manera:

Código vb:
Ver original
  1. 'Esto es casi el final de tu función ValidaCampos
  2.    If bFalta = True Then
  3.         MsgBox "Favor de llenar los campos vacíos", vbInformation
  4.         bNoOk = True
  5.     End If
  6.  
  7.     Exit Function
  8.    
  9. Err_ValidaCampos:
  10.     Me.MousePointer = 0
  11.     MsgBox Err.Description
  12.  
  13. End Function

Y la última cosita (es la última lo prometo ) es que uses funciones cuando vas a devolver un valor, si no vas a devolver un valor puedes usar procedimientos:

Código vb:
Ver original
  1. Private Sub ValidarCampos2()
  2.     'En lugar de Exit Function utilizas Exit Sub
  3.    Exit Sub
  4. End Sub

Espero que te sea de utilidad y que tomes mis comentarios de una manera constructiva para que sigas aprendiendo y sigas avanzando en la programación (.Net).

Última edición por JonathanB; 14/07/2011 a las 21:08 Razón: Agregue otro enlace
  #3 (permalink)  
Antiguo 15/07/2011, 11:05
 
Fecha de Ingreso: mayo-2009
Mensajes: 76
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: obtener nombre de control combobox

Muchas gracias JonathanB claro que tomo tus cometarios de manera cosntructiva como crecimiento. ha fincionado el agregar la inicializacion del combo pero a la hora de que se obtiene el valor del name me borra el contenido seleccionado del combo he probado cambiar la propiedad por un .text pero eso no me genera el error y no me borra el valor seleccionado del combo pero eso no me regresa el valor del nombre del combo que es lo que necesito, sin perder el valor seleccionado del combo por que ese valor se va agregar en un insert de otra funcion.
Private Function ComboPropietario() As ComboBox
Dim cbx1 As ComboBox
If cbxUNP.Visible Then
Set cbx1 = cbxUNP
ComboPropietario = cbxUNP
ElseIf cbxPromotorP.Visible Then
Set ComboPropietario = cbxPromotorP
ComboPropietario = cbxPromotorP.Text
Else
Set ComboPropietario = cbxGerenciaP
ComboPropietario = cbxGerenciaP.Text
End If
End Function



y una discula por publicar el codigo asi nuevamente peor es que no he encontrado al forma de hacerlo como me lo sugieres, espero no desesperarte saludos
  #4 (permalink)  
Antiguo 15/07/2011, 11:06
 
Fecha de Ingreso: mayo-2009
Mensajes: 76
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: obtener nombre de control combobox

ya he encontrado al forma te publico el codigo de manera correcta espero tu ayuda plis


Código vb:
Ver original
  1. Private Function ComboPropietario() As ComboBox
  2. Dim cbx1 As ComboBox
  3. If cbxUNP.Visible Then
  4.  Set cbx1 = cbxUNP
  5. ComboPropietario = cbxUNP
  6. ElseIf cbxPromotorP.Visible Then
  7.  Set ComboPropietario = cbxPromotorP
  8.  ComboPropietario = cbxPromotorP.Text
  9.  Else
  10.   Set ComboPropietario = cbxGerenciaP
  11.   ComboPropietario = cbxGerenciaP.Text
  12. End If
  13. End Function
  #5 (permalink)  
Antiguo 15/07/2011, 11:13
Usuario no validado
 
Fecha de Ingreso: junio-2010
Ubicación: Guatemala
Mensajes: 196
Antigüedad: 13 años, 10 meses
Puntos: 25
Respuesta: obtener nombre de control combobox

Podrías subir tu proyecto para ver que esta pasando, en lugar de tratar de simularlo.
  #6 (permalink)  
Antiguo 15/07/2011, 11:37
Usuario no validado
 
Fecha de Ingreso: junio-2010
Ubicación: Guatemala
Mensajes: 196
Antigüedad: 13 años, 10 meses
Puntos: 25
Mensaje Respuesta: obtener nombre de control combobox

Creo que ya encontre el problema...

La propiedad default de un combo es text, por lo tanto al ejecutar esta línea estamos diciendo que el combo va a tener como texto el nombre de el combo cbxUNP:

Código vb:
Ver original
  1. ComboPropietario = cbxUNP.Name

Código vb:
Ver original
  1. Private Function ComboPropietario() As ComboBox
  2.    
  3.    If cbxUNP.Visible Then
  4.        Set ComboPropietario = cbxUNP
  5.    ElseIf cbxPromotorP.Visible Then
  6.        Set ComboPropietario = cbxPromotorP
  7.    Else
  8.        Set ComboPropietario = cbxGerenciaP
  9.    End If
  10.  
  11. End Function

Despues en tu función ValidaCampos puedes recobrar el nombre del Combo:
Código vb:
Ver original
  1. 'Dentro de funcion ValidaCampos
  2.    Dim cbbTemporal As ComboBox
  3.    
  4.     Set cbbTemporal = ComboPropietario
  5.    
  6.     If cbbTemporal.Text = Empty Or cbbTemporal.Text = "" Then
  7.         bFalta = True
  8.     End If
  9.     'Como asignamos a cbbTemporal el combo que recobramos de la función ComboPropietario, podemos recuperar el name del combo
  10.    Debug.Print cbbTemporal.Name

Espero que esto solucione tu problema

Última edición por JonathanB; 15/07/2011 a las 11:45 Razón: Completar la respuesta puesto que no habia entendido la pregunta.

Etiquetas: combobox, control, nombre
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 22:01.