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
|
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. 
|
|