• Domingo 22 de Diciembre de 2024, 14:15

Autor Tema:  Solo Para Expertos!!!  (Leído 2310 veces)

vbmc_2004

  • Miembro activo
  • **
  • Mensajes: 41
    • Ver Perfil
Solo Para Expertos!!!
« en: Jueves 11 de Noviembre de 2004, 04:45 »
0
Hola amigos tengo el siguiente codigo que estoy utilizando para mostrar en un combo lo que tiene un campo de la tabla pero pasa lo siguiente...me muestra error porque el valor del campo en algunos casos sera nulo, lo que quiero hacer es que siga mostrarndo el campo que viene ejemplo

si el registro del campo1 esta vacio
continuar mostrando el registro del campo2 que faltaba en el registro campo1 y asi en adelante cuando encuentre otro registro que esta vacio en el campos1 y creo que no me resulta con el codigo que esta a continuacion que debo cambiar???

Private Sub Form_Load()
sql = " "
sql = sql + " select * from clientes"
Set vista = db.CreateDynaset(sql)
Do Until vista.EOF

If Combo1.AddItem(vista.Fields(1)) <> 0 Then
Combo1.AddItem (vista.Fields(1))
vista.MoveNext
Else
Combo1.AddItem (vista.Fields(2))
vista.MoveNext
End If

Loop

End Sub
<!--c1--></div><table border=\'0\' align=\'center\' width=\'95%\' cellpadding=\'3\' cellspacing=\'1\'><tr><td>CODE </td></tr><tr><td id=\'CODE\'><!--ec1-->[vmbc®]<!--c2--></td></tr></table><div class=\'signature\'><!--ec2-->

DiabloRojo

  • Miembro MUY activo
  • ***
  • Mensajes: 220
    • Ver Perfil
Re: Solo Para Expertos!!!
« Respuesta #1 en: Jueves 11 de Noviembre de 2004, 13:36 »
0
Hola vbmc_2004.

La verdad no entiendo que hace esta línea:
Citar
If Combo1.AddItem(vista.Fields(1)) <> 0 Then

Supongo que funcionará si sólo usas:
Código: Text
  1.  
  2. If vista.Fields(1) &#60;&#62; 0 Then
  3.  
  4.  

Y creo que no es necesario que uses:

Citar
vista.MoveNext

Ya que el Do/Loop se encarga de hacerlo.

Espero que te sirva de algo.


DiabloRojo

LUKER

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Solo Para Expertos!!!
« Respuesta #2 en: Jueves 11 de Noviembre de 2004, 15:04 »
0
;)  Amigo tu problema como dijo  :devil:  se encuentra en la linea
Código: Text
  1.  If Combo1.AddItem(vista.Fields(1)) &#60;&#62; 0 Then  
  2.  
. Debido a que tu verificas que el combo se encuentre vacio y no lo estas haciendo directamente en el registro con el codigo de rojo
Código: Text
  1. If vista.Fields(1) &#60;&#62; 0 Then
  2.  
lo colocas como te dijo rojo y agregas el registro. :)  Es muy sencillo, no como para expertos pero yay que podemos hacer :argh:  :kicking:  Bien por ti Rojo :devil:
Los limites estan en los ojos del hombre, los triunfos en sus mentes, de el es la decision de ser un ciego con fe o un vidente sin futuro

vahba

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Solo Para Expertos!!!
« Respuesta #3 en: Jueves 11 de Noviembre de 2004, 17:42 »
0
Sólo por aclarar, creo que estas confundiendo los términos campo y registro: los registros contiene campos y no al revés....
Ahora bien, creo que puedes usar If IsNull([valor del campo]) para derivar el programa y hacer lo que desees según el campo sea nulo o no.
Si sólo deseas evitar el mensaje de error concatena “” & [valor del campo]
Espero te sirva, sino, acerca más datos para poder ayudarte.
Una observación más... mantén el MoveNext porque el Do... Loop NO se encarga de ello.

DiabloRojo

  • Miembro MUY activo
  • ***
  • Mensajes: 220
    • Ver Perfil
Re: Solo Para Expertos!!!
« Respuesta #4 en: Jueves 11 de Noviembre de 2004, 18:23 »
0
Hey es cierto lo que dice vahba!!!
El Do/Loop NO se encarga del desplazamiento a través de los registros. Mil disculpas por la información errónea.
Lo que sí creo que deberías colocar antes del Do/Loop es un MoveFirst para que al entrar a el ya estés ubicado en el primer registro.

Suerte a todos.

DiabloRojo

LUKER

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Solo Para Expertos!!!
« Respuesta #5 en: Jueves 11 de Noviembre de 2004, 18:29 »
0
:P  Bueno al final y al cabo llegamos a una linda conclucion y ya sabemos campos y registros son totalmente diferentes :kicking:
Los limites estan en los ojos del hombre, los triunfos en sus mentes, de el es la decision de ser un ciego con fe o un vidente sin futuro

Cyclop

  • Miembro MUY activo
  • ***
  • Mensajes: 323
    • Ver Perfil
    • http://www.geocities.com/icotext/spanish/
Re: Solo Para Expertos!!!
« Respuesta #6 en: Viernes 12 de Noviembre de 2004, 01:41 »
0
Y si solo le pones

Código: Text
  1. On Error Resume Next
  2.  
  3.  

Salu2

Cyclop
Icotext Evolution v0.5 para los amantes del ASCII Art
http]

fap1603

  • Miembro MUY activo
  • ***
  • Mensajes: 135
    • Ver Perfil
Re: Solo Para Expertos!!!
« Respuesta #7 en: Viernes 12 de Noviembre de 2004, 02:32 »
0
Holas,

Digo lo mismo de Cyclop, y ademas, si es solo un combo, pues fijate en la lista, es decir:
If Combo.ListCount = 0 Then MsgBox "VACIO" ....

es otra forma, espero te sirva de algo.
Saludos,

Francisco Ayala Pinazo
Lima - Perú

vbmc_2004

  • Miembro activo
  • **
  • Mensajes: 41
    • Ver Perfil
Re: Solo Para Expertos!!!
« Respuesta #8 en: Viernes 12 de Noviembre de 2004, 07:03 »
0
Amigos gracias!!! por la ayuda no he tenido tiempo para probar todas las instrucciones que me dieron ahora si probe la  Cyclop y por lo menos ya no me da el error...pero igual probare los demas codigos apenas me quede tiempo gracias....
PD les cuento se muy poco de visual basic lo que se lo he aprendido de autodidacta de soy solito me ido metiendo en este fantastico mundo muchas por la ayuda...
Salu2

Atte
vbmc_2004 :lightsabre:
<!--c1--></div><table border=\'0\' align=\'center\' width=\'95%\' cellpadding=\'3\' cellspacing=\'1\'><tr><td>CODE </td></tr><tr><td id=\'CODE\'><!--ec1-->[vmbc®]<!--c2--></td></tr></table><div class=\'signature\'><!--ec2-->

vahba

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Solo Para Expertos!!!
« Respuesta #9 en: Viernes 12 de Noviembre de 2004, 14:35 »
0
Qué bueno es poder ayudar y aprender entre todos. Lo de Cyclop es una buena idea, pero cuidado, que sin importar qué tipo de error se produzca el programa intentará seguir en la próxima instrucción, no sólo cuando encuentre un campo nulo. Se puede implementar mejor con un On Error GoTo [etiqueta] y definir ahí cómo seguir según el código de error producido. Algo así:

On Error GoTo Errores
.
.
.

Errores:
Select Case Err.Number
  Case [código de error para campo nulo]
    Resume Next
  Case Else
    MsgBox Err.Description
   End Sub
End Select