Sistema de Gestión de Negocios "Hexa"

Base de datos de conocimiento.

Doc. Ref. 9198
Título: Ejemplo de uso de un RecordSet en un script Hexa
Autor: Hexa
Última actualización: 15/07/2012
#script #recordset #base #de #datos #tabla #campo


Ejemplo de uso de un recordset

Los Hexa-Scripts permiten ejecutar codigo VBS teniendo acceso a la librería de objetos y métodos de Hexa. De este modo se puede hacer casi cualquier operación sin tener que utilizar los objetos de la base de datos. El único caso en que es necesario hacerlo, es en el momento de abrir un conjunto de registros mediante un RecordSet para, por ejemplo, recorrer una tabla de la base de datos

En este ejemplo se muestra, con comentarios, cómo declarar y utilizar un recordset mediante el objeto ADODB para abrir un conjunto de registros de las tablas de la base de datos de Hexa

Sub Main (PS0, PS1, PS2)

   'Vamos a recorrer, con un RecordSet, todos los artículos de la familia "Recambios" y mostrar sus denominaciones
   'Poner CursorLocation en AdUseClient y desconectarlo con ActiveConnection = Nothing permite que el RecordSet
   'esté desconectado y por lo tanto completamente cargado en memoria sin ningún tipo de bloqueo sobre la base de datos
   'El método "SQLT" del objeto FH añade las comillas necesarias (según el tipo de base de datos contra la que trabajemos)    'a una cadena para incluirla en una sentencia SQL

   'Declaración
   Dim Articulo : Set Articulo = CreateObject ("ADODB.Recordset") : Articulo.CursorLocation = 3 'AdUseClient

   'Apertura
   Articulo.Open "SELECT Codigo, Denominacion FROM Articulo WHERE Familia=" & FH.SQLT ("Recambios"), Cn
   Set Articulo.ActiveConnection = Nothing

   'La cadena donde vamos a guardar las denominaciones
   'En VbScript no hace falta declarar variables pero al hacerlo esl código es más inteligible
   Dim Cadena : Cadena = ""

   'Vamos a recorrer todos los registros
   Do While Not Articulo.EOF
      'Añadimos cada denominación a la cadena de texto
      Cadena = Cadena & Articulo.Fields ("Denominacion") & ", "
      Articulo.MoveNext
   Loop

   'Eliminar la coma final si hemos introducido algún registro
   If Len (Cadena) > 2 Then Cadena = Left (Cadena, Len (Cadena) -2)
   
   ''El método "MBx" de la clase "Formularios" muestra una ventana emergente con un texto
   Formularios.MBx (Cadena)

   'Aunque al finalizar el script Hexa siempre libera los recursos de todos los objetos declarados,
   'siempre es mejor cerrarlos manualmente aunque sólo sea por elegancia
   Articulo.Close : Set Articulo = Nothing

End Sub

Volver a la búsqueda anterior