Esta vaina sólo se ve en Venezuela. Con razón les dicen “chaburros”.

¡Patético caso!
Esta vaina sólo se ve en Venezuela. Con razón les dicen “chaburros”.

¡Patético caso!
Ya fue liberado el código del VFPServer. Un pequeño vistazo por encima, y se ven algunas cosas interesantes.
En enero, cuando esté mas desocupado, a meterle mano.
A quien no le a pasado, que va a revisar un link interesante que le han enviado por mail el día anterior, y entonces…
Preguntaba Horacio, desde Argentina, sobre cómo hacer una consulta de la información de ciertos clientes que se seleccionan desde un grid.
Aunque no es un caso exactamente igual al descrito por Horacio, creo que es una buena aproximación a la respuesta que buscaba Horacio.
Tengo esta consulta en un archivo de texto (sql_DocsCobrar003.sql), la cual me trae, para un cierto cliente seleccionado, algunos tipos de documentos (curBase.doc_presup, curBase.doc_ordenc y curBase.doc_pendie):
SELECT ccVentac.doc_codigo ,;
empDocumentos.doc_nombre ,;
ccVentac.doc_numero ,;
ccVentac.doc_emisio ,;
ccVentac.doc_totgen ;
FROM ccVentac,empDocumentos ;
WHERE ccVentac.cli_rif=#1 ;
AND ccVentac.doc_codigo$#2 ;
AND EMPTY(ccVentac.doc_cancel);
AND EMPTY(ccVentac.doc_anula) ;
AND empDocumentos.doc_codigo=ccVentac.doc_codigo;
AND empDocumentos.doc_modulo='CXC';
ORDER BY 1,3
Entonces, el código del evento BUSCAR de mi formulario, queda de esta manera:
lSelect=FILETOSTR(gRutaSQL+'sql_DocsCobrar003.sql')
lSelect=oFun.ParaToStr(lSelect,curBase.cli_rif,lDocPresup+lDocOrden+lDocPend)
lCursor="curPresupuesto"
oVFPSclient.SelectToCursor(lSelect,lCursor)
IF !EMPTY(doc_codigo)
DO FORM buscaPresupuestos TO lOk
IF lOk
***
***
***
ENDIF
ENDIF
En el caso de la consulta de Horacio, debería encadenar todas las combinaciones CLIENTES+DOCUMENTOS seleccionadas y, entonces, realizar la sustitución con el evento oFun.ParaToStr.
Hay momento en los cuales necesitamos realizar consultas SQL al VFPServer utilizando como filtro algunas variables. Por supuesto, esto nos genera un cierto problemita, ya que las consultas se envían al servidor como cadenas de textos.
Afortunadamente, tenemos el evento ParaToStr del objeto oFun. Este evento nos permite incluir fácilmente los valores deseados dentro de las cadenas de textos que definen las consultas.
Por ejemplo, si necesitamos consultar la información de un cliente X, podemos tener la siguiente consulta en un archivo de texto:
SELECT ccClient.cli_rif ,; ccClient.cli_nit ,; ccClient.cli_nombre,; ccClient.cli_dir ,; ccClient.cli_email ,; ccClient.cli_criter,; ccClient.cli_dcredi,; ccClient.cli_limite,; ccClient.cli_precio,; ccClient.cli_iva ,; ccClient.cli_descto,; ccClient.ven_codigo,; ccVendedor.ven_nombre ; FROM ccClient,ccVendedor; WHERE ccClient.cli_rif=#1; AND ccVendedor.ven_codigo=ccClient.ven_codigo
Entonces, en nuestro evento de búsqueda, podemos tener el siguiente código:
lSelect=FILETOSTR('\solprotec\sql\sql_Clientes002.sql')
lSelect=oFun.ParaToStr(lSelect,THIS.Value)
lCursor1="curClientes"
=oVFPSclient.SelectToCursor(lSelect,lCursor1)
Con este evento ParaToStr, podemos hacer hasta 50 sustituciones dentro de una misma cadena de texto.