Foros del Web » Programación para mayores de 30 ;) » .NET »

problema con combobox

Estas en el tema de problema con combobox en el foro de .NET en Foros del Web. necesito llenar un combobox a partir de otro. Tengo un combobox de documentos el cual lleno desde una tabla, necesito q al seleccionar un documento ...
  #1 (permalink)  
Antiguo 03/08/2006, 15:19
 
Fecha de Ingreso: mayo-2006
Mensajes: 110
Antigüedad: 18 años
Puntos: 0
problema con combobox

necesito llenar un combobox a partir de otro. Tengo un combobox de documentos el cual lleno desde una tabla, necesito q al seleccionar un documento otro combobox se llene con las cuentas asociadas al documento q estan en otra tabla.
las tablas tienen relacion mediante los codigos.
asi lleno el primer combo (el de documentos)
Private Sub llecmbDocOrdPag()
'' Llena el combo de Tipo de Comprobante
Dim cDocOrdPag As clsfin_t_ord_pag_par
Dim ds As DataSet
Dim cnxDB As clsConexion

Try
cnxDB = New clsConexion
cnxDB.Login = Me.loginProp
cnxDB.Password = Me.passwordProp
cnxDB.Servidor = Me.servidorProp
cnxDB.BaseDatos = Me.baseDatosProp
cnxDB.ConectarDB()
cDocOrdPag = New clsfin_t_ord_pag_par
cDocOrdPag.conexion = cnxDB
cDocOrdPag.ordenaProp = "coddocordpag"

ds = cDocOrdPag.consultar

Me.cmbDocOrdPag.DataSource = ds.Tables(0)
Me.cmbDocOrdPag.DisplayMember = "nomdocordpag"
Me.cmbDocOrdPag.ValueMember = "coddocordpag" 'llave primaria de ambas tablas(fin_t_ord_pag_par y fin_t_ord_pag_par_det)

ds = Nothing
cDocOrdPag = Nothing
cnxDB.DesconectarDB()

Catch ex As System.Exception

Dim basErrores As New basErroresv100
basErrores.txtModulo.Text = Me.Name
basErrores.txtError.Text = "Error Cargando Combo de Documentos"
basErrores.txtDetalle.Text = ex.Message
basErrores.ShowDialog()
Me.Close()
End Try

End Sub

ahora para llenar el otro hago esto en el evento

Private Sub cmbdocordpag_selectedindexchanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbDocOrdPag.SelectedIndexChanged
'if xentmensaje = true then
Dim ds As DataSet
Dim cradordpag As clsfin_t_ord_pag_par_det
Dim cnxdb As clsConexion
'' set de la conexion
Try
cnxdb = New clsConexion
cnxdb.login = Me.loginprop
cnxdb.password = Me.passwordprop
cnxdb.servidor = Me.servidorprop
cnxdb.basedatos = Me.basedatosprop
''crea la conexion
cnxdb.conectardb()
cradordpag = New clsfin_t_ord_pag_par_det

cradordpag.conexion = cnxdb

'llenar el combo de cuentas
If Me.cmbdocordpag.selectedindex <> -1 Then
cradordpag.coddocordpagprop = (Me.cmbdocordpag.selectedvalue)
End If
ds = cradordpag.consultarllave
'me.txtmensaje.text = cstr(dsmensajes.tables(0).rows(0)("mensaje"))
Me.cmbctacontable.datasource = ds.tables(0)
Me.cmbctacontable.displaymember = "codnivel"
Me.cmbctacontable.valuemember = "codnivel"
ds = Nothing
cnxdb.desconectardb()
Catch ex As System.Exception

Dim baserrores As New basErroresv100
baserrores.txtmodulo.text = Me.name
baserrores.txterror.text = "error llenando el combo cuenta contable."
baserrores.txtdetalle.text = ex.message
baserrores.showdialog()
Me.close()
End Try
'end if
End Sub

End Class

llamo a la rutina llecmbDocOrdPag() en el load del form. Al correr ni muestra la ventana y me sale este error: "la conversion del tipo datarowview al tipo integer no es valida". Me ayudan porfa!
  #2 (permalink)  
Antiguo 07/08/2006, 07:43
 
Fecha de Ingreso: agosto-2006
Mensajes: 2
Antigüedad: 17 años, 9 meses
Puntos: 0
Disculpa la molestia, no indicas donde te da el error (linea), deberias utilizar el debug (poner un breakpoint en la entrada al procedimiento llcmbDocOrdPag()) asi seguirle la pista y verificar que es lo que sucede.

Saludos,

AG.
Guatemala, C.A.

Cita:
Iniciado por seques Ver Mensaje
necesito llenar un combobox a partir de otro. Tengo un combobox de documentos el cual lleno desde una tabla, necesito q al seleccionar un documento otro combobox se llene con las cuentas asociadas al documento q estan en otra tabla.
las tablas tienen relacion mediante los codigos.
asi lleno el primer combo (el de documentos)
Private Sub llecmbDocOrdPag()
'' Llena el combo de Tipo de Comprobante
Dim cDocOrdPag As clsfin_t_ord_pag_par
Dim ds As DataSet
Dim cnxDB As clsConexion

Try
cnxDB = New clsConexion
cnxDB.Login = Me.loginProp
cnxDB.Password = Me.passwordProp
cnxDB.Servidor = Me.servidorProp
cnxDB.BaseDatos = Me.baseDatosProp
cnxDB.ConectarDB()
cDocOrdPag = New clsfin_t_ord_pag_par
cDocOrdPag.conexion = cnxDB
cDocOrdPag.ordenaProp = "coddocordpag"

ds = cDocOrdPag.consultar

Me.cmbDocOrdPag.DataSource = ds.Tables(0)
Me.cmbDocOrdPag.DisplayMember = "nomdocordpag"
Me.cmbDocOrdPag.ValueMember = "coddocordpag" 'llave primaria de ambas tablas(fin_t_ord_pag_par y fin_t_ord_pag_par_det)

ds = Nothing
cDocOrdPag = Nothing
cnxDB.DesconectarDB()

Catch ex As System.Exception

Dim basErrores As New basErroresv100
basErrores.txtModulo.Text = Me.Name
basErrores.txtError.Text = "Error Cargando Combo de Documentos"
basErrores.txtDetalle.Text = ex.Message
basErrores.ShowDialog()
Me.Close()
End Try

End Sub

ahora para llenar el otro hago esto en el evento

Private Sub cmbdocordpag_selectedindexchanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbDocOrdPag.SelectedIndexChanged
'if xentmensaje = true then
Dim ds As DataSet
Dim cradordpag As clsfin_t_ord_pag_par_det
Dim cnxdb As clsConexion
'' set de la conexion
Try
cnxdb = New clsConexion
cnxdb.login = Me.loginprop
cnxdb.password = Me.passwordprop
cnxdb.servidor = Me.servidorprop
cnxdb.basedatos = Me.basedatosprop
''crea la conexion
cnxdb.conectardb()
cradordpag = New clsfin_t_ord_pag_par_det

cradordpag.conexion = cnxdb

'llenar el combo de cuentas
If Me.cmbdocordpag.selectedindex <> -1 Then
cradordpag.coddocordpagprop = (Me.cmbdocordpag.selectedvalue)
End If
ds = cradordpag.consultarllave
'me.txtmensaje.text = cstr(dsmensajes.tables(0).rows(0)("mensaje"))
Me.cmbctacontable.datasource = ds.tables(0)
Me.cmbctacontable.displaymember = "codnivel"
Me.cmbctacontable.valuemember = "codnivel"
ds = Nothing
cnxdb.desconectardb()
Catch ex As System.Exception

Dim baserrores As New basErroresv100
baserrores.txtmodulo.text = Me.name
baserrores.txterror.text = "error llenando el combo cuenta contable."
baserrores.txtdetalle.text = ex.message
baserrores.showdialog()
Me.close()
End Try
'end if
End Sub

End Class

llamo a la rutina llecmbDocOrdPag() en el load del form. Al correr ni muestra la ventana y me sale este error: "la conversion del tipo datarowview al tipo integer no es valida". Me ayudan porfa!
  #3 (permalink)  
Antiguo 07/08/2006, 13:14
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 5 meses
Puntos: 53
en las faq's hay un ejemplo de como utizalar los Dbcombos, esta hecho por un servidor..

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #4 (permalink)  
Antiguo 07/08/2006, 13:29
 
Fecha de Ingreso: mayo-2006
Mensajes: 110
Antigüedad: 18 años
Puntos: 0
Bien, muchas gracias, ya solucione el problema.
Resulta q cuando inicia la aplicacion el evento del selectedindex se dispara, por lo q tuve q poner una variable booleana global (xentContables) q arranca en false y cuando lleno el combo 1 la prendo, cuando se acaba la rutina la apago, asi q se pone en tru solo cuando en realidad selecciono un item del combo y ahi si se llena el otro combo; de esta forma

Private Sub cmbdocordpag_selectedindexchanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbDocOrdPag.SelectedIndexChanged

if xentContables = true then
Dim ds As DataSet
Dim cradordpag As clsfin_t_ord_pag_par_det
Dim cnxdb As clsConexion
'' set de la conexion
Try
cnxdb = New clsConexion
cnxdb.login = Me.loginprop
cnxdb.password = Me.passwordprop
cnxdb.servidor = Me.servidorprop
cnxdb.basedatos = Me.basedatosprop
''crea la conexion
cnxdb.conectardb()
cradordpag = New clsfin_t_ord_pag_par_det

cradordpag.conexion = cnxdb

'llenar el combo de cuentas
If Me.cmbdocordpag.selectedindex <> -1 Then
cradordpag.coddocordpagprop = (Me.cmbdocordpag.selectedvalue)
End If
ds = cradordpag.consultarllave
'me.txtmensaje.text = cstr(dsmensajes.tables(0).rows(0)("mensaje"))
Me.cmbctacontable.datasource = ds.tables(0)
Me.cmbctacontable.displaymember = "codnivel"
Me.cmbctacontable.valuemember = "codnivel"
ds = Nothing
cnxdb.desconectardb()
Catch ex As System.Exception

Dim baserrores As New basErroresv100
baserrores.txtmodulo.text = Me.name
baserrores.txterror.text = "error llenando el combo cuenta contable."
baserrores.txtdetalle.text = ex.message
baserrores.showdialog()
Me.close()
End Try
end if
End Sub

End Class
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 04:57.