# VQuery

**Hereda de:** [VObjectInstance](https://doc.velneo.com/32/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinstance).

La clase VQuery representa una búsqueda en ejecución. Nos permite ejecutar búsquedas. Construimos un objeto VQuery pasándole el objeto [VRoot](https://doc.velneo.com/32/velneo-vdevelop/scripts/lenguajes/javascript/clases/vroot) en curso y le indicamos la búsqueda a ejecutar con la función setQuery. Una vez inicializado el objeto ya podemos usar el resto de funciones (salvo result): le pasamos contenido a las variables locales de la búsqueda con setVarLocal (si lo requiere) y la ejecutamos con la función exec. Ahora ya podemos recoger los resultados con la función result, que nos devuelve un objeto de la clase [VRegisterList](https://doc.velneo.com/32/velneo-vdevelop/scripts/lenguajes/javascript/clases/vregisterlist) con el cual podemos operar.

## Indice de funciones

### **Constructor**

[VQuery ](#vquery)( VRoot root )

### **De operaciones**

Boolean [exec](#exec)()

VRegisterList [result](#result)()

### **Inicialización**

void [setQuery](#setquery)( String szIdRefQuery )

## Documentación de funciones

### Constructor

#### VQuery( VRoot root ) <a href="#vquery" id="vquery"></a>

Crea una instancia de objeto de la clase VQuery. Debe ejecutarse la función setQuery() para asignarle la búsqueda.

Parámetros:

* root: [VRoot](https://doc.velneo.com/32/velneo-vdevelop/scripts/lenguajes/javascript/clases/vroot) que indica el objeto [VRoot](https://doc.velneo.com/32/velneo-vdevelop/scripts/lenguajes/javascript/clases/vroot) en curso del que se hará uso, normalmente theRoot.

### Funciones de operaciones

#### Boolean exec() <a href="#exec" id="exec"></a>

Ejecuta la búsqueda y devuelve true si finaliza correctamente.

#### VRegisterList result() <a href="#result" id="result"></a>

Devuelve un objeto [VRegisterList](https://doc.velneo.com/32/velneo-vdevelop/scripts/lenguajes/javascript/clases/vregisterlist) con la lista de registros encontrados en la búsqueda.

### Inicialización <a href="#ini" id="ini"></a>

#### void setQuery( String szIdRefQuery ) <a href="#setquery" id="setquery"></a>

Fija la búsqueda que se asocia al objeto.

Parámetros:

* szIdRefQuery: string que contiene el identificador referencia (IdRef=Alias\_Proyecto/Id\_Búsqueda) de la búsqueda.

## Ejemplos

### 1. Ejecutar una búsqueda sin parámetros

```javascript
// --------------------------------------------------------------------------------
// Ejemplo de búsqueda sin parámetros
// --------------------------------------------------------------------------------

// Se importa la clase para usar sus funciones
importClass("VQuery");

// Se crea el objeto búsqueda
var bus = new VQuery(theRoot);
bus.setQuery("vbaseUsuariosApp/USR_GRP_NOM");

// Se ejecuta la búsqueda y los registros encontrados se añaden a la salida
if (bus.exec())
{
    // Le pasamos los resultados a la lista de salida
    theRegisterListOut.append(bus.result());
};
```

### 2. Ejecutar una busqueda con parámetros

```javascript
// --------------------------------------------------------------------------------
// Ejemplo de búsqueda con parámetros
// --------------------------------------------------------------------------------

// Se importa la clase para usar sus funciones
importClass("VQuery");

// Se crea el objeto búsqueda
var bus = new VQuery(theRoot);
bus.setQuery("VJS_APP/USR_GRP_ENT_NAM");

// Se alimentan los parametros de búsqueda
bus.setVar("NOM_DES", "VJS");
bus.setVar("NOM_HAS", "VJSzzzzzzzzzzzzzzz");

// Se ejecuta la búsqueda y los registros encontrados se añaden a la salida
if (bus.exec())
{
    // Le pasamos los resultados a la lista de salida
    theRegisterListOut.append(bus.result());
};
```

### 3. Lanzar una búsqueda con datos solicitados desde un formulario

```javascript
// -----------------------------------------------------------------
// Lanzar una búsqueda con los datos solicitados desde un formulario
// -----------------------------------------------------------------

importClass("VQuery");

//Creamos el formulario
var formulario = new VDataViewDialog(theRoot);
formulario.setDataView(VObjectInfo.TypeForm, "49z6dckf.vca/DUMMY_PEDIR_DATOS")

//Mostramos el formulario
if(formulario.exec())
{
  //Leemos el valor de las fechas que introducimos en el formulario
  fechaDesde = formulario.varToDate("FCH_DES");
  fechaHasta = formulario.varToDate("FCH_HAS");

  //Si los datos no son vacíos
  if ((fechaDesde != null) && (fechaHasta != null))
  {
    //Creamos el manejador de la búsqueda
    var busqueda = new VQuery(theRoot);

    //Asignamos la búsqueda a utilizar
    busqueda.setQuery("49z6dckf.vca/VQUERY");

    //Asignamos los valores adquiridos previamente
    busqueda.setVar("FCH_DES", fechaDesde);
    busqueda.setVar("FCH_HAS", fechaHasta);

    //Ejecutamos la búsqueda
    if(busqueda.exec())
    {
      //Retornamos la lista de resultados
      theRegisterListOut.append(busqueda.result())
    };
  };
};
```
