SCHEMA decomarmol FUNCTION buscacliente(pnombre,ptipo,secliente) DEFINE idx,ptipo,secliente,cuenta,secvend INT, selec,pnombre,rnombre,rdireccion,rciudad,vende STRING, arrclientes DYNAMIC ARRAY OF RECORD tipo_cliente,sec_cliente INT, nombre,direccion,ciudad,vendedor STRING, sec_vend INT END RECORD, bdata STRING LET bdata = ptipo USING "<<" ,secliente USING "<<<<<<<<<<" ,pnombre CLIPPED LET bdata = bdata.trimLeft() LET selec = "SELECT COUNT(*) FROM vetb00004 a WHERE RTRIM(CAST(a.tipo_cliente AS CHAR(2))+ RTRIM(CAST(a.sec_cliente AS CHAR(10)))+RTRIM(a.nombre)) LIKE '%",bdata CLIPPED,"%'" PREPARE comando1 FROM selec EXECUTE comando1 INTO cuenta IF cuenta IS NULL OR cuenta = 0 THEN LET rnombre ='NO EXISTEN CLIENTES CON ESA CONDICION' LET ptipo=0 LET secliente=0 LET secvend =0 LET vende = NULL RETURN rnombre,ptipo,secliente,rdireccion,rciudad,secvend,vende,false END IF IF cuenta > 1 THEN LET selec = "SELECT a.tipo_cliente,a.sec_cliente,a.nombre,b.calle,b.urbanizacion,CONCAT(ISNULL(c.nom1_emp,' '),' ',ISNULL(c.apell1_Emp,' ')),a.sec_vend FROM vetb00004 a LEFT OUTER JOIN vetb00005 b ON a.tipo_cliente= b.tipo_cliente and a.sec_cliente = b.sec_cliente INNER JOIN adtb00003 c ON c.num_emp = a.sec_vend WHERE CONCAT(RTRIM(CAST(a.tipo_cliente AS CHAR(2))), RTRIM(CAST(a.sec_cliente AS CHAR(10))),RTRIM(a.nombre)) LIKE '%",ptipo USING "<<", secliente USING "<<<<<<<<<<",pnombre CLIPPED,"%'" PREPARE comando2 FROM selec DECLARE busca CURSOR FOR comando2 LET idx = 1 FOREACH busca INTO arrclientes[idx].* LET idx = idx + 1 END FOREACH IF idx = 1 THEN LET rnombre = 'NO EXISTEN CLIENTES CON ESA CONDICION' LET ptipo=0 LET secliente=0 LET secvend =0 LET vende = null RETURN rnombre,ptipo,secliente,rdireccion,rciudad,secvend,vende,false ELSE OPEN WINDOW w1 WITH FORM "vefmwd002" DISPLAY ARRAY arrclientes TO sclientes.* AFTER DISPLAY LET rnombre = arrclientes[arr_curr()].nombre LET ptipo = arrclientes[arr_curr()].tipo_cliente LET secliente = arrclientes[arr_curr()].sec_cliente LET secvend = arrclientes[arr_curr()].sec_vend LET vende = arrclientes[arr_curr()].vendedor EXIT DISPLAY END DISPLAY END IF ELSE LET selec = "SELECT a.tipo_cliente,a.sec_cliente,a.nombre,b.calle,b.urbanizacion,ISNULL(c.nom1_emp,' ')+' '+ISNULL(c.apell1_Emp,' '),a.sec_vend FROM vetb00004 a LEFT OUTER JOIN vetb00005 b ON a.tipo_cliente= b.tipo_cliente and a.sec_cliente = b.sec_cliente INNER JOIN adtb00003 c ON a.sec_vend = a.sec_vend WHERE CAST(a.tipo_cliente AS CHAR(2))+ CAST(a.sec_cliente AS CHAR(10))+RTRIM(a.nombre) LIKE '%",bdata CLIPPED,"%'" DISPLAY "en otro ",selec PREPARE comando3 FROM selec EXECUTE comando3 INTO ptipo,secliente,rnombre,rdireccion,rciudad,vende,secvend END IF IF cuenta > 1 THEN CLOSE WINDOW w1 END IF RETURN rnombre,ptipo,secliente,rdireccion,rciudad,secvend,vende, true END FUNCTION FUNCTION busca_cliente8() DEFINE criterio CHAR(200) DEFINE idx,ptipo,secliente,cuenta,secvend INT, selec,pnombre,rnombre,rdireccion,rciudad,vende STRING, arrclientes DYNAMIC ARRAY OF RECORD tipo_cliente,sec_cliente INT, nombre,direccion,ciudad,vendedor STRING, sec_vend INT END RECORD DEFINE numero_msg LIKE msgtable.cod_msg, curr1 int OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd002" ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST) LET INT_FLAG = false CONSTRUCT criterio ON a.tipo_cliente,a.nombre FROM tipo_cliente,nombre LET selec ="SELECT a.tipo_cliente,a.sec_cliente,a.nombre,b.calle,b.urbanizacion,ISNULL(c.nom1_emp,' ')+' '+ISNULL(c.apell1_Emp,' '),a.sec_vend FROM vetb00004 a LEFT OUTER JOIN vetb00005 b ON a.tipo_cliente= b.tipo_cliente and a.sec_cliente = b.sec_cliente INNER JOIN adtb00003 c ON a.sec_vend = a.sec_vend WHERE a.status_t is NULL AND ", criterio clipped IF INT_FLAG THEN LET numero_msg = 2 CALL msg(numero_msg) GO TO salir_consulta_c END IF PREPARE busca_cliente8s FROM selec IF status >= 0 THEN IF status = notfound THEN LET numero_msg = 3 CALL msg(numero_msg) END IF ELSE END IF DECLARE buscar_clientes CURSOR FOR busca_cliente8s LET idx = 1 FOREACH buscar_clientes INTO arrclientes[idx].* IF status = NOTFOUND THEN EXIT FOREACH END IF IF INT_FLAG THEN LET numero_msg = 2 CALL msg(numero_msg) EXIT FOREACH END IF LET idx = idx + 1 END FOREACH CALL set_count(idx-1) MESSAGE " Selecciona Cliente donde esta el cursor" DISPLAY ARRAY arrclientes TO sclientes.* LET curr1 = arr_curr() IF INT_FLAG THEN LET numero_msg = 2 CALL msg(numero_msg) GOTO salir_consulta_c END IF LET int_flag = FALSE LET ptipo = arrclientes[curr1].tipo_cliente LET secliente = arrclientes[curr1].sec_cliente LET rnombre = arrclientes[curr1].nombre LET rdireccion=arrclientes[curr1].ciudad LET rciudad=arrclientes[curr1].ciudad LET secvend=arrclientes[curr1].sec_vend LET vende=arrclientes[curr1].vendedor LABEL salir_consulta_c: CLOSE WINDOW busqueda RETURN rnombre,ptipo,secliente,rdireccion,rciudad,secvend,vende END FUNCTION