| Recordset
Aplicable a: Devuelve o establece un objeto Recordset definido por las propiedades de un control Data o por un objeto Recordset existente. Set objeto.Recordset [= valor ] La sintaxis de la propiedad Recordset consta de estas partes:
El control Data se inicializa automáticamente cuando se inicia la aplicación antes del procedimiento inicial Form_Load. Si son válidas las propiedades Connect, DatabaseName, Options, RecordSource, Exclusive, ReadOnly y RecordsetType, o si establece estas propiedades del control Data en tiempo de ejecución y utiliza el método Refresh, el motor de base de datos Microsoft Jet intentará crear un nuevo objeto Recordset basado en esas propiedades. Es posible tener acceso a este Recordset a través de la propiedad Recordset de un control Data. Sin embargo, si una o más de estas propiedades se establecen de forma incorrecta en tiempo de diseño, puede ocurrir un error no interceptable cuando Visual Basic intente usar las propiedades para abrir la base de datos determinada y crear el objeto Recordset. También puede solicitar el tipo de Recordset que se va a crear si establece la propiedad RecordsetType del control Data Si no solicita un tipo específico, se creará un Recordset de tipo dynaset. Si utiliza la propiedad RecordsetType podrá solicitar la creación de un Recordset de tipo table, snapshot o dynaset. Sin embargo, si el motor Jet no puede crear el tipo solicitado, se producirá un error interceptable. En la mayoría de los casos, el tipo predeterminado y la configuración del objeto Recordset que se ha creado es poco eficiente. Es decir, puede que no necesite un cursor actualizable, con desplazamiento completo y basado en claves para tener acceso a los datos. Por ejemplo, puede ser más rápido crear un Recordset de tipo snapshot de sólo lectura que el Recordset predeterminado. Asegúrese de que elige el tipo más eficiente estableciendo las propiedades Exclusive, Options y ReadOnly según su situación. Es posible que no se pueda actualizar un Recordset aunque solicite un Recordset de tipo dynaset o table. Si no se puede actualizar la base de datos, la tabla o el campo subyacente, es posible que el Recordset completo o partes de él sean de sólo lectura. Examine la propiedad Updatable de los objetos Database y Recordset o la propiedad DataUpdatable del objeto Field para determinar si el código puede modificar los registros. Incluso si la propiedad DataUpdatable devuelve True, hay situaciones en las que los campos de datos subyacentes pueden no ser actualizables; por ejemplo, puede que no tenga permisos suficientes para realizar cambios. Puede haber también otros factores que impidan la actualización de campos. El número de registros devueltos por el Recordset puede determinarse desplazándose al último registro del Recordset y examinando la propiedad RecordCount del objeto Recordset. Antes de desplazarse al último registro, el valor devuelto por la propiedad RecordCount sólo indica el número de filas procesadas por el motor Jet. El ejemplo siguiente muestra cómo combinar la propiedad RecordCount de un Recordset con la propiedad Recordset para mostrar el número de registros del conjunto de registros de un control Data: Data1.Recordset.MoveLast Edición profesional y Edición empresarial Si crea un objeto Recordset mediante código u otro control Data, puede establecer la propiedad Recordset del control Data a este nuevo Recordset. Cualquier Recordset existente en el control Data y el objeto Database asociado con él se liberarán cuando se asigne un nuevo Recordset a la propiedad Recordset. Asegúrese de que las propiedades DataField de los controles enlazados conectados al control Data se establecen de forma que coincidan con los nombres de campo del nuevo objeto Recordset. Por ejemplo, para crear un Recordset en código y pasarlo a un control Data existente: Dim Db As Database, Rs As Recordset ' Definidas como variables públicas.Sub ApplyRecordset() Set Db = Workspaces(0).OpenDatabase("BIBLIO.MDB") Set Rs = Db.OpenRecordset("AUTHORS") ' De forma predeterminada el objeto Table. Set Data1.Recordset = Rs ' Asigna el Recordset. Data1.Recordset.Index = "PrimaryKey" Debug.Print Rs.Type ' Muestra el tipo creado. End Sub Nota El control Data no es compatible con objetos Recordset de tipo forward-only (desplazamiento sólo hacia adelante). Si intenta asignar al control Data un objeto Recordset de tipo forward-only, ocurre un error interceptable. Importante Siempre puede hacer referencia a las propiedades del Recordset del control Data mediante la propiedad Recordset. Si hace referencia directamente al Recordset, podrá determinar el Index que va a utilizar con objetos Table, la colección Parameters de un objeto QueryDef o el tipo de Recordset. RecordsetType Aplicable a: Devuelve o establece un valor que indica el tipo de objeto Recordset que desea que cree el control Data. objeto.RecordsetType [= valor ] La sintaxis de la propiedad RecordsetType consta de estas partes:
Valores Los valores admitidos para valor son los siguientes:
Si el motor de base de datos Microsoft Jet no puede crear el tipo de Recordset que ha solicitado, se produce un error interceptable. Si no especifica un RecordsetType antes de que el control Data cree el Recordset, se creará si es posible un Recordset de tipo dynaset. En la mayoría de los casos, el tipo predeterminado y la configuración del objeto Recordset que se ha creado es poco eficiente. Es decir, puede que no necesite un cursor actualizable, con desplazamiento completo y basado en claves para tener acceso a los datos. Por ejemplo, un Recordset de tipo snapshot con desplazamiento sólo hacia adelante de sólo lectura puede ser más rápido de crear que el cursor predeterminado. Asegúrese de que elige el tipo más eficiente estableciendo las propiedades RecordsetType, Exclusive, Options y ReadOnly según su situación. Ejemplo de la propiedad RecordsetType Este ejemplo utiliza el control Data para crear un objeto Recordset y examina la propiedad RecordsetType del control Data para determinar el tipo de conjunto de registros creado. Sub DisplayRecordsetType() RecordSource Aplicable a: Devuelve o establece la tabla, la instrucción SQL o el objeto QueryDef subyacente para un control Data. SintaxisObjeto.RecordSource [= valor] La sintaxis de la propiedad RecordSource consta de estas partes:
Valores Los valores admitidos para valor son los siguientes:
La propiedad RecordSource especifica el origen de los registros accesibles a través de controles enlazados del formulario. Si establece la propiedad RecordSource al nombre de una tabla existente en la base de datos, todos los campos de esa tabla serán visibles en los controles enlazados adjuntos al control Data. Para conjuntos de registros de tipo table (RecordsetType = vbRSTypeTable), el orden de los registros recuperados lo establece el objeto Index que se selecciona mediante la propiedad Index del Recordset. Para objetos Recordset de tipo dynaset y snapshot, puede ordenar los registros usando una instrucción SQL con una cláusula Order By en la propiedad RecordSource del control Data. De lo contrario, los datos se devuelven sin ningún orden en particular. Si establece la propiedad RecordSource al nombre de un objeto QueryDef existente en la base de datos, todos los campos devueltos por QueryDef serán visibles para los controles enlazados adjuntos al control Data. El orden de los registros recuperados lo establece la consulta del objeto QueryDef. Por ejemplo, QueryDef puede incluir una cláusula ORDER BY para cambiar el orden de los registros que devuelve el objeto Recordset creado por el control Data o una cláusula WHERE para filtrar los registros. Si el objeto QueryDef no especifica ningún orden, los datos se devolverán sin ningún orden concreto. Nota En tiempo de diseño, los objetos QueryDef mostrados en la ventana Propiedades para la propiedad RecordSource se filtran para mostrar únicamente los objetos QueryDef que se pueden utilizar con el control Data. No se muestran los objetos QueryDef que tengan parámetros. Si establece la propiedad RecordSource a una instrucción SQL que devuelve registros, todos los campos devueltos por la consulta SQL serán visibles para los controles enlazados adjuntos al control Data. Esta instrucción puede incluir una cláusula ORDER BY para cambiar el orden de los registros devueltos por el objeto Recordset creado por el control Data o una cláusula WHERE para filtrar los registros. Nota Cada vez que el objeto QueryDef o la instrucción SQL devuelve un valor de una expresión, el motor de base de datos Microsoft Jet crea automáticamente el nombre de campo de la expresión. El nombre suele ser Expr1 seguido de un número de tres dígitos que comienza por 000. Por ejemplo, la primera expresión se llamaría Expr1000. En la mayoría de los casos, es posible que quiera asignar un alias a expresiones de modo que conozca el nombre de la columna a la que va a enlazar el control enlazado. Para obtener más información al respecto, vea la cláusula AS de la instrucción SQL SELECT. Después de cambiar el valor de la propiedad RecordSource en tiempo de ejecución, deberá utilizar el método Refresh para activar el cambio y volver a generar el Recordset. En tiempo de ejecución, si el Recordset especifica un nombre de un tipo Table no válido, un nombre de QueryDef o contiene sintaxis de SQL no válida, se generará un error interceptable. Si el error ocurre durante el procedimiento inicial Form_Load, el error no será interceptable. Nota Asegúrese de que cada control enlazado tiene un valor válido para su propiedad DataField. Si cambia el valor de la propiedad RecordSource de un control Data y a continuación utiliza Refresh, el Recordset identificará al nuevo objeto. Esto puede invalidar los valores de la propiedad DataField de controles enlazados y producir un error interceptable. Shape Aplicable a Devuelve o establece un valor que indica la apariencia de un control Shape. Sintaxis objeto.Shape [= valor] La sintaxis de la propiedad Shape consta de las siguientes partes:
Los valores admitidos para valor son:
En este ejemplo se ilustran las seis posibles formas del control Shape. Para probarlo, pegue el código en la sección Declaraciones de un formulario que contenga un control OptionButton y un control Shape. En el OptionButton, establezca a 0 la propiedad Index para crear una matriz de controles de un elemento y presione F5. Haga clic en cada control OptionButton para ver una forma distinta.Private Sub Form_Load () Option1(0).Caption = "Forma nº 0" For I = 1 To 5 ' Crea cinco instancias de Option1. Load Option1(I) ' Establece la ubicación del nuevo botón de opción. Option1(I).Top = Option1(I - 1).Top + Option1(0).Height + 40 ' Establece el título del botón de opción. Option1(I).Caption = "Forma nº " & I ' Muestra el nuevo botón de opción. Option1(I).Visible = True Next I End Sub Private Sub Option1_Click (Index As Integer) SQL (Objeto QueryDef) Aplicable a Establece o devuelve la instrucción SQL que define la consulta ejecutada por un objeto QueryDef. Valores devueltos y establecidos El valor que se puede establecer u obtener es un tipo de datos String que contiene una instrucción SQL. ComentariosLa propiedad SQL contiene la instrucción SQL que determina cómo se seleccionan, agrupan y ordenan los registros cuando se ejecuta la consulta. Puede utilizar la consulta para seleccionar registros a incluir en un objeto Recordset de tipo Dynaset o Snapshot. También puede definir consultas para modificar datos sin devolver registros. La sintaxis SQL utilizada en una consulta debe ser acorde con el dialecto SQL del motor de consulta, que está determinado por el tipo de espacio de trabajo. En un espacio de trabajo Microsoft Jet, utilice el lenguaje SQL de Microsoft Jet. Este ejemplo demuestra la propiedad SQL estableciendo y modificando la propiedad SQL de un QueryDef temporal y comparando los resultados. Se necesita la función SalidaSQL para ejecutar este procedimiento. Sub SQLX() Function SalidaSQL(strSQL As String, qdfTemp As QueryDef) Stretch Aplicable a Devuelve o establece un valor que indica si un gráfico cambia su tamaño para ajustarse al de un control Image. objeto.Stretch [= booleano] La sintaxis de la propiedad Stretch consta de las siguientes partes:
Si Stretch tiene el valor True, al cambiar el tamaño del control también se cambiará el del gráfico que contenga. Ejemplo de la propiedad Stretch En este ejemplo se carga un icono de flecha de un directorio de iconos en un control Image. La flecha se arrastra por el formulario cuando la propiedad Stretch tiene el valor True y salta por el formulario cuando la propiedad Stretch tiene el valor False. Para probar este ejemplo, pegue el código en la sección Declaraciones de un formulario que contenga un control Image, un control CheckBox y un control Timer, presione F5 y haga clic en el formulario. Asegúrese de comprobar la ruta de acceso al directorio de iconos y cámbiela si es necesario. Para ver los distintos efectos de la propiedad Stretch, haga clic en el control CheckBox y luego en el formulario. Dim ImgW ' Declara una variable. Private Sub Form_Click () Private Sub Timer1_Timer () Private Sub Check1_Click () Style Aplicable a Devuelve o establece un valor que indica el tipo de muestra y el comportamiento del control. Es de sólo lectura en tiempo de ejecución. objeto.Style El marcador de posición objeto representa una expresión de objeto que da como resultado un objeto de la lista Aplicable a. Valores Los valores de la propiedad Style para los controles Checkbox, CommandButton, y OptionButton son:
Los valores de la propiedad Style para el control ComboBox son los siguientes:
Los valores de la propiedad Style para el control ListBox son los siguientes:
Para decidir el valor que debe elegir para el control ComboBox, siga estas directrices:
Aplicable a Devuelve o establece el orden de tabulación de la mayoría de los objetos dentro de su formulario. objeto.TabIndex [= índice] La sintaxis de la propiedad TabIndex consta de las siguientes partes:
De forma predeterminada, Visual Basic asigna un orden de tabulación a los controles cuando se van agregando a un formulario, con la excepción de los controles Menu, Timer, Data, Image, Line y Shape, que no se incluyen en el orden de tabulación. En tiempo de ejecución, los controles invisibles o deshabilitados y los controles que no pueden recibir el enfoque (controles Frame y Label) permanecen en el orden de tabulación pero se pasan por alto al tabular. Cada control nuevo se sitúa el último en el orden de tabulación. Si modifica el valor de la propiedad TabIndex de un control para cambiar el orden predeterminado, Visual Basic renumerará automáticamente la propiedad TabIndex de los controles restantes para reflejar las inserciones y eliminaciones. Puede efectuar los cambios en tiempo de diseño mediante la ventana propiedades o en tiempo de ejecución a través de código. Nota El orden de tabulación de un control no afecta a su tecla de acceso asociada. Si presiona la tecla de acceso de un control Frame o Label, el enfoque pasará al siguiente control del orden de tabulación que pueda recibir el enfoque. Ejemplo de la propiedad TabIndexEn este ejemplo se invierte el orden de tabulación de un grupo de botones modificando la propiedad TabIndex de una matriz de botones de comando. Para probar este ejemplo, pegue el código en la sección Declaraciones de un formulario que contenga cuatro controles CommandButton. Establezca CommandX en la propiedad Name de cada botón para crear la matriz de controles, y luego presione F5 y haga clic en el formulario para invertir su orden de tabulación. Private Sub Form_Click () TabStop Aplicable a Devuelve o establece un valor que indica si el usuario puede utilizar la tecla TAB para llevar el enfoque a un objeto. objeto.TabStop [= booleano] La sintaxis de la propiedad TabStop consta de las siguientes partes:
Valores Los valores admitidos para booleano son:
Esta propiedad permite agregar o quitar un control del orden de tabulación de un formulario. Por ejemplo, si utiliza un control PictureBox para dibujar un gráfico, establezca a False su propiedad TabStop para que el usuario no pueda situarse en el control PictureBox. Tag Aplicable a Devuelve o establece una expresión que almacena cualquier dato adicional que necesite el programa. Al contrario de lo que sucede con otras propiedades, Visual Basic no utiliza el valor de Tag. Puede utilizar esta propiedad para identificar objetos. objeto.Tag [= expresión] La sintaxis de la propiedad Tag consta de las siguientes partes:
Expresión Una expresión de cadena que identifica el objeto. El valor predeterminado es una cadena de longitud cero (""). Puede utilizar esta propiedad para asignar una cadena de identificación a un objeto sin afectar al resto de sus propiedades ni causar efectos secundarios. En este ejemplo se muestra un icono único para cada control que se arrastra. Para probar este ejemplo, pegue el código en la sección Declaraciones de un formulario que contenga tres controles PictureBox. Establezca a 1 la propiedad DragMode de Picture1 y Picture2, y luego presione F5. Utilice el mouse para arrastrar Picture1 o Picture2 sobre Picture3. Private Sub Form_Load () Private Sub Picture3_DragOver (Source As Control, X As Single, Y As
Single, State As Integer) Text Aplicable a objeto.Text [= cadena] La sintaxis de la propiedad Text consta de las siguientes
partes: Solamente en tiempo de diseño, los valores predeterminados
de la propiedad Text son:
En el caso de un control ComboBox con el valor 0 (cuadro
combinado desplegable) o 1 (cuadro combinado simple) en la propiedad
Style, o para un control TextBox, esta propiedad es útil
para leer la cadena real contenida en el área de edición del control. Para
un control ComboBox o ListBox con el valor 2 (lista
desplegable) en la propiedad Style, puede utilizar la propiedad
Text para determinar el elemento seleccionado actualmente. El valor de Text para un control TextBox está limitado a
2048 caracteres, a no ser que el valor de la propiedad MultiLine
sea True, en cuyo caso el límite es aproximadamente 32 KB. En este ejemplo se ilustra el uso de la propiedad Text. Para
probar este ejemplo, pegue el código en la sección Declaraciones de un
formulario que contenga tres controles TextBox y un control
CommandButton, presione F5 y escriba texto en Text1. Private Sub Text1_Change () Private Sub Command1_Click () ' Eliminar el texto. Aplicable a Devuelve o establece Información sobre herramientas. objeto.ToolTipText [= cadena] La sintaxis de la propiedad ToolTipText consta de las siguientes partes:
Si usa únicamente una imagen para identificar un objeto, puede usar esta propiedad para explicar con pocas palabras cada uno de esos objetos. En tiempo de diseño puede establecer la cadena de la propiedad ToolTipText en el cuadro de diálogo de propiedades del control. Value Aplicable a objeto.Value [= valor] La sintaxis de la propiedad Value consta de las siguientes
partes: Valores Los valores admitidos para valor son:
En este ejemplo se muestra el valor numérico de un control
HScrollBar (barra de desplazamiento horizontal) en un control
TextBox. Para probar este ejemplo, pegue el código en la sección
Declaraciones de un formulario que contenga un control TextBox y un
control HScrollBar. Presione F5 para ejecutar el programa y haga
clic en la barra de desplazamiento. Private Sub Form_Load () Aplicable a Devuelve o establece un valor que indica si un objeto es visible o está oculto. Sintaxis objeto.Visible [= booleano] La sintaxis de la propiedad Visible consta de las siguientes partes:
Valores Los valores admitidos para booleano son:
Para ocultar un objeto al inicio, establezca la propiedad Visible a False en tiempo de diseño. Si establece esta propiedad en el código puede ocultar y volver a mostrar posteriormente un control en tiempo de ejecución como respuesta a un evento determinado. Nota El uso del método Show o Hide en un formulario equivale a establecer True o False, respectivamente, en su propiedad Visible a través del código. Ejemplo de la propiedad Visible En este ejemplo se crea una animación mediante dos controles PictureBox. Para probar este ejemplo, pegue el código en la sección Declaraciones de un formulario que contenga dos controles PictureBox de tamaño de icono. Establezca a FileCab la propiedad Name de los dos controles PictureBox para crear una matriz, presione F5 y haga clic en la imagen para ver la animación. Private Sub Form_Load () WindowState Aplicable a Devuelve o establece un valor que indica el estado visual de una ventana de formulario en tiempo de ejecución. objeto.WindowState [= valor] La sintaxis de la propiedad WindowState consta de las siguientes partes:
Valores Los valores admitidos para valor son:
Antes de mostrar un formulario, la propiedad WindowState tiene siempre el valor Normal (0), cualquiera que sea su estado inicial. Esto se refleja en los valores de las propiedades Height, Left, ScaleHeight, ScaleWidth, Top y Width. Si un formulario se oculta después de mostrarse, estas propiedades reflejarán el estado anterior hasta que se muestre de nuevo el formulario, independientemente de los cambios que se hagan mientras tanto en la propiedad WindowState.
Ejemplo de la propiedad WindowState En este ejemplo se oculta un cuadro de diálogo (Form2) cuando el formulario primario (Form1) se minimiza y se vuelve a mostrar cuando el formulario primario vuelve al estado original o se maximiza. Para probar este ejemplo, pegue el código en la sección Declaraciones de Form1 en una aplicación que contenga dos formularios. Presione F5 para iniciar el ejemplo. Desplace Form1 de forma que pueda ver los dos formularios, minimice o maximice el formulario y observe el comportamiento de Form2. Private Sub Form_Load () Private Sub Form_Resize () |
[Pagina
1] [Pagina
2] [Pagina
3] [Pagina
4] [Pagina 5]