Combo box y textbox aleatorio ¿Cómo puedo que me muestre solo un dato después de los combobox dependientes?

Espero me pueden apoyar, tengo un formulario con los siguientes combobox dependientes, Producto, Ubicación, Conectividad, Aplicación y Modelo y 2 textbox Proveedor y Cantidad. Mi punto es que requiero que un proveedor salgo definido en el textbox aleatoriamente (tengo hasta 5 proveedores) y no logro como hacerlo me podrían apoyar..

1 Respuesta

Respuesta
1

Geovany: Al ignorar la forma en que tienes montada tu tabla de Proveedores, te doy la idea y creo que no tendrás dificultades en aplicarla, suponiendo que te manejas en VBA.

En el AfterUpdate de tu Combo Producto, generas un aleatorio del 1 al 5 con la Función Rnd.

Guardas ese valor en una variable que por ejemplo puedes llamar >> ProvAleatorio.

Supongamos además que tu TextBox de Proveedor, se llama TxtProveedor.

Como lína para mostrar el proveedor le pones algo así:

Me.TxtProveedor = "SELECT NombreProveedor FROM Proveedores WHERE IdProveedor = " & ProvAleatorio

Ya me contarás. Mis saludos >> Jacinto

Muchas gracias Estimado por tu tiempo. Pero aun no logro funcionar este formulario

Mi tabla comprende de los siguientes campos

IdProveedor

Producto

Aplicación

Categoría (Conectividad)

Proveedor

Modelo

Ubicación(plaza)

Cantidad

Requiero de que el proveedor salga de manera automática después de seleccionar los combos anteriores,( no siempre saldrá 5 proveedores de acuerdo a la zona sino depende de la disponibilidad de acuerdo a la plaza)

El código que realice fue el siguiente

ProvAleatorio = Int((5 * Rnd) + 1)

Me.Proveedor = "SELECT Proveedor from Equipo_Disponible WHERE IdProveedor =" & ProvAleatorio

Y continua sin aparecer solo un proveedor

Espero me pueda ayudar. Muchas Gracias

Geovany: La explicación que das es clara sobre como tienes tu Tabla, que supongo es la que citas en la Selección, o sea Equipo_Disponible.

Si admites que "no siempre Saldrán 5 Proveedores..."

La Función general para aleatorios es :

Rnd (Función)

Int((NumeroMayor - NumeroMenor + 1) * Rnd + NumeroMenor)

De modo que lo que haces con esa Función ya está bien. Otra cosa es que retomando lo de arriba y si solo tienes 2 proveedores disponibles con Id = 2 e Id = 3 y el Aleatorio te devuelve 5, no te tomará ningún Proveedor. Supongo que el Proveedor tiene un Origen de Fila y te devuelve los que encuentra.

De ese modo, el aleatorio lo deberías generar dentro del Rango de números disponibles, pero si los tienes "No correlativos", mal asunto porque ese proceso será muy inseguro.

Mira si con ésta guía puedes salir y si no es así debería de ver tu BD. Mis saludos >> Jacinto

Perdón pero a que se refiere con el rango de números disponibles.

Gracias

Geovany: Me refiero a lo siguiente y te lo comento con un Ejemplo.

En lo que veo arriba de tu Formulario, donde hay Producto = TPVRetail

Supongamos que después de actualizarlo tienes disponibles los proveedores 1,2 y 3 y que el Aleatorio te genera un 5. Lógicamente no te selecconará nada.

Tal como te comentaba arriba, si conocer los Objetos y su relación en tu BD, es dificil seguir sugiriendo posibles soluciones un poco a ciegas.

Ejemplo: ¿Cómo sabes que vas a disponer de 2 o de 5 Proveedores para elegir 1?.

¿Cómo identificas a eso proveedores?. Te apuntaba la posibilidad de que cuelgues tu BD aquí con datos que no sean reales y así la ayuda sería más eficaz. Mis saludos >> Jacinto

Option Compare Database
Dim Sql As String
Dim vendor As String
Private Sub Aplicacion_AfterUpdate()
Forms!Equipo_Disponible!Modelo = Null
'Forms!Equipo_Disponible!Ubicacion = Null
Text10.Value = ""
'Set SubForm = Forms!Equipo_Disponible!Ubicacion
'With SubForm.Requery
'End With
'Forms!Equipo_Disponible!Modelo = Null
Set SubForm = Forms!Equipo_Disponible!Modelo
With SubForm.Requery
End With
End Sub
Private Sub Combo29_AfterUpdate()
If Combo29 = "TPV Retail" Then
DoCmd.OpenQuery "Actualiza_Prod_1"
ElseIf Combo29 = "TPV Retail MIT" Then
DoCmd.OpenQuery "Actualiza_Prod_2"
ElseIf Combo29 = "Super Cobros Plus" Then
DoCmd.OpenQuery "Actualiza_Prod_3"
ElseIf Combo29 = "Centro de Pagos" Then
DoCmd.OpenQuery "Actualiza_Prod_4"
ElseIf Combo29 = "TPV Escuelas MIT" Then
DoCmd.OpenQuery "Actualiza_Prod_5"
ElseIf Combo29 = "TPV Restaurantes" Then
DoCmd.OpenQuery "Actualiza_Prod_6"
ElseIf Combo29 = "TPV Restaurantes MIT" Then
DoCmd.OpenQuery "Actualiza_Prod_7"
ElseIf Combo29 = "Super Cobros Plus Restaurantes" Then
DoCmd.OpenQuery "Actualiza_Prod_8"
ElseIf Combo29 = "Centros de Pagos Restaurantes" Then
DoCmd.OpenQuery "Actualiza_Prod_9"
ElseIf Combo29 = "TPV Hoteles" Then
DoCmd.OpenQuery "Actualiza_Prod_10"
ElseIf Combo29 = "Super Cobros Plus Hoteles" Then
DoCmd.OpenQuery "Actializa_Prod_11"
ElseIf Combo29 = "Centro de Pagos Hoteles" Then
DoCmd.OpenQuery "Actualiza_Prod_12"
'ElseIf Combo29 = "MiTPV" Then
'DoCmd.OpenQuery "Actualiza_Prod_13"
ElseIf Combo29 = "TPV Hoteles MIT" Then
DoCmd.OpenQuery "Actualiza_Prod_14"
End If
Forms!Equipo_Disponible!Aplicacion = Null
Forms!Equipo_Disponible!Modelo = Null
Forms!Equipo_Disponible!Ubicacion = Null
Forms!Equipo_Disponible!Proveedor = Null
Forms!Equipo_Disponible!Combo39 = Null
Text10.Value = ""
'Dim ProvAleatorio
'ProvAleatorio = Int((5 * Rnd) + 1)
'Me.Proveedor = "SELECT Proveedor from Equipo_Disponible WHERE IdProveedor =" & ProvAleatorio
'Set SubForm = Forms!Equipo_Disponible!Proveedor
'With SubForm.Requery
'End With
'Set SubForm = Forms!Equipo_Disponible!Ubicacion
'With SubForm.Requery
'End With
End Sub
Private Sub Combo29_BeforeUpdate(cancel As Integer)
DoCmd.OpenQuery "Limpia_Equip_Disp"
End Sub
Private Sub Combo29_LostFocus()
'Set SubForm = Forms!Equipo_Disponible!Combo39
'With SubForm.Requery
'End With
End Sub
Private Sub Combo39_AfterUpdate()
Forms!Equipo_Disponible!Proveedor = Null
Forms!Equipo_Disponible!Aplicacion = Null
'Forms!Equipo_Disponible!Modelo = Null
'Forms!Equipo_Disponible!Ubicacion = Null
Text10.Value = ""
'Set SubForm = Forms!Equipo_Disponible!Combo39
'With SubForm.Requery
'End With
Set SubForm = Forms!Equipo_Disponible!Aplicacion
With SubForm.Requery
End With
'Set SubForm = Forms!Equipo_Disponible!Proveedor
'With SubForm.Requery
'End With
End Sub
Private Sub Combo39_Click()
'Me.Combo39.RowSource = "SELECT Proveedor.Equipo_Disponible, " _
                    & "FROM Equipo_Disponible" _
                    & "ORDER BY Proveedor.Equipo_Disponible "
'Me.Combo39.Requery
End Sub
Private Sub Combo39_GotFocus()
Set SubForm = Forms!Equipo_Disponible!Combo39
With SubForm.Requery
End With
End Sub
Private Sub Command30_Click()
Text31.Enabled = True
If Me.Text35 < 0 Then
DoCmd.OpenForm "MensajeNo"
ElseIf Me.Text35 = Null Then
Cmd.OpenForm "MensajeVacio"
ElseIf Me.Text35 > 0 Then
DoCmd.OpenQuery "Resta_varios_Equipo_Disponible"
DoCmd.Close
DoCmd.OpenForm "Confirma_asignacion_Realizada"
ElseIf Me.Text35 = 0 Then
DoCmd.OpenQuery "Resta_varios_Equipo_Disponible"
DoCmd.Close
DoCmd.OpenForm "Confirma_asignacion_Realizada"
End If
End Sub
Private Sub Command30_GotFocus()
Text35 = Text10 - Text31
If Text31 = Null Then
Cmd.OpenForm "MensajeVacio"
End If
End Sub
Private Sub Form_GotFocus()
Set SubForm = Forms!Equipo_Disponible!Text10
With SubForm.Requery
End With
End Sub
Private Sub Form_Open(cancel As Integer)
Command14.Enabled = False
Command30.Enabled = False
Text31.Enabled = False
End Sub
Private Sub Form_Timer()
DoCmd.Close acForm, Me.Name
End Sub
Private Sub Label12_Click()
End Sub
Private Sub Modelo_AfterUpdate()
Set SubForm = Forms!Equipo_Disponible!Modelo
With SubForm.Requery
End With
ProvAleatorio = Int((5 * Rnd) + 1)
Me.Proveedor = "SELECT Proveedor from Equipo_Disponible WHERE IdProveedor = " & ProvAleatorio
'End If
'SELECT Modelos.id_marca, Marcas.marca, Modelos.id_tipo, Tipos.tipo, Modelos.id_modelo, Modelos.modelo " _
 '       & "FROM (Modelos INNER JOIN Marcas ON Modelos.id_marca=Marcas.id_marca) INNER JOIN Tipos ON Modelos.id_tipo=Tipos.id_tipo "
'SELECT Equipo_Disponible.Proveedor
'FROM Dealer_vendors INNER JOIN Equipo_Disponible ON Dealer_vendors.Ubicacion = Equipo_Disponible.Ubicacion
'Set SubForm = Forms!Equipo_Disponible!Text10
'With SubForm.Requery
'Set SubForm = Forms!Equipo_Disponible!Ubicacion
'With SubForm.Requery
'End With
'End With
'Forms!Equipo_Disponible!Ubicacion = Null
'Text10.Value = ""
End Sub
Private Sub Modelo_Click()
Set SubForm = Forms!Equipo_Disponible!Text37
With SubForm.Requery
End With
End Sub
Private Sub Text10_BeforeUpdate(cancel As Integer)
End Sub
Private Sub Ubicacion_AfterUpdate()
Set SubForm = Forms!Equipo_Disponible!Ubicacion
With SubForm.Requery
'Set SubForm = Forms!Equipo_Disponible!Modelo
'With SubForm.Requery
End With
'End With
Set SubForm = Forms!Equipo_Disponible!Combo39
With SubForm.Requery
End With
'Forms!Equipo_Disponible!Modelo = Null
'Set SubForm = Forms!Equipo_Disponible!Modelo
'With SubForm.Requery
'End With
End Sub
Private Sub Proveedor_AfterUpdate()
Set SubForm = Forms!Equipo_Disponible!Text10
With SubForm.Requery
End With
Command14.Enabled = True
Command30.Enabled = True
Text31.Enabled = True
'Forms!Equipo_Disponible!Aplicacion = Null
Text10.Value = ""
'Set SubForm = Forms!Equipo_Disponible!Aplicacion
'With SubForm.Requery
'End With
End Sub
Private Sub Ubicacion_LostFocus()
Set SubForm = Forms!Equipo_Disponible!Combo39
With SubForm.Requery
End With
End Sub
tABLA 1 EQUIPO_DISPONIBLE
Id    Aplicación    Proveedor    Modelo    Ubicacion    Cantidad    Categoria3    Categoria4
Proveedor     Categoria
1    DUAL    DIAL UP    INGENICO    ICT220     PUEBLA    50    DIAL UP    1
2    DUAL    DIAL UP    INGENICO    ICT220     QUERETARO    1    DIAL UP    1
3    DUAL    DIAL UP    INGENICO    ICT220    ALMACEN CENTRAL    44    DIAL UP    1
4    DUAL    DIAL UP    INGENICO    ICT220    BAJA CALIFORNIA NORTE    1    DIAL UP    1
5    DUAL    DIAL UP    INGENICO    ICT220    CIUDAD DE MEXICO    21    DIAL UP    1
6    DUAL    DIAL UP    INGENICO    ICT220    ESTADO DE MEXICO    12    DIAL UP    1
7    DUAL    DIAL UP    INGENICO    ICT220    GUANAJUATO    4    DIAL UP    1
8    DUAL    DIAL UP    INGENICO    ICT220    JALISCO    5    DIAL UP    1
9    DUAL    DIAL UP    INGENICO    ICT220    MICHOACAN    5    DIAL UP    1
10    DUAL    DIAL UP    INGENICO    ICT220    MORELOS    4    DIAL UP    1
11    DUAL    DIAL UP    INGENICO    ICT220    QUERETARO    6    DIAL UP    1
12    DUAL    DIAL UP    INGENICO    ICT220    QUINTANA ROO    4    DIAL UP    1
13    DUAL    DIAL UP    INGENICO    ICT220    SAN LUIS POTOSI    6    DIAL UP    1
14    DUAL    DIAL UP    INGENICO    ICT220    VERACRUZ    6    DIAL UP    1
15    DUAL    DIAL UP    MICROFORMAS    ICT220    AGUASCALIENTES    4    DIAL UP    1
16    DUAL    DIAL UP    MICROFORMAS    ICT220    ALMACEN CENTRAL    378    DIAL UP    1
17    DUAL    DIAL UP    MICROFORMAS    ICT220    BAJA CALIFORNIA SUR    4    DIAL UP    1
18    DUAL    DIAL UP    MICROFORMAS    ICT220    CAMPECHE    7    DIAL UP    1
19    DUAL    DIAL UP    MICROFORMAS    ICT220    CHIAPAS    3    DIAL UP    1
20    DUAL    DIAL UP    MICROFORMAS    ICT220    CHIHUAHUA    5    DIAL UP    1
21    DUAL    DIAL UP    MICROFORMAS    ICT220    CIUDAD DE MEXICO    40    DIAL UP    1
22    DUAL    DIAL UP    MICROFORMAS    ICT220    COLIMA    4    DIAL UP    1
23    DUAL    DIAL UP    MICROFORMAS    ICT220    ESTADO DE MEXICO    3    DIAL UP    1
24    DUAL    DIAL UP    MICROFORMAS    ICT220    GUANAJUATO    16    DIAL UP    1
25    DUAL    DIAL UP    MICROFORMAS    ICT220    GUERRERO    10    DIAL UP    1
26    DUAL    DIAL UP    MICROFORMAS    ICT220    HIDALGO    5    DIAL UP    1
27    DUAL    DIAL UP    MICROFORMAS    ICT220    JALISCO    18    DIAL UP    1
28    DUAL    DIAL UP    MICROFORMAS    ICT220    MICHOACAN    5    DIAL UP    1
29    DUAL    DIAL UP    MICROFORMAS    ICT220    MORELOS    2    DIAL UP    1
30    DUAL    DIAL UP    VERIFONE     ICT220 IP    NAYARIT    3    DIAL UP    1
31    DUAL    DIAL UP    VERIFONE    ICT220 IP    OAXACA    3    DIAL UP    1
TABLA2 
ID    Producto
1    TPV Retail
2    TPV Retail2
3    Super 
4    Centro
5    TPV Escuelas MIT

Muchas Gracias por el apoyo

Geovany: Miro de entender el conjunto y te comento porque de antemano veo que alguna dificultad voy a tener con los Nombre de Controles ya que no tienen nombre significativos.

Cuando te comentaba que pusieras aquí un enlace con tu BD y datos inventados me refería a la Base de datos no a una parte del código y que además, con Nombres como Combo29, Textxx, Commandxx.

En fin intentaré hacer lo que pueda y si al final no lo acabo de entender te comento.

Mis saludos >> Jacinto

Mil disculpas por el inconveniente

Geonany: No te preocupes pero dado que mi tiempo disponible es casi nulo, no puedo dedicar mucho ala la interpretación de algo que al final ignoro si una propuesta de solución pueda no ser buena.

Entonces creo que si por alguna razón no quieres hacer pública tu BD, aunque yo crea que es lo mejor para recibir más de una solución, puedes enviármela a [email protected]

Entre una de varias cosas que no acierto a ver es si el control "Proveedor" es un Combo o un LisBox o un TextBox.

Insisto en que si tus datos son de tipo confidencial, los cambies a ficticios.

Espero tus noticias. Mis saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas