Imprimir página | Cerrar ventana

Elegir un valor de 3 segun condición

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84573
Fecha de impresión: 26/Marzo/2026 a las 17:27


Tema: Elegir un valor de 3 segun condición
Publicado por: andressf
Asunto: Elegir un valor de 3 segun condición
Fecha de publicación: 21/Junio/2019 a las 22:28
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 NroFactura , IdClientes_Fact, Tipo_Vta_Fact

t_fact_deta Nro_detalle, Nro_Art_Deta, T_Precio_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

Declaro las variables

Dim vNro_Art_Deta As Variant
Dim VTipo_Vta_deta As Variant

Dim vPvta1_Art As Variant
Dim vPvta2_Art As Variant
Dim vPvta3_Art As Variant

Dim vCompruebo As Variant

Asigno el valor

vPvta1_Art = DLookup("Pvta1_Art", "T_art")
vPvta2_Art = DLookup("Pvta2_Art", "T_art")
vPvta3_Art = DLookup("Pvta3_Art", "T_art")




vNro_Art_Deta = Nz(Me.Nro_Art_Deta.Value, "") 'Se encuentra en el subform f_fact_deta
VTipo_Vta_deta = Nz(forms!f_fact!Tipo_Vta_deta.Value, "") Se encuentra en el form f_fact


            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?

Else

    MsgBox "CODIGO NO EXISTE", vbInformation, "AVISO"
 
    
    
    
    
     End If

Bueno espero su colaboración, se que no es la mejor manera lo que intenté hacer pero bueno... Muchas gracias.



Respuestas:
Publicado por: andressf
Fecha de publicación: 25/Junio/2019 a las 19:32
Buenas, gracias de todos modos, seguramente no me expliqué de la mejor manera.
Dejo como llegué ha hacerlo.


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



Publicado por: Mihura
Fecha de publicación: 25/Junio/2019 a las 19:57
Esa es una forma perfectamente válida.

Otra manera, que ofrece otras ventajas (e inconvenientes):

Select Case CampoAComparar
Case 1
    ....
Case 2, 3
    ....
Case > 100
    ....
Case Else
    ....
End Select


-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: andressf
Fecha de publicación: 25/Junio/2019 a las 20:10
Gracias Mihura, al case no lo manejo bien, no sabes lo que me costó llegar a eso.



Publicado por: AnSanVal
Fecha de publicación: 26/Junio/2019 a las 11:24

Hola andressf.



SELECT CASE es similar al IF... ELSEIF pero más fácil de leer, según tu código:


  If vNro_Art_Deta = vCompruebo Then 'SI EL CODIGO EXISTE? ENTONCES QUE?

      Select Case VTipo_Vta_Fact

          Case "Pvta1_Art"

              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

          Case "Pvta2_Art"

              Me.Precio_Deta = Me.Pvta2_Art

              Me.T_Precio_Deta = "Mayorista"

              Forms!f_factura!F_Factura_Detalle!vend_fact_Det = Forms!f_factura!Vendedor

          Case "Pvta3_Art"

              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 Select

  Else

      MsgBox "CODIGO NO EXISTE", vbInformation, "AVISO"

  End If





-------------
Saludos desde Tenerife.


Publicado por: andressf
Fecha de publicación: 26/Junio/2019 a las 19:31
Hola AnSanVal, gracias! la verdad que viendolo ahora es mucho más facil de leer y menos engorroso.
Muchas gracias, lo pueden cerrar.
Tengo un para de problemas asique seguro estaremos en contacto. Clap








Imprimir página | Cerrar ventana