FoxPro/Visual FoxPro - busquedas multiples

 
Vista:

busquedas multiples

Publicado por marcos (3 intervenciones) el 12/08/2008 03:27:53
queria saber cual es la forma para hacer multiples busquedas utilizando varios parametros, q busque por algo y/o por otra cosa
ej: Codigo desde: hasta:
Zona desde: hasta:
Sub desde: hasta
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

RE:busquedas multiples

Publicado por sergio (737 intervenciones) el 12/08/2008 14:56:20
Tenes que hacer busqueda por busqueda
primero buscas una y despues otra, al menos qu etengas una clave compuesta

index on campo1+campo n+1 tag etiqueta
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
Imágen de perfil de Mauricio
Val: 471
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

busquedas multiples

Publicado por Mauricio (1541 intervenciones) el 12/08/2008 15:52:49
En un Select o en otra busqueda puedes usar el comando BETWEEN.
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
Imágen de perfil de Mauricio
Val: 471
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

busquedas multiples

Publicado por Mauricio (1541 intervenciones) el 12/08/2008 15:53:05
En un Select o en otra busqueda puedes usar el comando BETWEEN.
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

RE:busquedas multiples

Publicado por Miguel (115 intervenciones) el 13/08/2008 06:02:07
Comparto el comentario de Mauricio, utiliza SELECT (SQL), con eso te solucionas muchas necesidades en busquedas anidadas o multiples.

te envio un ejemplo de como lo hago

******************************************
** defino si se seleccionaron alguna condición
*******************************************
swc=swc+iif(thisform.Optfiltro.value=2,"1","0")
swc=swc+iif(thisform.OptProveedor.value=2,"2","0")
swc=swc+iif(thisform.OptOC.value=2,"3","0")
swc=swc+iif(thisform.OptCcosto.value=2,"4","0")
swc=swc+iif(thisform.OptSCcosto.value=2,"5","0")
swc=swc+iif(thisform.OptRequerimiento.value=2,"6","0")
swc=swc+iif(thisform.OptCuenta.value=2,"7","0")
swc=swc+iif(thisform.OptLinea.value=2,"8","0")
swc=swc+iif(thisform.OptFamilia.value=2,"9","0")
swc=swc+iif(thisform.OptProducto.value=2,"1","0")
swc=swc+iif(thisform.ChkFecha.value=1,"2","0")
swc=swc+iif(thisform.chkTipo.value=1,"3","0")
swc=swc+iif(thisform.OptArticulo.value=2,"4","0")

******************************************
** genero cadenas con las condiciones
******************************************
if val(swc)<>0
sw1 =iif(subs(swc,1,1) ="1","voc_sim_a.oican>voc_sim_a.oiate","")
sw2 =iif(subs(swc,2,1) ="2","voc_sim_a.ruc=m.ruc","")
sw3 =iif(subs(swc,3,1) ="3","BETWEEN(voc_sim_a.noc,m.oc1,m.oc2)","")
sw4 =iif(subs(swc,4,1) ="4","subs(vsim_itm_a.cccod,1,2)=m.ccosto","")
sw5 =iif(subs(swc,5,1) ="5","subs(vsim_itm_a.cccod,3,2)=m.sccosto","")
sw6 =iif(subs(swc,6,1) ="6","vsim_itm_a.usucod=m.requerimiento","")
sw7 =iif(subs(swc,7,1) ="7","subs(vsim_itm_a.artcod,1,1)=m.cuenta","")
sw8 =iif(subs(swc,8,1) ="8","subs(vsim_itm_a.artcod,2,1)=m.linea","")
sw9 =iif(subs(swc,9,1) ="9","subs(vsim_itm_a.artcod,3,2)=m.familia","")
sw10=iif(subs(swc,10,1)="1","subs(vsim_itm_a.artcod,5,3)=m.producto","")
sw11=iif(subs(swc,11,1)="2","BETWEEN(voc_sim_a.ocfnoc,m.de,m.a)","")
sw12=iif(subs(swc,12,1)="3","vsim_itm_a.simtip=m.tipo","")
sw13=iif(subs(swc,13,1)="4","vsim_itm_a.artcod=m.artcod","")

*****************************************
** inserto los conectores para mas de una condición
*****************************************
sw=sw1
sw=sw+iif(len(sw2) =0,"",iif(len(sw)=0,sw2," and "+sw2))
sw=sw+iif(len(sw3) =0,"",iif(len(sw)=0,sw3," and "+sw3))
sw=sw+iif(len(sw4) =0,"",iif(len(sw)=0,sw4," and "+sw4))
sw=sw+iif(len(sw5) =0,"",iif(len(sw)=0,sw5," and "+sw5))
sw=sw+iif(len(sw6) =0,"",iif(len(sw)=0,sw6," and "+sw6))
sw=sw+iif(len(sw7) =0,"",iif(len(sw)=0,sw7," and "+sw7))
sw=sw+iif(len(sw8) =0,"",iif(len(sw)=0,sw8," and "+sw8))
sw=sw+iif(len(sw9) =0,"",iif(len(sw)=0,sw9," and "+sw9))
sw=sw+iif(len(sw10)=0,"",iif(len(sw)=0,sw10," and "+sw10))
sw=sw+iif(len(sw11)=0,"",iif(len(sw)=0,sw11," and "+sw11))
sw=sw+iif(len(sw12)=0,"",iif(len(sw)=0,sw12," and "+sw12))
sw=sw+iif(len(sw13)=0,"",iif(len(sw)=0,sw13," and "+sw13))

**************************************
** coloco la condición WHERE y sumo la cadena de condiciones
**************************************
sw="WHERE "+sw

endif

**************************************
** genero mi sentencia SQL
** e sumo mi campo SW si existe alguna condición
** genero un cursor y listo
**************************************

SELECT voc_sim_a.ocanu,voc_sim_a.noc as "Orden",voc_sim_a.ocfnoc as "Fecha",voc_sim_a.ruc,voc_sim_a.pronom as "Proveedor",;
voc_sim_a.proate as "atencion",voc_sim_a.ocfent as "F_Ent_Orden",voc_sim_a.oclent as "Lugar_Entrega",;
voc_sim_a.concod,voc_sim_a.pronom as "Condicion",voc_sim_a.ocmon as "Moneda",voc_sim_a.ocigv as "P_IGV",;
voc_sim_a.oican as "Cant_orden",voc_sim_a.oipu as "P_unitario",voc_sim_a.oidsc as "Prc_Dsct",;
voc_sim_a.oifent as "F_ent_itm",voc_sim_a.oiate as "Cant_recibida",;
round(voc_sim_a.oican*voc_sim_a.oipu,2) as "V_venta",;
vsim_itm_a.simcod,vsim_itm_a.simitm,vsim_itm_a.artcod,;
vsim_itm_a.artdes as "Descripcion",vsim_itm_a.artabr as "Abreviatura",;
vsim_itm_a.umcod as "U_Med",vsim_itm_a.simcan as "Sim_cantidad",vsim_itm_a.simcana as "Cant_aceptada",;
vsim_itm_a.simfent,vsim_itm_a.simurg,vsim_itm_a.simst,vsim_itm_a.simanu,;
vsim_itm_a.cccod,voc_sim_a.proate as "C_Costo",voc_sim_a.proate as "SC_Costo",;
vsim_itm_a.usucod,voc_sim_a.proate as "Requerimiento",;
vsim_itm_a.dmcod,voc_sim_a.proate as "Parte_mant",vsim_itm_a.simtip,voc_sim_a.proate as "Tipo",;
voc_sim_a.proate as "Cuenta",voc_sim_a.proate as "Linea",voc_sim_a.proate as "Familia",;
voc_sim_a.proate as "Producto",codigo(4,year(voc_sim_a.ocfnoc)) as "anio",;
codigo(2,month(voc_sim_a.ocfnoc)) as "mes",voc_sim_a.pedido;
FROM "bd-oc!vsim_itm" Vsim_itm_a INNER JOIN "bd-oc!voc_sim" Voc_sim_a ;
ON (Vsim_itm_a.simcod+vsim_itm_a.simitm+vsim_itm_a.artcod) = Voc_sim_a.simart &sw;
ORDER BY voc_sim_a.pronom, voc_sim_a.ocfnoc;
INTO TABLE &ut&archivo2
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