Filtrar en un bucle

Si tienes que recorrer todo el contenido de una gran tabla… quizás te compense poner un filtro previo que acelere la busqueda. Mira HFILTER:

SearchKey is string
mycity is string

mycity = "MONTPELLIER"
SearchKey = HFilter(Customer, "CITY='" + mycity + "'")
HReadFirst(Customer, SearchKey)
WHILE HOut() = False
// Process the record 
...
HReadNext(Customer, SearchKey)
END
// Cancels the filter
HDeactivateFilter(Customer)

Internal Procedure

En un mismo trozo de editor… podemos poner un procedure que se invoque varias veces sin tener que crearnos un procedimiento general en la aplicación.

Mira este código:

nCont is int
 // A veces, tenemos cierto código que se repite en distintos bloques de código del mismo proceso
IF True THEN
 Trace("Muestra texto "+nCont)
 nCont++
END
 // A veces, tenemos cierto código que se repite en distintos bloques de código del mismo proceso
IF True THEN
 Trace("Muestra texto "+nCont)
 nCont++
END
 // A veces, tenemos cierto código que se repite en distintos bloques de código del mismo proceso
IF True THEN
 Trace("Muestra texto "+nCont)
 nCont++
END
 // A veces, tenemos cierto código que se repite en distintos bloques de código del mismo proceso
IF True THEN
 Trace("Muestra texto "+nCont)
 nCont++
END
  //////////////
// Podemos simplificarlos haciendo uso de los INTERNAL PROCEDURE
//////////////
nCont2 is int
MyTrace()
MyTrace()
MyTrace()
MyTrace()

INTERNAL PROCEDURE MyTrace()
    Trace("Muestra texto "+nCont2)
    nCont2++
END

Traspasar valor de variables entre ventanas

Hay veces, que necesitamos abrir una ventana hija y usar los valores de variables de la ventana padre.

Las variables declaradas global en una ventana son visibles en las ventanas secundarias de esta ventana en los siguientes casos:

· Si se utiliza la palabra clave EXTERN para declarar la variable en la ventana secundaria.
· Si el nombre de la variable es prefijado por el nombre de la ventana.
· Si la variable se pasa en el parámetro de la ventana secundaria.

Exportar de DBF a MySQL

Creo que la forma mas sencilla es:

– si tienes una tabla en DBF y con la misma estructura en MySQL
– Si tienes un análisis con la estructura de la tabla MySQL

Create una conexión en el WinDev y a continuación escribe:

HMode(“*”, hModeMono)

// abres la tabla 
HDBOpenNoLock(“xctab8”, “FA”, "E:\mitabla.dbf")

// la exportas a XML
HExportXML(“xctab8”, "C:\TEMP\mitabla.xml", hExpCreation)

HChangeConnection(mitabla,MyConnection1)

HImportXML ( "mitabla" , "C:\TEMP\mitable.xml" , hImpCreation )

Como usar un certificado PFX en la web

arrCertificate is array of Certificates
MyCertificate is Certificate

arrCertificate = CertificateLoad("d:\micertificado.pfx", "miclave")
MyCertificate = arrCertificate[1]

Certif is string
cDias is string

// datos para pasarle al HTTP
Certif = MyCertificate.Name

// Comprobar validez
cDias = Val(Today()) - Val(Left(MyCertificate.EndValidityDate,8))

IF Val(cDias) > 0 THEN
     Info("El Certificado está caducado.")
     Return
END
 
HTTPCertificate(Certif)

Cómo pasar parámetros a un EXE

Mira la siguiente linea:


// Path Fichero *.ini
iniPath is string = "C:\myini.ini"

// Observese las tres comillas pues la cadena tiene espacios.
bStarted is boolean = ExeRun("""D:\My Projects\IIS\Exe\IIS.exe"" " +
iniPath, exeActive, exeDontWait)

// La aplicación a la que se llama para que cargue el parametro que se le adjunta tiene que abrirse con:
iniPath is string = CommandLine()

Como leer ficheros DBF

Indudablemente la mejor forma de acceder a ficheros dbf es la forma indicada en esta entrada

No obstante puede ser que en alguna ocasión sólo tengamos que leer (no escribir) ficheros DBF y nos plantee algun tipo de dificultad instalar el driver OLE DB

En esos casos se puede usar un código parecido a este:

HMode(«*», hModeMono)
HDBOpenNoLock(«tabla1», «OR», «C:\<micarpeta>\tabla1.DBF»)
HReadFirst(«tabla1», «nid») // nid es el campo indice principal de la tabla (me parece)
WHILE HOut() = False
Info({«tabla1.campo1»})
HReadNext()
END