Access - Necesito ayuda urgente

 
Vista:
sin imagen de perfil

Necesito ayuda urgente

Publicado por Consulta cuadro combinado (9 intervenciones) el 16/04/2024 15:04:10
Tengo dos cuadros combinados. Necesito que el valor de un cuadro pase al otro cuadro combinado de forma automatica.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Necesito ayuda urgente

Publicado por Anonimo (3317 intervenciones) el 16/04/2024 17:58:33
Dependerá del origen de datos de los combos, pueden ser tablas o listas de valores.

Si son tablas lo correcto es que se añadan o retiren de las tablas (añadir de la 'A' a la 'B' y se supone que eliminar de la 'A'), algo que se puede hacer con SQLs y tras ello refrescar la presentación en los combos.

Si se trata de listas de valores, lo idóneo es utilizar el método 'AddItem' de 'A' a 'B' y tras ello borrarla en 'A'

'A' y 'B' solo sirven como ejemplos del método a aplicar, el combo 'A' será el 'donante' y 'B' el receptor (no hay un automatismo para ello, se tiene que crear y para el usuario final ...) será transparente y 'Automático'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Necesito ayuda urgente

Publicado por David (9 intervenciones) el 16/04/2024 18:08:20
Bueno, te comento más en detalle que necesito realizar.
Tengo un cuadro combinado (Select), el cual toma un valor ej. casa.
En el mismo formulario tengo otro Cuadro combinado (Product ID) el cual necesito que tome el mismo valor que Select.
El cuadro combinado (Product ID) tiene origen de registro de la tabla productos, y el valor casa es una opción solo que quiero que salga directamente escrito en ese cuadro combinado.
Me explico. Te puedo pasar la base de datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Necesito ayuda urgente

Publicado por David (9 intervenciones) el 16/04/2024 18:08:30
Bueno, te comento más en detalle que necesito realizar.
Tengo un cuadro combinado (Select), el cual toma un valor ej. casa.
En el mismo formulario tengo otro Cuadro combinado (Product ID) el cual necesito que tome el mismo valor que Select.
El cuadro combinado (Product ID) tiene origen de registro de la tabla productos, y el valor casa es una opción solo que quiero que salga directamente escrito en ese cuadro combinado.
Me explico. Te puedo pasar la base de datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Necesito ayuda urgente

Publicado por Anonimo (3317 intervenciones) el 16/04/2024 20:22:40
En definitiva, pasar (copiar) de un cuadro combinado cuyo origen de datos es una tabla uno de sus Items a otro cuadro combinado.

Si ambos combos tienen orígenes compatibles (ambos se basan en una tabla) una SQL lo soluciona, solo se precisa el ID del registro o un dato (o combinación de datos) que lo diferencie del resto de registros para poder seleccionarlo y (por adelantado) los combos no tendrán datos, solo mostraran los de sus orígenes (las tablas), la SQL seria sencilla:

1
DoCmd.RunSQL "Insert Into (tabla destino) Select * From (tabla donante) Where [tabla donante].ID = Forms.[nombre-formulario].[nombre-combo1]"

En el combo [nombre-combo1] en el que se selecciona el dato a copiar, su columna predeterminada ha de ser el dato (ID) que defina el registro como único.

Tras la ejecución de la SQL el dato aparecerá en la tabla destino, para que se muestre en el combo solo hay que refrescar su contenido
1
Me.[nombre-combo2].Requery

Si se trata de generar algo como una factura, documento de entrega o presupuesto, utilizar un combo para los elementos seleccionados no es lo optimo (se copia el elemento, pero ¿y la cantidad? ...) lo habitual es utilizar un subformulario en lugar de un combo.

Si el tipo de combo (su origen de datos) es una 'lista de valores', el método es diferente y los resultados no se guardan (con la excepción de guardar el formulario por la modificación de uno de sus objetos)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Necesito ayuda urgente

Publicado por David (9 intervenciones) el 17/04/2024 15:46:01
Desde ya te agradezco el esfuerzo que estás haciendo por enseñarme.

Voy a tratar de ser lo mas claro posible.

Tengo un Cuadro Combinado llamado Select que no tiene origen de control, pero tiene origen de fila los valores de la tabla Productos. [ID y Nombre del Producto], de ahi selecciono un nombre de un producto.

En el cuadro combinado segundo llamado Product ID que necesito que directamente tome el mismo valor que Select, si tiene origen de control y tiene tambien origen de fila igual de tabla Productos [Id y Nombre de Producto]

Lo que difiere a Select de Product ID es que el que necesito que tome el valor del primero tiene origen de control y origen de fila.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Necesito ayuda urgente

Publicado por Anonimo (3317 intervenciones) el 17/04/2024 18:45:39
Siendo ambos combos idénticos (solo los diferencia que uno depende de una tabla y el otro una lista de valores en base a la misma tabla),
Para 'sincronizarlos' de forma sencilla ambos han de tener la misma 'columna dependiente' y puede estar oculta.

Para sincronizarlos se utiliza el evento 'al hacer click' de [Select] y con cada click (o al seleccionar uno de los Items) ambos se igualaran:

Activar el evento en [SELECT], seleccionar en el desplegable '[Procedimiento de evento]' y un click en los tres puntitos....
En la ventana que se abre (la de VBA) copiar la línea numero dos (la uno y la tres las pone Access).

1
2
3
Private Sub Select_Click()
Me.Product_ID = Me.Select
End Sub

He asumido los nombres de los objetos pero no me parecen los apropiados:
.- [Select] es una de las 'palabras reservadas' (no se debería utilizar en ese contexto)
.- El otro 'parece' que contiene un espacio (no es lo optimo, un guion bajo le vendría bien)

No tengo clara la verdadera funcionalidad de los dos combos y su sincronía, la solución esta un poco mas arriba (al menos cumple con lo que se solicita).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Necesito ayuda urgente

Publicado por David (9 intervenciones) el 17/04/2024 19:32:57
Si eso lo había probado, pero no me funciona.
Si tienes un correo donde pueda enviarte el archivo, me ayudaría. je.
Te pido mil disculpas, pero estoy trabado con esto.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Necesito ayuda urgente

Publicado por Anonimo (3317 intervenciones) el 17/04/2024 22:31:21
Entiendo que no tenemos el mismo entorno y por ello lo verificado y funcional en el mío, puede que dar problemas en otro diferente.

No publico mi correo-e, pero este foro permite adjuntar datos a los mensajes.

Se puede crear una copia de la aplicación, eliminar de ella la información delicada y tras ello comprimirla en un archivo ZIP para finalmente publicarla aquí.

Hacerlo así añade la ventaja de poder obtener diversos enfoques y sus correspondientes soluciones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Necesito ayuda urgente

Publicado por Geronimo David (9 intervenciones) el 18/04/2024 01:15:31
Formulario Detalles de Pedido.

Vas a encontrar dos cuadros combinados, el primero de la izquierda es el que necesito que copie el valor del segundo. Este segundo tiene la función medio para extraer parte de un cuadro de texto que también te va a figurar en el sistema.
Para que veas el funcionamiento del cuadro de texto y el segundo cuadro combinado cambia el numero de la 6 posición por 1, 2 o 3. Cambiando ese número va a tirar producto en el segundo cuadro combinado. Ahora yo necesito que el primer cuadro combinado copie ese valor.

Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Necesito ayuda urgente

Publicado por Anonimo (3317 intervenciones) el 18/04/2024 10:30:02
El problema lo ha creado el 'origen del control' que se le asigna al combo.

El origen del control es donde se guarda el valor seleccionado en el objeto (un campo del origen de datos del formulario) y no puede ser la/una función que extrae una parte de otro objeto.

Access nunca manipulara una parte de un valor de forma directa, se tendría que crear una función que modificase el dato que hay en el objeto [código].

Es por ello que si se modifica manualmente el dato de referencia (siguiendo las instrucciones comentadas) se cambia directamente el Item seleccionado.

Lo primero que hace Access al cambiar el Item del combo: es actualizar su origen.
Como NO lo logra (no le es posible, es parte de otro objeto) se para la ejecución y nunca llega a ejecutar el evento que actualiza el segundo combo.

En líneas generales me ha dado la impresión de que necesita una revisión de la planificación en aras de conseguir fluidez (tal vez al estar aun en pleno desarrollo, aun no se llego a ese punto).

Si se desea guardar el Item seleccionado en el combo, se le ha de asignar como origen del combo un campo de la tabla subyacente, y si no se va a guardar, no necesita un origen de datos (ni estar duplicado).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Necesito ayuda urgente

Publicado por David (9 intervenciones) el 18/04/2024 15:37:18
Ok, te entiendo.
Una consulta, existe alguna forma que con el combo 2 que tiene la función medio, me traiga el precio del producto. Y el mismo precio si lo cambio de la tabla productos, no me mueva todos los valores?.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Necesito ayuda urgente

Publicado por Anonimo (3317 intervenciones) el 18/04/2024 17:28:57
Para 'sincronizar' el combo con el cuadro de texto [código] mediante la función MID, se puede hacer de varias formas, pero lo que me llama la atención es que pueda existir el dato [código] cuando aún se está creando el registro.
Si la expresión que da error en el combo solo tiene esa funcionalidad, recomiendo eliminarla (será un combo independiente pero funcional).
Si existe un [código] valido y desea que se seleccione el Ítem del combo correcto, propongo que se añada una línea más en el evento CURRENT del formulario (solo se precisa una única vez, después el usuario podrá cambiar la selección).
Para evitar errores se ha de verificar que [código] no sea NULL y que su longitud sea igual o superior a seis caracteres (se utilizan el quinto y sexto):
1
2
3
4
5
6
7
8
Private Sub Form_Current()
If Len(Nz(Me.Codigo, "")) >= 6 Then Me.ProductoSeleccion = Mid(Me.Codigo, 5, 2)
    If Nz(Me![Id de situación], None_OrderItemStatus) = Invoiced_OrderItemStatus Then
        Me.AllowEdits = False
    Else
        Me.AllowEdits = True
    End If
End Sub

Sobre obtener el precio del ítem seleccionado en el combo, lo más sencillo es añadirlo en el combo por lo que su ‘origen de la fila’ será:
Antes:
1
SELECT Productos.ID, Productos.[Nombre del producto] FROM Productos;

Después:
1
SELECT Id, [Nombre del producto], [Precio listado], [Costo estándar] FROM Productos

Hay que modificar (en modo diseño) el combo para que tenga cuatro columnas (no tres que de las que se utilizan dos) e indicar el ancho de las nuevas columnas (cero si se desean ocultar)

En esas condiciones con un Item seleccionado:
1
2
3
4
El ID esta en:  Me. ProductoSeleccion.Column(0)
Su Descripcion en:  Me. ProductoSeleccion.Column(1)
El Precio en:  Me. ProductoSeleccion.Column(2)
Y el Costo en:  Me. ProductoSeleccion.Column(3)

Conocido su ID el resto de los datos se puede obtener con la función DLookup (en el ejemplo se obtendria el precio):

1
[el destino] = DLookup([Precio listado], “Productos”, “ ID =& Me. ProductoSeleccion

Si se 'copia' el precio (no se le referencia) un cambio no altera los datos guardados, solo se modifican los datos que se mantienen 'enlazados' a sus orígenes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Necesito ayuda urgente

Publicado por David (9 intervenciones) el 18/04/2024 23:56:38
Seguramente estoy desperdiciando tu tiempo, pero cabe mencionarte que estoy muy agradecido con la ayuda brindada.

Te comento que hice. El combo ProductoSeleccion lo saque. Puse el código este:

If Len(Nz(Me.Codigo, "")) >= 6 Then Me.ProductID = Mid(Me.Codigo, 5, 2)
If Nz(Me![Id de situación], None_OrderItemStatus) = Invoiced_OrderItemStatus Then
Me.AllowEdits = False
Else
Me.AllowEdits = True
End If


Cambie esto Me.ProductoSeleccion por Me.ProductID para usar un solo combo y que tiene el origen de control. el cual ahora logro llegar al resultado requerido. Dos problemas. El Combo no me refresca el dato de forma automática y si vuelvo con un click al Cuadro de texto [Codigo] ahí si me lo hace. Intente con esto, pero no logra refrescar.

Private Sub Codigo_AfterUpdate()

Me.[ProductID].Requery

End Sub

El segundo es que el combo ProductID si me cambia el cuadro de texto cuando selecciono un producto, pero no me tira el precio de esta forma.

Puedo hacer con el precio lo que me planteas, pero si puedo pasarlo a el cuadro de texto que habia puesto mejor.

Discúlpame la terrible molestia.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

<

Publicado por David (9 intervenciones) el 19/04/2024 00:48:54
Bueno, algo solucionado

Me.requery me lo soluciono. no se si es la forma correcta, pero me anduvo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar