** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Elegir un valor de 3 segun condición
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoElegir un valor de 3 segun condición

 Responder Responder
Autor
Mensaje
andressf Ver desplegable
Habitual
Habitual
Avatar

Unido: 12/Abril/2011
Localización: Argentina
Estado: Sin conexión
Puntos: 147
Enlace directo a este mensaje Tema: Elegir un valor de 3 segun condición
    Enviado: 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.
Arriba
andressf Ver desplegable
Habitual
Habitual
Avatar

Unido: 12/Abril/2011
Localización: Argentina
Estado: Sin conexión
Puntos: 147
Enlace directo a este mensaje Enviado: 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

Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 13990
Enlace directo a este mensaje Enviado: 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.

Access Aplicaciones
Tecsys.es
Arriba
andressf Ver desplegable
Habitual
Habitual
Avatar

Unido: 12/Abril/2011
Localización: Argentina
Estado: Sin conexión
Puntos: 147
Enlace directo a este mensaje Enviado: 25/Junio/2019 a las 20:10
Gracias Mihura, al case no lo manejo bien, no sabes lo que me costó llegar a eso.

Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5970
Enlace directo a este mensaje Enviado: 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.
Arriba
andressf Ver desplegable
Habitual
Habitual
Avatar

Unido: 12/Abril/2011
Localización: Argentina
Estado: Sin conexión
Puntos: 147
Enlace directo a este mensaje Enviado: 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





Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable