Tema: Combos...
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/08/2005, 01:19
Enea
 
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