Access - Elegir entre 3 columnas segun la condicion pvt1 pvt2 pvt3

 
Vista:
sin imagen de perfil
Val: 6
Ha disminuido su posición en 11 puestos en Access (en relación al último mes)
Gráfica de Access

Elegir entre 3 columnas segun la condicion pvt1 pvt2 pvt3

Publicado por Andres (4 intervenciones) el 24/06/2019 15:42:55
Buenas tardes, desde ya muchas gracias por su tiempo, les comento que soy novato con vb pero trato de encontrarle soluciones hasta que se me acaban las ideas y es ahi que pido ayuda.

Paso a comentarles mi problema aunque seguro que para muchos es cuestión de un trámite.

Tengo las Tablas

t_clientes con los campos: idClie , Apell , Cond_vta_clie

t_art con los campos: idArt , Cod_ba_Art, descrip_Art , Pvta1_Art , Pvta2_Art ,Pvta3_Art

t_fact

t_fact_deta

Tengo un formulario llamado:

F_fact basado en la t_fact y su relación con la t_cliente (acá van los datos del cliente, pero también la forma de compra y esto es lo que me va a determinar que precio se le hace si es "Público" , "Mayorista" o "Especial"

y un subformulario llamado F_fact_det basado con la t_fact_deta y vinculado con la t_fact con los campos:

codigo , descrip, cant , P.Vta

Bien, lo que quiero es que al ingresar el código me determine que precio le corresponde, si público, mayorista o especial

Acá dejo algo de lo que intenté hacer... Los campos son de tipo texto

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Dim vNro_Art_Deta As Variant
 
Dim vPvta1_Art As Variant
Dim vPvta2_Art As Variant
Dim vPvta3_Art As Variant
 
Dim VT_Precio_Deta As Variant
 
Dim vCompruebo As Variant
 
 
vNro_Art_Deta = Nz(Me.Nro_Art_Deta.Value, "")
 
VT_Precio_Deta = Nz(Me.T_Precio_Deta.Value, "")
 
 
vPvta1_Art = DLookup("Pvta1_Art", "T_art")
vPvta2_Art = DLookup("Pvta2_Art", "T_art")
vPvta3_Art = DLookup("Pvta3_Art", "T_art")
 
 
'_____________________________________________SI EL CAMPO NO TIENE NINGÚN VALOR____________________________________
If IsNull(Me.Nro_Art_Deta) Then
Me.Nro_Art_Deta.SetFocus
Exit Sub
End If
'_________________________________________________________________________________________________________________
 
 
vCompruebo = DLookup("Cod_ba_Art", "t_Art", "Cod_ba_Art ='" & vNro_Art_Deta & "'")
 
 
     If vNro_Art_Deta = vCompruebo Then 'SI EL CODIGO EXISTE? ENTONCES QUE?
 
      vNro_Art_Deta = DLookup("Pvta1_Art", "T_art")
 
 
          Me.Precio_Deta = vPvta1_Art
 
ElseIf vNro_Art_Deta = DLookup("Pvta2_Art", "T_art") Then
 
 
          Me.Precio_Deta = vPvta2_Art
 
 
ElseIf vNro_Art_Deta <> vCompruebo Then
 
    MsgBox "CODIGO NO EXISTE", vbInformation, "AVISO"
 
 
End If
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

Elegir entre 3 columnas segun la condicion pvt1 pvt2 pvt3

Publicado por Anonimo (3316 intervenciones) el 25/06/2019 01:31:04
No puedo opinar sobre lo publicado (es muy confuso) y creo que le falta mucho para llegar a una solución aceptable... en fin: que necesita unas cuantas vueltas para que tome un poco de color.

En pasos, logrado el primero, se va al segundo, luego al tercero ….. etc.

1.- Localizar si el articulo existe en el almacén (si no existe … se aborta la búsqueda)
(en el evento 'después de actualizar' del campo que se conozca -código, cod_barras, descripción- con DLookup, DCount … se verifica su existencia)

2.- Se conoce el ID del articulo, se conoce al cliente -su [Cond_vta_clie]- obtengamos el precio a aplicar

… este método admite mas de tres precios, solo se precisa añadir condiciones adecuadas

Precio_a_Aplicar = [Pvta1_Art] * ABS ([Cond_vta_clie] = "publico") + [Pvta2_Art] * ABS ([Cond_vta_clie] = "mayorista") + [Pvta3_Art] * ABS ([Cond_vta_clie] = "especial")

Si el cliente es mayorista para cualquier articulo se cumple:
[Cond_vta_clie] = "mayorista"
[Pvta1_Art] = 100
[Pvta2_Art] = 75
[Pvta3_Art] = 50

Precio_a_Aplicar = 100 * ABS ("mayorista" = "publico") + 75 * ABS ("mayorista" = "mayorista") + 50 * ABS ("mayorista" = "especial")
Precio_a_Aplicar = 100 * ABS (Falso) + 75 * ABS (Verdadero) + 50 * ABS (Falso)
Precio_a_Aplicar = 100 * ABS (0) + 75 * ABS (-1) + 50 * ABS (0)
Precio_a_Aplicar = 100 * 0 + 75 * 1 + 50 * 0
Precio_a_Aplicar = 0 + 75 + 0
Precio_a_Aplicar = 75

Espero que a pesar de que se indica 'que los campos son de tipo texto', los campos que se utilicen para calcular (precios, cantidades ….) sean de tipo numérico, porque a Access (y a muchos mas programas) se les da fatal lo de sumar y multiplicar TEXTOS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 6
Ha disminuido su posición en 11 puestos en Access (en relación al último mes)
Gráfica de Access

Elegir entre 3 columnas segun la condicion pvt1 pvt2 pvt3

Publicado por Andres (4 intervenciones) el 25/06/2019 16:09:52
Gracias, seguramente no está bien explicado, de todos modos te agradezco y dejo la solucion.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Dim vNro_Art_Deta As Variant
Dim vPvta1_Art As Variant
Dim vPvta2_Art As Variant
Dim vPvta3_Art As Variant
Dim VTipo_Vta_Fact As Variant
 
Dim vCompruebo As Variant
 
vNro_Art_Deta = Nz(Me.Nro_Art_Deta.Value, "")
VTipo_Vta_Fact = Nz(Forms!f_factura!Tipo_Vta_Fact.Value, "")
 
vPvta1_Art = DLookup("Pvta1_Art", "T_art")
vPvta2_Art = DLookup("Pvta2_Art", "T_art")
vPvta3_Art = DLookup("Pvta3_Art", "T_art")
 
'_____________________________________________SI EL CAMPO NO TIENE NINGÚN VALOR____________________________________
If IsNull(Me.Nro_Art_Deta) Then
Me.Nro_Art_Deta.SetFocus
Exit Sub
End If
'_________________________________________________________________________________________________________________
 
vCompruebo = DLookup("Cod_ba_Art", "t_Art", "Cod_ba_Art ='" & vNro_Art_Deta & "'")
 
If vNro_Art_Deta = vCompruebo Then 'SI EL CODIGO EXISTE? ENTONCES QUE?
 
    If VTipo_Vta_Fact = "Pvta1_Art" Then
 
        Me.Precio_Deta = Me.Pvta1_Art
 
        Me.T_Precio_Deta = "Público"
 
        Forms!f_factura!F_Factura_Detalle!vend_fact_Det = Forms!f_factura!Vendedor
 
    ElseIf VTipo_Vta_Fact = "Pvta2_Art" Then
 
        Me.Precio_Deta = Me.Pvta2_Art
 
        Me.T_Precio_Deta = "Mayorista"
 
        Forms!f_factura!F_Factura_Detalle!vend_fact_Det = Forms!f_factura!Vendedor
 
    ElseIf VTipo_Vta_Fact = "Pvta3_Art" Then
 
        Me.Precio_Deta = Me.Pvta3_Art
 
        Me.T_Precio_Deta = "Especial"
 
        Forms!f_factura!F_Factura_Detalle!vend_fact_Det = Forms!f_factura!Vendedor
    End If
Else
      MsgBox "CODIGO NO EXISTE", vbInformation, "AVISO"
End If
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