PC SOFT

AYUDA EN LÍNEA
DE WINDEV, WEBDEV Y WINDEV MOBILE


Este contenido proviene de una traducción automática.. Haga clic aquí para ver la versión original en inglés.
  • ¿Cuándo utilizar HBuildKeyValue?
  • Búsqueda genérica
  • Creación de una clave compuesta utilizada en un filtro con límites
  • Construir una clave compuesta sin usar HBuildKeyValue
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Otros
Procedimientos almacenados
Construye el valor de una clave compuesta para implementar un filtro (HFilter) o para realizar una búsqueda (HReadSeekFirst, HReadSeekLast, etc.).
Esta función puede ser sustituida por una array de valores, más fácil de usar.. Por ejemplo:
HReadSeekFirst(FileName, LINKEDCOMPKEY, ["Last name", "First name"])
Are igual a:
HReadSeekFirst(FileName, LINKEDCOMPKEY, ...
HBuildKeyValue(FileName, LINKEDCOMPKEY, "Last name", "First name"))
Sugerencia: Para navegar por una archivo de datos según una clave compuesta, usa la sentencia FOR EACH en clave compuesta (sintaxis 5).
Vea Llaves compuestas para más detalles.
Recordatorio: Las teclas compuestas son cadenas binarias cuyo contenido no se puede mostrar directamente.
señalar: A partir de la versión 19, HFSQL es el nuevo nombre de HyperFileSQL.
Ejemplo
bufSoughtVal is Buffer

// Build the composite key
bufSoughtVal = HBuildKeyValue(CUSTOMER, LASTNAME_FIRSTNAME, "MOORE", "Vince")

// Build a String/Integer composite key
bufSoughtVal = HBuildKeyValue(CUSTOMER, LASTNAME_CUSTNUM, "MOORE", 12128)

// Build an Integer/Integer composite key
bufSoughtVal = HBuildKeyValue(ORDER, ORDERID_ORDERID, 12119,593)
Sintaxis
<Result> = HBuildKeyValue(<Data file> , <Clave compuesta> , <Value of components>)
<Result>: Buffer
Valor de la clave compuesta.
<Data file>: Character string (with or without quotes)
Nombre de HFSQL archivo de datos utilizado.
<Clave compuesta>: Character string (with or without quotes)
Nombre del elemento correspondiente a la clave compuesta
<Value of components>: Character string
Valor que se asignará a cada componente de la clave compuesta. Este parámetro tiene el siguiente formato:
<Component 1>, <Component 2>, ..., <Component N>
Por ejemplo: "MOORE","Vince".
Observaciones

¿Cuándo utilizar HBuildKeyValue?

Se debe utilizar la función HBuildKeyValue para realizar búsquedas en claves (de tipo cadena binaria) relacionadas con claves compuestas.
Algunos ejemplos:
  • FileA file:
    COMPKEY es una clave compuesta de FileA. Composición: ArchivoA.Apellido+ArchivoA.Nombre
  • Fichero FileB:
    LINKEDCOMPKEY es una clave de cadena binaria relacionado a FileA.COMPKEY
Realización de una búsqueda sobre el valor de la clave compuesta:
HReadSeekFirst(FileB, LINKEDCOMPKEY, HBuildKeyValue(FileA, COMPKEY, ...
"Last name", "First name"))
or
bufKey is Buffer
bufKey = HBuildKeyValue(FileA, COMPKEY, "Last name", "First name")
HReadSeekFirst(FileB, LINKEDCOMPKEY, bufKey)
or
HReadSeekFirst(FileB, LINKEDCOMPKEY, FileA.COMPKEY)
if FILEA se posiciona en el registro que debe encontrarse en FILEB.
También se puede utilizar un array de valores en lugar de la función HBuildKeyValue:
HReadSeekFirst(FileB, LINKEDCOMPKEY, ["Last name", "First name"])

Búsqueda genérica

Cuando se realiza una búsqueda genérica, no es necesario definir los valores de todos los componentes.. Sólo se requieren los primeros n valores (n se incluye entre 1 y el número de componentes clave, incluidos los límites).

Creación de una clave compuesta utilizada en un filtro con límites

Para construir el valor de una clave compuesta en un filtro, utilice la función HBuildKeyValue.
  • Si el límite mínimo y máximo del filtro deben ser idénticos, se deben completar los límites con las constantes hMinVal y hMaxVal.
    El siguiente ejemplo se utiliza para encontrar todos los registros del archivo de Cliente correspondientes a "Vince Moore":
    HFilter(Customer, ...
    HBuildKeyValue(Customer, LastNameFirstName, "Moore", "Vince") + hMinVal, ...
    HBuildKeyValue(Customer, LastNameFirstName, "Moore", "Vince") + hMaxVal)
  • Si el límite mínimo y máximo del filtro deben ser idénticos y no se especifican todos los componentes de la clave, se deben completar los límites con las constantes hMinVal y hMaxVal.
    El siguiente ejemplo se utiliza para encontrar todos los registros del archivo de Cliente correspondientes a "Moore":
    HFilter(Customer, LastNameFirstName, ...
    HBuildKeyValue(Customer, LastNameFirstName, "Moore" + hMinVal), ...
    HBuildKeyValue(Customer, LastNameFirstName, "Moore" + hMaxVal))
Observaciones:
  • hMinVal es equivalente a Charact(0)
  • hMaxVal es equivalente a Charact(255)

Construir una clave compuesta sin usar HBuildKeyValue

Para construir el valor de una clave compuesta sin utilizar la función HBuildKeyValue, existen dos soluciones:
  • Solución 1: Uso de una array de valores (solución recomendada):
    Por ejemplo:
    HReadSeekFirst(FILEB, LINKEDCOMPKEY, ["Last name", "First name"])
  • Solución 2: Gestión de cada tipo de componente:
    • completar los componentes de texto con la constante hMinVal.
    • convertir los componentes numéricos con HConvert.
    Por ejemplo:
    MyCompositeKey = Complete(Customer.CustomerLastName, ...
    Dimension(Customer.LastName), hMinVal) + ...
    Complete(Customer.FirstName, Dimension (Customer.FirstName), hMinVal)
Observación: Le recomendamos utilizar la función HBuildKeyValue. La constante hMinVal es equivalente a Charact(0).
Componente : wd250hf.dll
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Exemplo
HReset(F029_CURVA_ABC)

bAchou is boolean

BufBuscaValor is Buffer = HBuildKeyValue(F029_CURVA_ABC,F029_UNICO,F008_APS_NFE_ITENS.F008_ID_PRODUTO,Middle(F007_APS_NFE.F007_DT_ENTRADA,5,2) +"/"+ Middle(F007_APS_NFE.F007_DT_ENTRADA,1,4),F008_APS_NFE_ITENS.F008_UND_PROD_ESTOQUE)

IF HReadSeek(F029_CURVA_ABC,F029_UNICO,BufBuscaValor,hIdentical) = False THEN
bAchou = False
ELSE
bAchou = True
END
BOLLER
07 01 2020
//BUSCA EM CHAVE COMPOSTA MISTA COM TEXTO E NUMERO
ok is boolean

valorNovo = gnOrdem + 1

gsFruta = """"+gsFruta+""""

bufSearch is Buffer = HBuildKeyValue(t000_frutas,t000_kunica, gsFruta, gnOrdem)

IF HReadSeekFirst(t000_frutas,t000_kunica,bufSearch) = True
IF HFound(t000_frutas) = True
t000_frutas.t000_ordem = valorNovo
ok = HModify(t000_frutas)
END
END
BOLLER
18 07 2019
EXEMPLO DE USO DE CHAVE COMPOSTA
//NA TABELA COLOCA A CHAVE COMPOSTA COM OS DOIS CAMPOS QUESTIONARIO E GRUPO CRIA UM BUFFER E USA NA BUSCA

valorNovo is int = TABLEGRID_T027_GRUPOS_PERGUNTAS.COL_T027_ORDEM + 1

bufSearch is Buffer = HBuildKeyValue(T027_GRUPOS_PERGUNTAS,T027_CHAVECOMPOSTA, pgnIDQuestionario,gnIDGrupoPergunta)

IF HReadSeekFirst(T027_GRUPOS_PERGUNTAS,T027_CHAVECOMPOSTA,bufSearch) = True
IF HFound(T027_GRUPOS_PERGUNTAS) = True
T027_GRUPOS_PERGUNTAS.T027_ORDEM = valorNovo
HModify(T027_GRUPOS_PERGUNTAS)
END
END

TableDisplay(TABLEGRID_T027_GRUPOS_PERGUNTAS,taInit)
TableDisplay(TABLEGRID_T027_GRUPOS_PERGUNTAS,taReExecuteQuery)
BOLLER
17 07 2019
Example
bufChaveComposta is Buffer = HBuildKeyValue(GPU_14_SoftPoliceUserItem,ChaveComposta,[CodigoGrupo,1,gnConfiguration_ID,gnCompany_ID,gnSoft_ID,gnWinRepProc_ID,gIDControle])

IF HReadSeek(GPU_14_SoftPoliceUserItem,ChaveComposta,bufChaveComposta,hIdentical) = True THEN

Info(GPU_14_SoftPoliceUserItem.FullName)

END
BOLLER
31 05 2019