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

Combos...

Estas en el tema de Combos... en el foro de Visual Basic clásico en Foros del Web. Tengo un pequeño problema que no se como resolver... Cargo un formulario pasándole un id de cliente para que me seleccione este cliente en un ...
  #1 (permalink)  
Antiguo 24/08/2005, 01:19
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 10 meses
Puntos: 0
Combos...

Tengo un pequeño problema que no se como resolver...

Cargo un formulario pasándole un id de cliente para que me seleccione este cliente en un combo, lo consigo así:

Private Sub Form_Load()

Tabla = "Select Nombre_Comercial from Cliente order by Nombre_Comercial"
RS.Open Tabla
Do While Not RS.EOF
Cmb_Razon.AddItem (RS!Nombre_Comercial)
RS.MoveNext
Loop
RS.Close


Sql_Cliente = "Select Nombre_Comercial, Id, NIF, Direccion, Poblacion, CP from cliente where Id='" & Id_Cliente & "'"


RS.Open Sql_Cliente

If Not IsNull(RS!Id) Then Txt_IdCliente.Text = RS!Id
If Not IsNull(RS!Nombre_Comercial) Then Cmb_Razon.Text = RS!Nombre_Comercial
If Not IsNull(RS!NIF) Then Txt_CIF.Text = RS!NIF
If Not IsNull(RS!Direccion) Then Txt_Direccion.Text = RS!Direccion
If Not IsNull(RS!Poblacion) Then Txt_Poblacion.Text = RS!Poblacion
If Not IsNull(RS!CP) Then Txt_CP.Text = RS!CP

RS.Close

End Sub

Hasta ahí funciona, mi problema es que quiero que sea posible cambiar este cliente por otro (seleccionandolo en el combo) y se actualicen los campos de texto que muestran los principales datos de éste.

Lo intenté asi:

Private Sub Cmb_Razon_Change()
If Cmb_Razon.Text <> "" Then
Tabla = "SELECT Id, Nombre_Comercial, NIF, Direccion, Poblacion, CP FROM cliente WHERE Nombre_Comercial= '" & Cmb_Razon.Text & "'"
RS.Open Tabla
If Not IsNull(RS!Id) Then Txt_IdCliente.Text = RS!Id
If Not IsNull(RS!Nombre_Comercial) Then Cmb_Razon.Text = RS!Nombre_Comercial
If Not IsNull(RS!NIF) Then Txt_CIF.Text = RS!NIF
If Not IsNull(RS!Direccion) Then Txt_Direccion.Text = RS!Direccion
If Not IsNull(RS!Poblacion) Then Txt_Poblacion.Text = RS!Poblacion
If Not IsNull(RS!CP) Then Txt_CP.Text = RS!CP
RS.Close
Else
End If
End Sub

Pero si lo hago así me dice al entrar que "la operación no esta permitida si el objeto esta abierto", supongo que será porque al cargar el mismo lo cambia y como no se ha terminado de ejecutar, el rs falla. He probado a controlar esto con rs.state y no da el error pero no entra nunca en el onchange.
Otra opción que he probado es a utilizar LostFocus() y funciona pero claro obliga al usuario a pulsar otra cosa, intente utilizar la propiedad setfocus metiendolo en onchange y también me daba error "Llamada a procedimiento o argumento no válido".

Ya no sé que hacer no tengo más ideas...

Ayuda por favor! Gracias!
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #2 (permalink)  
Antiguo 24/08/2005, 08:14
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
mira hace algo hace con el bun dbcombo, en las faq's tengo un ejemplo, lo conectas a la db y ya no lo llenas alli te libras de algo, y ademas de permite manejar indices..

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #3 (permalink)  
Antiguo 25/08/2005, 10:12
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 10 meses
Puntos: 0
Hola, gracias por la respuesta...

Estuve mirandolo pero me volvía a encontrar con el mismo problema... igual no acabé de entender bien como aplicarlo. Igualmente lo resolví usando el evento onclick y parece que se adapta bastante bien.

Gracias igualmente!
__________________
Ibisof | Saludos desde Eivissa !!! :p
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 05:22.