Discussion:
Cargar campo en ComboBox
(demasiado antiguo para responder)
Gonzalo García
2009-05-21 22:37:15 UTC
Permalink
Hola gente. Como dice el título, estoy tratando de cargar un campo de mi base
de datos a un combobox. En principio no habría ningun problema, pero al hacer
el bucle me encuentro con valores nulos, por lo que me salta el siguiente
error;
Error 94; uso no valido de null. Realmente agradecería si alguien me da una
mano con el problema. Aca les escribo el código que estoy usando.

Private Sub Form_Load()


Dim dbColegio As Database
Dim rstColegio As Recordset


Dim strSQL As String

Set dbColegio = OpenDatabase(App.Path & "\" & "dbColegio.mdb") 'abro base de
datos "dbColegio.mdb"
Set rstColegio = dbColegio.OpenRecordset("DatColegio", dbOpenTable)


With cboBuscar
.Clear

While Not rstColegio.EOF
AddItem rstColegio.Fields("Vendedor").Value
rstColegio.MoveNext

Wend
End With

Tambien me adelanto a preguntarles si una ves solucionado el problema se van
a cargar registros repetidos?. Desde ya muchas gracias.
Atte-

Gonzalo García
Icaro
2009-05-21 23:49:20 UTC
Permalink
Hola. El error se produce porque algunos elementos de ese campo están
vacíos, y, al estar vacíos contienen el valor Null.
El combobox no admite elementos con el valor null.

Tienes varias soluciones, la menos elegante es colocar un: "On local
error resume next" antes de iniciarse el bucle y un "On error goto 0"
al salir del buccle.
Con esto solo se cargaran los elementos que contengan algun valor.
Tambien puede incluir en el bucle una extructura IF para discriminar
los elementos con valor Null y que se cargen solo el resto.

En todo caso, pienso que lo ideal, ya que vas a presentar el campo
posteriormente en un Combobox, no permitas que el usuario lo deje en
blanco. Chequea el campo antes de grabarlo en la base. (O si estás
trabajando con objetos enlazados, define el campo para que no admita
el valor null, así obligara al usuario a completarlo).

Saludos, Icaro.
Icaro
2009-05-21 23:52:17 UTC
Permalink
A lo último:
Si has permitido que se ingresen registros repetidos, se mostraran
esos registros repetidos.

Saludos, icaro
Icaro
2009-05-22 00:00:39 UTC
Permalink
Perdona que no me haya fijado mucho en el código.
en la linea el la que cargas el campo al combo le falta el objeto:
pones "additem" ciando debería ser "combo1.additem", donde combo1 es
el nombre del combobox.

De momento...
Icaro
2009-05-22 00:02:38 UTC
Permalink
On 22 mayo, 00:37, Gonzalo García
Post by Gonzalo García
Hola gente. Como dice el título, estoy tratando de cargar un campo de mi base
de datos a un combobox. En principio no habría ningun problema, pero al hacer
el bucle me encuentro con valores nulos, por lo que me salta el siguiente
error;
Error 94; uso no valido de null. Realmente agradecería si alguien me da una
mano con el problema. Aca les escribo el código que estoy usando.
Private Sub Form_Load()
Dim dbColegio As Database
Dim rstColegio As Recordset
Dim strSQL As String
Set dbColegio = OpenDatabase(App.Path & "\" & "dbColegio.mdb") 'abro base de
datos "dbColegio.mdb"
Set rstColegio = dbColegio.OpenRecordset("DatColegio", dbOpenTable)
With cboBuscar
        .Clear
         While Not rstColegio.EOF
         AddItem rstColegio.Fields("Vendedor").Value
        rstColegio.MoveNext
        Wend
End With
Tambien me adelanto a preguntarles si una ves solucionado el problema se van
a cargar registros repetidos?. Desde ya muchas gracias.
Atte-
Gonzalo García
No había visto la extructura With, lo anterior no vale, está bien.

No termino...
Icaro
2009-05-22 00:07:16 UTC
Permalink
Post by Icaro
On 22 mayo, 00:37, Gonzalo García
Post by Gonzalo García
Hola gente. Como dice el título, estoy tratando de cargar un campo de mi base
de datos a un combobox. En principio no habría ningun problema, pero al hacer
el bucle me encuentro con valores nulos, por lo que me salta el siguiente
error;
Error 94; uso no valido de null. Realmente agradecería si alguien me da una
mano con el problema. Aca les escribo el código que estoy usando.
Private Sub Form_Load()
Dim dbColegio As Database
Dim rstColegio As Recordset
Dim strSQL As String
Set dbColegio = OpenDatabase(App.Path & "\" & "dbColegio.mdb") 'abro base de
datos "dbColegio.mdb"
Set rstColegio = dbColegio.OpenRecordset("DatColegio", dbOpenTable)
With cboBuscar
        .Clear
         While Not rstColegio.EOF
         AddItem rstColegio.Fields("Vendedor").Value
        rstColegio.MoveNext
        Wend
End With
Tambien me adelanto a preguntarles si una ves solucionado el problema se van
a cargar registros repetidos?. Desde ya muchas gracias.
Atte-
Gonzalo García
No había visto la extructura With, lo anterior no vale, está bien.
No termino...
Perdonar que no termine, ahora veo que a additem le falta el punto
incial ".additem"
En proximas ocasiones procuraré ser más cuidadoso.
Saludos, icaro
Icaro
2009-05-22 00:05:33 UTC
Permalink
On 22 mayo, 00:37, Gonzalo García
Post by Gonzalo García
Hola gente. Como dice el título, estoy tratando de cargar un campo de mi base
de datos a un combobox. En principio no habría ningun problema, pero al hacer
el bucle me encuentro con valores nulos, por lo que me salta el siguiente
error;
Error 94; uso no valido de null. Realmente agradecería si alguien me da una
mano con el problema. Aca les escribo el código que estoy usando.
Private Sub Form_Load()
Dim dbColegio As Database
Dim rstColegio As Recordset
Dim strSQL As String
Set dbColegio = OpenDatabase(App.Path & "\" & "dbColegio.mdb") 'abro base de
datos "dbColegio.mdb"
Set rstColegio = dbColegio.OpenRecordset("DatColegio", dbOpenTable)
With cboBuscar
        .Clear
         While Not rstColegio.EOF
         AddItem rstColegio.Fields("Vendedor").Value
        rstColegio.MoveNext
        Wend
End With
Tambien me adelanto a preguntarles si una ves solucionado el problema se van
a cargar registros repetidos?. Desde ya muchas gracias.
Atte-
Gonzalo García
Perdonar que no termine, ahora veo que a additem le falta el punto
incial ":additem"
En proximas ocasiones procuraré ser más cuidadoso.
Saludos, icaro
Gonzalo García
2009-05-22 11:37:14 UTC
Permalink
Jaja, gracias Icaro, lo solucione de este modo, a los que le interesa;

With cboBuscar
.Clear
While Not rstColegio.EOF
If IsNull(rstColegio.Fields("Vendedor")) Then
rstColegio.MoveNext
Else
cboBuscar.AddItem rstColegio.Fields("Vendedor").Value
rstColegio.MoveNext
End If


Wend
End With

Desde ya, muchas gracias. Saludos

Gonzalo García
Post by Icaro
On 22 mayo, 00:37, Gonzalo García
Post by Gonzalo García
Hola gente. Como dice el título, estoy tratando de cargar un campo de mi base
de datos a un combobox. En principio no habría ningun problema, pero al hacer
el bucle me encuentro con valores nulos, por lo que me salta el siguiente
error;
Error 94; uso no valido de null. Realmente agradecería si alguien me da una
mano con el problema. Aca les escribo el código que estoy usando.
Private Sub Form_Load()
Dim dbColegio As Database
Dim rstColegio As Recordset
Dim strSQL As String
Set dbColegio = OpenDatabase(App.Path & "\" & "dbColegio.mdb") 'abro base de
datos "dbColegio.mdb"
Set rstColegio = dbColegio.OpenRecordset("DatColegio", dbOpenTable)
With cboBuscar
.Clear
While Not rstColegio.EOF
AddItem rstColegio.Fields("Vendedor").Value
rstColegio.MoveNext
Wend
End With
Tambien me adelanto a preguntarles si una ves solucionado el problema se van
a cargar registros repetidos?. Desde ya muchas gracias.
Atte-
Gonzalo García
Perdonar que no termine, ahora veo que a additem le falta el punto
incial ":additem"
En proximas ocasiones procuraré ser más cuidadoso.
Saludos, icaro
Alejandro Hernández
2009-05-24 05:09:38 UTC
Permalink
Hola Gonzalo,

Otra forma de hacerlo sin tanto código es hacer un:
Set rstColegio = dbColegio.OpenRecordset("Select Vendedor FromDatColegio
Where Vendedor IS NOT NULL")

Si no quisieras registros duplicados utilizarías:
Set rstColegio = dbColegio.OpenRecordset("Select DISTINCT Vendedor
FromDatColegio Where Vendedor IS NOT NULL")

Saludos,

Alejandro
Post by Gonzalo García
Jaja, gracias Icaro, lo solucione de este modo, a los que le interesa;
With cboBuscar
.Clear
While Not rstColegio.EOF
If IsNull(rstColegio.Fields("Vendedor")) Then
rstColegio.MoveNext
Else
cboBuscar.AddItem rstColegio.Fields("Vendedor").Value
rstColegio.MoveNext
End If
Wend
End With
Desde ya, muchas gracias. Saludos
Gonzalo García
Post by Icaro
On 22 mayo, 00:37, Gonzalo García
Post by Gonzalo García
Hola gente. Como dice el título, estoy tratando de cargar un campo de mi base
de datos a un combobox. En principio no habría ningun problema, pero al hacer
el bucle me encuentro con valores nulos, por lo que me salta el siguiente
error;
Error 94; uso no valido de null. Realmente agradecería si alguien me da una
mano con el problema. Aca les escribo el código que estoy usando.
Private Sub Form_Load()
Dim dbColegio As Database
Dim rstColegio As Recordset
Dim strSQL As String
Set dbColegio = OpenDatabase(App.Path & "\" & "dbColegio.mdb") 'abro base de
datos "dbColegio.mdb"
Set rstColegio = dbColegio.OpenRecordset("DatColegio", dbOpenTable)
With cboBuscar
.Clear
While Not rstColegio.EOF
AddItem rstColegio.Fields("Vendedor").Value
rstColegio.MoveNext
Wend
End With
Tambien me adelanto a preguntarles si una ves solucionado el problema se van
a cargar registros repetidos?. Desde ya muchas gracias.
Atte-
Gonzalo García
Perdonar que no termine, ahora veo que a additem le falta el punto
incial ":additem"
En proximas ocasiones procuraré ser más cuidadoso.
Saludos, icaro
Loading...