Funcion AbreConsulta Función de apertura de consultas. Sintaxis de la función Reg[-1(Error)] = AbreConsulta("Nombre consulta"[, -1(Cursor cliente) - 0(Cursor definido en consulta)]) Argumento - Descripción Nombre consulta - Nombre de la consulta a abrir. Localización del cursor - Tipo de localización del cursor (argumento opcional): -1. Cursor cliente. | 0. Cursor definido en consulta. Retorno - Descripción Reg - La función puede retornar los valores: -1. Error. | >0. Número de registro asignado en la apertura. NOTAS Esta función abre un área de trabajo en la base de datos. Su ejecución no implica la ejecución de ninguna sentencia SQL en concreto ni la apertura de ningún registro, sólo carga la información de la consulta y prepara las estructuras necesarias para trabajar con esta consulta. Para obtener los registros de la consulta, ejecute a continuación la función Seleccion. Con esta función no se pueden abrir consultas de acción (borrar, añadir y modificar registros). Para ejecutar este tipo de consultas, use las funciones de cálculo EjecutaBorra, EjecutaInserta y EjecutaModifica. Es importante no dejar consultas abiertas. Una vez usadas, se deben de cerrar. En caso contrario, quedarán referencias en memoria que pueden producir un mal funcionamiento de la aplicación. Ejemplo: Dim Ret As Numero Dim Municipios As Registro Dim Muni.CodigoMunicipio As Campo (Municipios, CodigoMunicipio) Cadena Dim Muni.Municipio As Campo (Municipios, Municipio) Cadena Municipios = AbreConsulta("Municipios") Ret = Seleccion(Municipios, "CodigoMunicipio Like '08%'") Ifn Ret = -1 Then MsgBox("Número de municipios en Barcelona: " & Str(CuentaRegistro(Municipios)), 0, "Municipios") Whilen Ret = -1 Then MsgBox("Codigo: " & Muni.CodigoMunicipio & " - Nombre: " & Muni.Municipio, 0, "Municipio") Ret = Siguiente(Municipios) Loop Endif Ret = CierraRegistro(Municipios) Ifn Ret = 0 Then MsgBox("Error al cerrar la consulta", 0, "Municipio") Endif End Funcion Abs Proporciona el valor absoluto de un número. Sintaxis de la función Num = Abs(Num) Argumento - Descripción Num - Número a obtener el valor absoluto. Retorno - Descripción Num - La función retorna el valor absoluto del número indicado. Ejemplo: Dim Num1 As Numero Dim Num2 As Numero Dim Resultado As Numero Resultado = Num1 - Num2 Resultado = Abs(Resultado) Funcion Ahora Proporciona un número equivalente a la fecha actual del sistema teniendo en cuenta el decalaje indicado. Sintaxis de la función Num = Ahora(Días[0,+-#]) Argumento - Descripción Días - Puede especificar uno de los valores: Valor 0. Devuelve la fecha y hora actual del sistema. | Valores enteros positivos. Suman días a la fecha actual. | Valores enteros negativos. Restan días a la fecha actual. Retorno - Descripción Num - La función retorna un número equivalente a la fecha actual del sistema teniendo en cuenta el decalaje indicado. Ejemplo: Dim Dias As Cadena Dim Fecha As Numero MsgBox("Fecha de hoy: " & Naf(Ahora(0)), 0, "Cálculo de Fechas") Dias = Input("¿Cuantos días desea calcular?", "Cálculo de Fechas", "1") Ifa Dias<>"" Then Fecha = CalcFecha("d", Val(Dias), Ahora(0)) MsgBox("Dentro de " & Dias & " días será: " & Format(Fecha,"dd-mm-yyyy"), 64, "Cálculo de Fechas") Endif Ifn Fecha > Fan("31-12-2001") Then MsgBox ("Esta fecha es del Año 2002 o superior", 0, "Cálculo de Fechas") Endif End Funcion And Compara 2 valores lógicos. Sintaxis de la función Num = And(Num1, Num2) Argumento - Descripción Num1 - Valor con el que comparar el valor indicado en el argumento Num2. Num2 - Valor a comparar. Retorno - Descripción Num - La función retorna un número correspondiente al resultado de la comparación. Si es verdadero, retorna el valor informado en el argumento Num2. Ejemplo: Dim dblpeso As Numero Dim strPeso As Cadena Dim strPesoTmp As Cadena Dim blnBruto As Numero Dim blnNeto As Numero Dim blnEstable As Numero Dim intEstado As Numero Dim intAbiertoBien As Numero Dim intLongCom As Numero Dim nHoraActual As Numero Dim nHoraDespues As Numero ' Se guarda la hora actual en una variable y en otra variable se guarda la hora actual más unos 10 segundos aproximadamente. nHoraActual = Ahora(0) nHoraDespues = nHoraActual + 0.000100 blnEstable = 0 intAbiertoBien = ComAbre(1, "9600,n,8,1", 1) Ifn intAbiertoBien <> -1 Then MsgBox ("El puerto ya está abierto, o ha ocurrido un error", 64, "Prueba de apertura de puerto") End Endif ComGraba("$") 'H24 Whilen blnEstable <> 32 Then ComGraba("$") intLongCom = 0 'H24 ' Ejecutamos el bucle hasta que la longitud del buffer sea de 10 caracteres o que no supere los 10 segundos aproximadamente de espera. Whilen intLongCom < 10 Then intLongCom = ComLongitudLee() Ifn Ahora(0) > nHoraDespues Then Goto CalculaPeso_Fin Endif Loop strPeso = ComLee() blnEstable = 0 Ifn Len(strPeso) > 0 Then strPesoTmp = Mid(strPeso, 2, 1) intEstado = Asc(strPesoTmp) - 32 blnBruto = And(intEstado, Val("&H1")) ' intEstado And &H1 blnNeto = And(intEstado, Val("&H2")) blnEstable = And(intEstado, Val("&H20")) ' blnEstable = intEstado And &H20 Gosub CalculaPeso Endif Loop CalculaPeso_Fin: ComCierra MsgBox ("El peso es " & dblpeso, 64, "Prueba de peso") dblpeso = 0 End CalculaPeso: dblpeso = Val(Mid(strPeso, 3, Len(strpeso) - 3)) Ifn dblpeso <> 0 Then dblpeso = dblpeso / 1000 Endif Return Funcion Anterior Sitúa el cursor del registro en la posición anterior de la actual. Sintaxis de la función [Num[0,-1] =] Anterior(Reg) Argumento - Descripción Reg - Número de registro asignado en la función AbreConsulta. Retorno - Descripción Num - La función puede retornar los valores (retorno opcional): 0. Función ejecutada sin éxito. | -1. Función ejecutada con éxito. Ejemplo: Dim Ret As Numero Dim CadMarca As Cadena Dim Municipios As Registro Dim Muni.CodigoMunicipio As Campo (Municipios, CodigoMunicipio) Cadena Dim Muni.Municipio As Campo (Municipios, Municipio) Cadena Municipios = AbreConsulta("Municipios") Ret = Seleccion(Municipios) Ifn Ret = -1 Then Ifn Ultimo(Municipios ) = -1 Then MsgBox("Codigo: " & Muni.CodigoMunicipio & " - Nombre: " + Muni.Municipio, 0, "Municipio") Endif CadMarca = MarcaRegRetorna(Municipios, 0) Ifn Anterior(Municipios ) = -1 Then MsgBox("Codigo: " & Muni.CodigoMunicipio & " - Nombre: " + Muni.Municipio, 0, "Municipio") Endif Ifn Siguiente(Municipios ) = -1 Then MsgBox("Codigo: " & Muni.CodigoMunicipio & " - Nombre: " + Muni.Municipio, 0, "Municipio") Endif Ifn Primero(Municipios ) = -1 Then MsgBox("Codigo: " & Muni.CodigoMunicipio & " - Nombre: " + Muni.Municipio, 0, "Municipio") Endif Ret = MarcaRegAsigna(Municipios , CadMarca) MsgBox("Codigo: " & Muni.CodigoMunicipio & " - Nombre: " & Muni.Municipio, 0, "Municipio") Endif Ret = CierraRegistro(Municipios) Ifn Ret = 0 Then MsgBox("Error al cerrar la consulta", 0, "Municipio") Endif End Funcion Asc Proporciona un número que representa el código ASCII de la 1ª letra de una cadena. Sintaxis de la función Num = Asc("Carácter") Argumento - Descripción Carácter - Cualquier carácter. Retorno - Descripción Num - La función retorna un número que representa el código ASCII de la 1ª letra de una cadena. Ejemplo: Dim numCaracter As Numero 'Retorna el número 65. NumCaracter = Asc(“A”) 'Retorna el número 97. NumCaracter = Asc(“a”) 'Retorna el número 65. NumCaracter = Asc(“Avión”) Funcion Aviso Envía un mensaje de aviso a uno o más destinatarios. Sintaxis de la función Aviso(Fecha[, "Plantilla"][, "Destino"][, "Asunto"][, "Contenido"][, Importancia][, Estilo][, "Operación"][, "Parámetros"]) Argumento - Descripción Fecha - Fecha y hora de envío del aviso. Plantilla - Plantilla a usar para crear el aviso. Argumento opcional. Destino - Cadena de texto con uno más códigos o nombres de los contactos destinatarios del aviso, separados por la coma (","). Argumento opcional. Ejemplo: "44,46,18". Asunto - Título o cabecera y descripción del aviso. Argumento opcional. Contenido - Título o cabecera y descripción del aviso. Argumento opcional. Importancia - Importancia del aviso (argumento opcional): 0. Alta. | 1. Media. |3. Baja. Estilo - Estilo de la ejecución del aviso (argumento opcional): 0. Normal. |4. Acción obligada. Operación - Código de la operación asociada y de ejecución obligada según el estilo. Argumento opcional. Parámetros - Parámetros de la operación asociada. Argumento opcional. Ejemplo: Aviso(Ahora(0), "SIMPLE", "44,46", "Reunión", "Reunión revisión proyecto") Funcion Borra Borra el elemento actual de un registro de una consulta determinada. Sintaxis de la función [Num[0,-1] =] Borra(Reg) Argumento - Descripción Reg - Número de registro asignado en la función AbreConsulta. Retorno - Descripción Num - La función puede retornar los valores (retorno opcional): 0. Función ejecutada sin éxito. |-1. Función ejecutada con éxito. Ejemplo: Dim Ret As Numero Dim Municipios As Registro Dim Muni.CodigoMunicipio As Campo (Municipios, CodigoMunicipio) Cadena Dim Muni.Municipio As Campo (Municipios, Municipio) Cadena Municipios = AbreConsulta("_joan_Municipios") Ret = Seleccion(Municipios, "CodigoMunicipio = '08021'") Ifn Ret = -1 Then Ret=MsgBox("¿Desea eliminar el municipio " & Muni.Municipio & "?", 36, "Municipio") Ifn Ret=6 Then Borra(Municipios) Endif Endif CierraRegistro(Municipios) Funcion BorraVarApli Elimina de memoria una variable de aplicación (VarApli). NOTA. Sólo se debe usar para eliminar variables de aplicación creadas en cálculo con la función CreaVarApli. Sintaxis de la función [Num[0,-1] =] BorraVarApli("Nombre") Argumento - Descripción Nombre - Nombre de la variable de aplicación a eliminar de la memoria. Retorno - Descripción Num - La función puede retornar los valores (retorno opcional): 0. Función ejecutada sin éxito. |-1. Función ejecutada con éxito. Ejemplo: Dim N As Numero Dim Apli.RS As Campo (Apli, RS) Numero Dim Municipios As Registro Dim Muni.CodigoMunicipio As Campo (Municipios, CodigoMunicipio) Cadena Dim Muni.Municipio As Campo (Municipios, Municipio) Cadena CreaVarApli("RS", 2, 0) Municipios = AbreConsulta("Municipios") N = Seleccion(Municipios, "CodigoMunicipio = '08021'") Ifn N = -1 Then MsgBox ( "Municipio=" & Muni.CodigoMunicipio & "-" & Muni.Municipio, 0, "Prueba1") Apli.RS = Municipios Endif N = Calculo("Prueba2", "Campos") BorraVarApli("Apli.RS") CierraRegistro(Municipios) End Rutina de cálculo: Prueba2 Campos: Dim N As Numero Dim Apli.RS As Campo (Apli, RS) Numero Dim Municipios As Registro Dim Muni.CodigoMunicipio As Campo (Municipios, CodigoMunicipio) Cadena Dim Muni.Municipio As Campo (Municipios, Municipio) Cadena Municipios = Apli.RS N = Seleccion(Municipios) MsgBox ("Municipio=" & Muni.CodigoMunicipio & "-" & Muni.Municipio, 0, "Prueba2") End Funcion BuscaConsulta Busca un registro determinado de una consulta teniendo en cuenta una condición de comparación, la posición inicial y la dirección de la búsqueda. NOTAS Antes de realizar una búsqueda en una consulta, ejecute la función Selección para obtener la relación de registros de la consulta en los que realizar la búsqueda. La funcionalidad de esta función puede parecer similar a la funcionalidad de la función Selección, pero en realidad, son funciones distintas. La función Selección determina una relación de registros de una consulta que cumple una condición establecida, llenando el área de trabajo creada por la función AbreConsulta y posicionándose en el primer registro. Por otro lado, la función BuscaConsulta también se posiciona en el primer registro que cumple la condición pero sobre los registros obtenidos por la función Selección. Es decir, la función BuscaConsulta solamente realiza búsquedas sobre una relación de registros previamente establecida. Sintaxis de la función [Num[0,-1] =] BuscaConsulta(Reg, "Comparación", Modo[0(Primero),1(Ultimo),2(Siguiente),3(Anterior)]) Argumento - Descripción Reg - Número de registro asignado en la función AbreConsulta. Comparación - Comparación para realizar la búsqueda. El tipo de comparación es el mismo que se usa en una sentencia Where de una consulta. Modo - Posición inicial y dirección hacia donde realizar la búsqueda en la consulta: 0. Primero. Busca desde el primer elemento hacia adelante. | 1. Último. Busca desde el último elemento hacia atrás. |2. Siguiente. Busca desde el siguiente elemento al actual hacia adelante. |3. Anterior. Busca desde el anterior elemento al actual hacia atrás. Retorno - Descripción Num - La función puede retornar los valores (retorno opcional): 0. Función ejecutada sin éxito. |-1. Función ejecutada con éxito. Ejemplo: Dim Ret As Numero Dim Municipios As Registro Dim Muni.CodigoMunicipio As Campo (Municipios, CodigoMunicipio) Cadena Dim Muni.Municipio As Campo (Municipios, Municipio) Cadena Municipios = AbreConsulta("Municipios") Ret = Seleccion(Municipios, "CodigoNacion = 108") Ifn Ret = -1 Then Ret = BuscaConsulta(Municipios, "Municipio Like 'Te%'", 0) Ifn Ret = -1 Then MsgBox("Municipio = " & Muni.CodigoMunicipio & " - " & Muni.Municipio, 0, "Municipio") Endif Ret = BuscaConsulta(Municipios, "Municipio Like 'Sa%'", 3) Ifn Ret = -1 Then MsgBox("Municipio = " & Muni.CodigoMunicipio & " - " & Muni.Municipio, 0, "Municipio") Endif Endif Ret = CierraRegistro(Municipios) Ifn Ret = 0 Then MsgBox("Error al cerrar la consulta", 0, "Municipio") Endif End