© 1998 Microsoft Corporation. Reservados todos los derechos.
Otros nombres de productos y compañías mencionados aquí pueden ser marcas comerciales de sus respectivos propietarios
El archivo Léame de Visual Basic® contiene información actualizada de la documentación que acompaña a Microsoft® Visual Studio™: sistema de desarrollo para Windows® e Internet. La información de este documento está más actualizada que la información del sistema de Ayuda.
Contenido - Haga clic en cualquiera de los elementos siguientes
NOTA: Asegúrese de que todos los encabezados de la tabla de contenido están expandidos cuando realice la búsqueda de un tema dentro del archivo Léame. De este modo, podrá saber cuándo la búsqueda encuentra el tema dentro de los encabezados de la tabla de contenido.
Ubicación de los archivos de ejemplo
Paso de tipos definidos por el usuario a procedimientos
Incompatibilidades con los controles enlazados a datos
Buscar en pantalla mediante el título del tema
Las referencias cruzadas a Internet Client SDK hacen referencia a los servicios de Internet, Intranet y Extranet
Ayuda contextual
En ciertos casos, no es posible cortar y pegar correctamente el código de ejemplo
El botón Buscar está desactivado para ciertos temas de referencia
Buscar Ayuda acerca de objetos ADO
El proveedor de OLE DB de SQL Server necesita un nuevo instcat.sql
Error en el ejemplo de código del diseñador de entorno de datos
Incompatibilidades con los controles enlazados a datos
El enlace a propiedades de objetos puede dar resultados no esperados
El enlace complejo a un objeto Recordset de ADO necesita CursorType
Crear orígenes de datos de Visual Basic: utilice campos de tipo adVarChar en lugar de adBSTR con SQL Server y bases de datos de Access
Referencias incorrectas al crear proveedores de OLE DB
Buscar Ayuda acerca de objetos ADO
El proveedor de OLE DB de SQL Server necesita un nuevo instcat.sql
La instalación de aplicaciones de acceso a datos puede fallar en Windows 95/98
Los controles Lightweight deben ser sin borde
Error en tiempo de ejecución711: el archivo .EXE compilado no contiene información acerca de controles sin referencia que provocan un error en Controls.Add
Control Hierarchical FlexGrid: propiedades ColWordWrapOption, ColWordWrapOptionBand, ColWordWrapOptionFixed, ColWordWrapOptionHeader
Control Hierarchical FlexGrid: las propiedades ColIsVisible y RowIsVisible son de sólo lectura
Control DataRepeater: establecer propiedades públicas sólo tiene efecto en el control actual
Diseñador de informe de datos: error en el código de control de evento
Control RichTextBox: el método SelPrint tiene un argumento nuevo
La versión de Visual Basic 5 del control MSChart está disponible en el directorio Tools
Control Toolbar: cambios en los valores de la propiedad Style
Error en tiempo de ejecución 720 de Visual Basic: el intento de agregar algo que no sea un control a la colección Controls provoca un error en tiempo de ejecución
Control Hierarchical FlexGrid: corregir errores al enlazar un objeto Recordset al control HFlexGrid
Control Hierarchical FlexGrid: cómo cambiar la fuente de bandas individuales
Control Hierarchical FlexGrid: evitar la presentación de encabezados duplicados
Control Data de ADO: no se implementaron los eventos FetchProgress y FetchComplete
DataGrid: las propiedades SizeMode y Size Properties no aceptan el valor 2 (dbgNumberOfColumns)
Controles: control ImageList en un diseñador de páginas
Diseñador de páginas: problemas con los controles
Control MSComm: la propiedad EOFEnable no detiene la entrada de datos
Control Treeview: la propiedad Visible del objeto Node es de sólo lectura
Control SysInfo: constantes no admitidas
Control User: la persistencia binaria de los datos de PropertyBag causa un error en el diseñador de páginas
La función InStr y comparaciones dependientes de la configuración regional
La instrucción SendKeys provoca un error de llamada a procedimiento no válida
Aclaración de la instrucción Type
El tipo de datos Decimal se almacena como un entero con signo
La función DateSerial en Windows 98/Windows NT 5
Tecla de método abreviado "Buscar siguiente" de la ventana de código
Sintaxis del método Add (Carpetas)
Conseguir versiones actualizadas de las aplicaciones de ejemplo
Ubicación de los archivos de ejemplo
Ejemplo de Visual Basic: los ejemplos Biblio y Mouse se omiten
Ejemplos de Visual Basic: descripción de ChrtSamp
Ejemplos de Visual Basic: ejemplo CtlsAdd: es necesario habilitar controls.mdb en el disco, en modo lectura y escritura
Ejemplo DHSHOWME.VBP: puede ser necesario establecer de nuevo la propiedad SourceFile para que este ejemplo funcione correctamente en modo de diseño
Ejemplo PROPBAG.VBP: posible error al cargar el módulo correspondiente a este ejemplo
Ejecutar la aplicación de ejemplo IObjSafe
Nombres de rutas de acceso
La instalación de aplicaciones de acceso a datos puede fallar en Windows 95/98
Asistente de empaquetado y distribución: recogida automática de archivos del directorio Redist
El Asistente de empaquetado y distribución tiene una sección [Do Not Redist]
Asistente de empaquetado y distribución: en modo silencioso, la ventana Notificación puede no ser la primera en el orden Z
Asistente de empaquetado y distribución: se agregó un argumento al modo de la línea de comandos para especificar una ruta ejecutable
Asistente de empaquetado y distribución: agregar manualmente archivos de licencia de control de usuario
Asistente de empaquetado y distribución: etapas en el proceso de distribución en Web
Asistente de empaquetado y distribución: sugerencias acerca de la distribución en Web con el protocolo HTTP
Asistente de empaquetado y distribución: elementos del menú Inicio: opción Ejecutar no admitida
Configuraciones del sistema para Posting Acceptor de WebPost
Asistente de empaquetado y distribución: modifique el archivo Setup.lst si vuelve a generar archivos .CAB a partir de un archivo por lotes
Asistente de empaquetado y distribución: error 80042114
Asistente de empaquetado y distribución: uso de Mdac_typ.Cab para distribuir componentes de acceso a datos
Archivos .ASP no incluidos en los paquetes estándar
Asistente de empaquetado y distribución: agregue manualmente los archivos .ASP y .HTM para las aplicaciones IIS cuando utilice la instalación estándar
Asistente de empaquetado y distribución: formatos de fecha y hora incorrectos
Asistente de empaquetado y distribución: no se puede ejecutar Setup.exe en la primera versión de Windows 95
Asistente de empaquetado y distribución: empaquetado de documentos ActiveX
No existen temas de ayuda correspondientes a los mensajes de error siguientes
Mensajes de error del diseñador de páginas DHTML
Error en tiempo de ejecución711: el archivo .EXE compilado no contiene información acerca de controles sin referencia que provocan un error en Controls.Add
Clases de Web: "Me." no admitido
Clases de Web: una sintaxis HTML no válida puede causar un error no especificado
Clases de Web: evite el uso de variables globales o estáticas en una clase de Web
Clases de Web: algunos cambios de código HTML externos no se detectan automáticamente
Clases de Web: las configuraciones del archivo de consola de administración de IIS no están permitidas para las plantillas
Clases de Web: ejecución desatendida
Clases de Web: Conservado en memoria
Clases de Web: resumen de diferencias entre la versión para depuración y la versión compilada
Clases de Web: sugerencias para el rendimiento
Clases de Web: problemas diversos
Clases de Web: artículos de interés
Clases de Web: aplicar formato en el código fuente del archivo HTM
Clases de Web: no se admite el elemento LINK de código HTML
Clases de Web: cuando utiliza Visual SourceSafe con proyectos de clase de Web, proteja manualmente los archivos del proyecto .HTM
Clases de Web: el valor de TagPrefix debería ser WC:
Clases de Web: parámetro Variant en el método URLFor
Clases de Web: los datos en secuencia se pasan mediante el parámetro &WCU
Clases de Web: las constantes de la propiedad StateManagement hacen referencia a propiedades incorrectas
Clases de Web: estado y objeto Session
Clases de Web: correcciones al tema de la Ayuda "Definir eventos de la clase de Web en tiempo de ejecución"
Clases de Web: archivos HTM y ASP no incluidos en los paquetes estándar
Clases de Web: error no especificado
Mensajes de error del diseñador de páginas
Diseñador de páginas: "Me." no admitido
Diseñador de páginas: no se tiene acceso a elementos de código HTML desde formularios u objetos externos
Diseñador de páginas: los archivos de origen de imagen no se resuelven correctamente
Diseñador de páginas: problemas con la persistencia binaria
Diseñador de páginas: problemas en la biblioteca de tipos impiden que se muestren algunos temas de la Ayuda
Diseñador de páginas: aparecen cuadros modales detrás del explorador en modo de ejecución
Diseñador de páginas: no inspeccione objetos del tipo HTMLDocument
Diseñador de páginas: no es posible diseñar marcos dentro del diseñador de páginas
Diseñador de páginas: no se puede usar código de Visual Basic con el método SetInterval
Diseñador de páginas: problemas con los controles
Diseñador de páginas: problemas diversos del código HTML
Diseñador de páginas: problemas diversos de depuración
Diseñador de páginas: sintaxis para explorar mediante programa
Diseñador de páginas: ubicación de los archivos de proyecto en la distribución mediante archivos .CAB
Diseñador de páginas: inserción de etiqueta OBJECT
Diseñador de páginas: no es posible usar Ctrl-Tab entre ventanas cuando el diseñador de páginas tiene el enfoque
Diseñador de páginas: no se puede eliminar una tabla si no contiene columnas
Diseñador de páginas: cuando utiliza Visual SourceSafe con proyectos del diseñador de páginas, debe proteger manualmente los archivos del proyecto .HTM
Diseñador de páginas: una propiedad BuildFile no calificada genera el archivo DLL en el escritorio
Diseñador de páginas: uso del evento Load con la propiedad AsyncLoad
Diseñador de páginas: problema con la página de propiedades
Diseñador de páginas: cambio en el nombre de la opción Guardar
Diseñador de páginas: problema al mostrar código cuando se cambia del modo de compilación al modo de depuración
Diseñador de páginas: la Ayuda acerca de la mayoría de los elementos de lenguaje está disponibles en Platform SDK
Comportamiento de un complemento "A prueba de errores en la línea de comandos"
Establecer manualmente valores de complementos en el registro
Uso del diseñador de complementos
Diseñador de complementos: información adicional acerca de la especificación de un archivo DLL satélite
Devolver un valor de error desde un archivo DLL
Guía de acceso a datos: el tutorial de DataFormats tiene una extensión incorrecta
Se agregó un campo para un editor externo al cuadro de diálogo Opciones
Herramienta CodeBase Fixup Utility en la descarga de componentes de Internet
Texto truncado en los cuadros de diálogo Propiedades de proyecto/Abrir en las versiones de Windows para Japón, China y Corea
Buscar Ayuda acerca de objetos ADO
Evite el uso del complemento Repository con diseñadores ActiveX
La instalación de BackOffice sobrescribe la versión más reciente del control Calendar de MS Access
El tema "Archivos relacionados (Ficha, cuadro de diálogo Propiedades de componente)" no es correcto
Eliminar las claves de registro de Repository 1.0
Agregar tablas de Repository a un archivo .MDB existente
Explorador de rendimiento de aplicaciones
Para obtener información acerca de problemas relacionados con la instalación de Microsoft® Visual SourceSafe™, vea Notas acerca de Visual SourceSafe.
La instalación de BackOffice sobrescribe la versión más reciente del control Calendar de Microsoft Access
En relación con problemas de instalación generales del conjunto de productos de Visual Studio 6.0, o incluso de la instalación de varios productos juntos, vea el archivo léame Notas de instalación (install.htm).
Para otros problemas relacionados con el sistema de Ayuda del conjunto de productos de Visual Studio, puede ir a:
MSDNä, el Archivo Léame de MSDN™ The Microsoft Developer Network.
Problemas importantes
Paso de tipos definidos por el usuario a procedimientos
Con Visual Basic 6.0 es posible pasar un tipo definido por el usuario (UDT) como argumento a un procedimiento o función. Existe sin embargo una restricción. El paso de un UDT a un procedimiento dentro de un proceso fuera de proceso o a través de subprocesos en un componente multiproceso necesita una versión actualizada de DCOM para Windows 95 y Windows 98 o bien Service Pack 4 para Windows NT 4.0. Esta actualización es necesaria en el equipo de desarrollo así como en cualquier equipo que vaya a ejecutar la aplicación. Si no están instalados los archivos necesarios ocurrirá un error en tiempo de ejecución.
Lo anterior no se aplica en el caso del paso de un UDT dentro de una aplicación con un único subproceso, y funcionará sin necesidad de la actualización.
El Asistente de empaquetado y distribución no determinará las dependencias de los componentes necesarios: es responsabilidad suya asegurarse de que los archivos se encuentran en el equipo del usuario final. Es posible hacer pruebas de la existencia de los componentes: para ello capture el error en tiempo de ejecución 458: "La variable usa un tipo de Automatización no admitido en Visual Basic". Si se produce un error, es necesario actualizar los componentes de DCOM o de Service Pack; el procedimiento de actualización varía en función del sistema operativo:
Windows 95 / Windows 98
DCOM98.EXE es un archivo ejecutable de extracción automática que instala los componentes DCOM actualizados para Windows 95 o Windows 98. Puede encontrarlo en el directorio DCOM98 del CD de Visual Basic 6.0. Puede distribuir gratuitamente este archivo con su aplicación de Visual Basic.
Windows NT 4.0
Los componentes DCOM actualizados se instalan automáticamente con Service Pack 4 (SP4). Puede descargar Service Pack desde el sitio Web de Microsoft.
Buscar en pantalla mediante el título de tema
Para buscar un tema cuando ya conoce el título
- En el panel de exploración de la ventana MSDN, haga clic en la ficha Buscar y a continuación escriba o pegue el título del tema que desea encontrar. Entrecomille la cadena de búsqueda.
- Haga clic en Buscar sólo títulos.
- Haga clic en Listar temas. (Si la búsqueda devuelve más de una respuesta, es posible ordenar la lista de temas: para ello haga clic en el encabezado de columna Título o Ubicación).
- Seleccione el título del tema que desea y a continuación haga clic en Mostrar.
Para encontrar un tema dentro de la tabla de contenido
- Haga clic en el botón Buscar en la barra de herramientas. La tabla de contenido se sincronizará con el tema que está consultando.
Nota El botón Buscar no está disponible para los temas del nodo de referencia de la documentación de Visual Basic.
Las referencias cruzadas a Internet Client SDK hacen referencia a los servicios de Internet,Intranet y Extranet
El libro Generar aplicaciones para Internet de la Guía de herramientas componentes contiene múltiples referencias a una parte de MSDN con el nombre "Internet Client SDK". El nombre correcto de este SDK es "Servicios de Internet, Intranet y Extranet". Cuando busque una referencia a Internet Client SDK en MSDN, busque primero en esta sección.
Ayuda contextual
Para utilizar los botones de Ayuda y la tecla F1 para abrir la Ayuda sin tener el CD de MSDN en la unidad de CD, debe elegir la opción Instalación personalizada durante la instalación de la biblioteca MSDN. Active las casillas con los nombres "Documentación de VB", "Ejemplos de productos de VB" y "Documentación compartida de VS". También conviene activar la casilla "Documentación de VSS" si piensa utilizar Visual SourceSafe.
En ciertos casos no es posible cortar y pegar correctamente el código de ejemplo
Es posible que los saltos de líneas y la información de formato no permitan copiar correctamente código desde la documentación de Visual Studio de la biblioteca MSDN para pegarlo en su editor de código. Para evitar este problema, siga uno de los procedimientos siguientes:
- Modifique manualmente los saltos de líneas después de copiar el código.
- Con el código fuente a la vista, copie el ejemplo de código completo, incluso las etiquetas <pre> y </pre>, péguelo en su editor de código y a continuación elimine las secciones no deseadas de la versión pegada.
El botón Buscar está desactivado para ciertos temas de referencia
Cuando encuentra un tema de referencia al lenguaje en la biblioteca MSDN mediante la ficha Búsqueda, no puede utilizar el botón Buscar con el fin de encontrar el lugar donde aparece el tema dentro del árbol de la tabla de contenido de MSDN.
Sugerencias acerca de Acceso a datos y DataBinding
Error en el ejemplo de código del diseñador de entorno de datos
En el tema, "Acceso por programa a los objetos del Diseñador de entorno de datos", el ejemplo ubicado bajo "Ejecutar un objeto Command con parámetros múltiples" utiliza de modo erróneo el método Open:
MyDE.Commands("InsertCustomer").Parameters("ID").value = "34" MyDE.Commands("InsertCustomer").Parameters("Name").value = "Fred" MyDE.Commands("InsertCustomer").OpenNo existe ningún método Open correspondiente al objeto Commands. En lugar de ello, debe utilizar el método Execute.
Incompatibilidades con los controles enlazados a datos
Debido a cambios en Visual Basic 6.0, no todos los controles enlazados a datos son compatibles con todos los orígenes de datos. Esta incompatibilidad se debe a una diferencia en los mecanismos internos de enlace de ADO por un lado y de DAO/RDO por otro. No es posible enlazar con un control Data de ADO los controles creados específicamente para trabajar con DAO/RDO; no es posible enlazar con el control Data estándar o el control Remote Data los controles creados para su uso con ADO.
Esta incompatibilidad se aplica principalmente a los controles con enlace complejo como las cuadrículas o las listas enlazadas a campos múltiples en un origen de datos; los controles con enlace simple como los cuadros o las etiquetas de texto que se enlazan con un único campo funcionarán con cualquier tipo de origen de datos. A continuación se proporcionan algunos ejemplos:
- El control Microsoft Data Bound Grid (Dbgrid32.ocx) puede enlazarse con los controles Data de DAO o RDO; no es posible enlazarlo con el control Data de ADO.
- El control Microsoft DataGrid (Msdatgrd.ocx) puede enlazarse con el control Data de ADO; no es posible enlazarlo con los controles Data de DAO o RDO.
- El control Microsoft Masked Edit (Msmask32.ocx) puede enlazarse con cualquiera de los controles Data.
- Los controles intrínsecos (TextBox, PictureBox, Label y similares) pueden enlazarse con cualquiera de los controles Data.
- Conviene probar caso por caso los controles de otras empresas así como los controles de usuario creados con Visual Basic.
Cuando se intenta enlazar un control con un origen de datos en tiempo de diseño, es posible encontrarse con un mensaje de error "Origen de datos no compatible". En tal caso, será necesario utilizar en su lugar otro control que sea compatible con su origen de datos.
El enlace de objetos a propiedades puede dar resultados no esperados
Aunque es posible enlazar cualquier objeto con cualquier otro objeto, los resultados pueden no ser siempre los esperados. Ciertas propiedades sólo pueden enlazarse en modo de sólo lectura y no actualizan sus respectivos orígenes de datos.
Por ejemplo, si enlazó la propiedad Caption de un control Frame con un campo llamado "Foo" de un objeto Recordset de ADO, los cambios en el título podrán reflejar el valor del campo Foo a medida que se desplaza a través del conjunto de registros. Sin embargo, si cambió la propiedad Caption por programación (Frame1.Caption = "Bar"), no se actualizará el valor de Foo. Dado que la propiedad Caption del control Frame puede enlazarse como de sólo lectura, no proporciona la notificación de que sus datos han cambiado.
Esto no es un problema en el caso de objetos creados con Visual Basic en los que puede llamar al método PropertyChanged en el código de su objeto. Para otros objetos, puede determinar si una propiedad enlazada se actualiza al examinar la colección DataBindings. Si una propiedad aparece en la enumeración de la colección DataBindings, esto significa que tiene un enlace actualizable y el origen de datos recibirá notificaciones de actualizaciones a datos; si no aparece, la propiedad sólo puede enlazarse como de sólo lectura.
El enlace complejo a un objeto Recordset de ADO necesita CursorType
Cuando enlaza un objeto Recordset de ADO con un control de enlace complejo (como un control Grid), es necesario establecer explícitamente la propiedad CursorType con el valor adOpenStatic o bien adOpenKeyset. Si no establece esta propiedad, no se mostrará ningún dato. El código siguiente ilustra el uso de la propiedad CursorType.
Private Sub DataClass_Initialize() Set cn = New ADODB.Connection Set rs = New ADODB.Recordset rs.CursorType = adOpenStatic cn.Open "northwind" rs.Open "customers", cn End SubUn enlace a un control con enlace simple (como un control TextBox) no necesita el uso de un CursorType específico.
Crear orígenes de datos de Visual Basic: utilice campos de tipo adVarChar en lugar de adBSTR con SQL Server y bases de datos de Access
Cuando agrega campos al final de un objeto Recordset de ADO para su uso con SQL Server o con una base de datos de Access, aplique en los campos el tipo adVarChar en lugar de adBSTR (tal como aparece en algún código de ejemplo). Al leer los datos devueltos por SQL Server o por bases de datos de Access, ADO utilizará el tipo adVarChar.
Referencias incorrectas al crear proveedores OLE DB
La documentación afirma erróneamente que es posible establecer la propiedad DataSourceBehavior de un módulo de clase con el valor 2 - vbOLEDBProvider con el fin de crear un proveedor de datos OLE DB. Los valores correctos para DataSourceBehavior son 0 - vbNone y 1 - vbDataSource.
La documentación también hace referencia erróneamente a un evento inexistente en módulos de clase llamado OnDataConnection.
Por último, en el tema "Crear la clase MyDataSource", el ejemplo paso a paso afirma incorrectamente que conviene establecer DataSourceBehavior con el valor 2 - vbOLEDBProvider. En lugar de ello, conviene establecer DataSourceBehavior con el valor 1 - vbDataSource.
Para crear proveedores de datos OLE DB mediante Visual Basic, utilice el Provider Writer Toolkit incluido con el SDK de OLE DB. Para obtener más información, vea el apartado OLE DB Simple Provider Toolkit en Platform SDK Documentation de la biblioteca MSDN.
Buscar Ayuda acerca de objetos ADO
Cuando utiliza objetos ADO (un objeto Recordset, Connection, Command, Parameter, ADOR, RDS o RDS Server por ejemplo), no puede obtener Ayuda contextual acerca del objeto o sus propiedades, eventos o métodos. En otros términos, dada una referencia a un objeto del que utiliza alguna de sus características, si selecciona el código y presiona F1 no conseguirá mostrar un tema de ayuda. En su lugar obtiene un tema incorrecto o bien el tema "Palabra clave no encontrada".
Puede sin embargo abrir la Ayuda relacionada con cualquiera de las propiedades, eventos o métodos del objeto mediante el índice de la documentación en pantalla:
- Si el visor de la documentación de MSDN no está abierto, haga clic en el menú Ayuda y elija Contenido.
- Haga clic en la ficha Índice.
- Escriba el nombre de la propiedad, evento o método e incluya la palabra "colección", "propiedad", "evento" o "método" según corresponda.
- En la lista de los temas disponibles, seleccione el tema que menciona "ADO" en el título.
Nota También encontrará información adicional acerca de otros temas de ADO, como el modelo de objeto ADO: para ello busque en la tabla de contenidos de la biblioteca MSDN: abra Platform SDK y bajo Servicios de bases de datos y mensajería, vaya a SDK de acceso a datos de Microsoft.El proveedor de OLE DB de SQL Server requiere un nuevo instcat.sql
Antes de utilizar el proveedor de datos de OLE DB SQL Server, debe ejecutar la versión de instcat.sql distribuida con Microsoft Visual Basic 6.0 sobre SQL Server (Versión 6.5 y posterior). Instcat.sql se distribuye con Visual Basic 6.0 y es posible encontrarlo en el directorio \winnt\system32 tras la instalación.Si no ejecutó Instcat.sql en su SQL Server, el proveedor no es capaz de recuperar los metadatos de SQL Server y por consiguiente no puede conectar con dicho servidor.
La instalación de aplicaciones de acceso a datos puede fallar en Windows 95/98
Cuando se redistribuye una aplicación de VB 6.0 que incluye componentes de acceso a datos, el programa de instalación fallará si no está presente DCOM para Windows 95 y Windows 98 en los equipos de cliente con Windows 9x.
El Asistente de empaquetado y distribución agrega el archivo Mdac_typ.exe a su paquete de instalación si su proyecto incluye referencias a ADO, OLEDB u ODBC (puede comprobar esto en la página Archivos incluidos del asistente). Este archivo instala los archivos MDAC 2.0 en el equipo cliente. MDAC 2.0 necesita DCOM para Windows 95 y Windows 98 para poder funcionar correctamente pero no realiza ninguna comprobación de esto durante la instalación. La instalación fallará si DCOM para Windows 95 y Windows 98 no está presente en el equipo cliente. Algunos de los antiguos componentes de acceso a datos serán sobrescritos antes de producirse el error y esto hará que fallen aplicaciones de acceso a datos más antiguas en el cliente.
Cuando distribuye aplicaciones de acceso a datos para Windows 9x, asegúrese de que DCOM para Windows 95 y Windows 98 se instaló en el cliente. DCOM98.EXE es un archivo de extracción automática que instala los componentes de DCOM actualizados para Windows 95 o Windows 98. Es posible encontrar este archivo en el directorio DCOM98 del CD de Visual Basic 6.0 y distribuirlo gratuitamente junto con su aplicación de Visual Basic.
Problemas con los controles
Los controles Lightweight deben ser sin borde
Al crear un control de usuario Lightweight, el valor de la propiedad BorderStyle deja de tener validez cuando establece la propiedad Windowless a True. Por definición, un control lightweight no tiene borde.
Si establece primero la propiedad BorderStyle con un valor distinto de 0 - None y más adelante cambia la propiedad Windowless a True, el programa presenta el mensaje de error "Los objetos UserControl de tipo Windowless sólo admiten BorderStyle = None".
Error en tiempo de ejecución 711: el archivo .EXE compilado no contiene información acerca de controles los que no se hace referencia que provocan un error en Controls.Add
Problema:
- Cree un proyecto Exe estándar nuevo.
- Agregue un control de usuario al proyecto.
- Agregue el código siguiente:
Dim WithEvents x as VBControlExtender Private Sub Form_Load () Set x = Controls.Add ("Project1.Usercontrol1", "XX") x.Visible = True End Sub- En el menú Archivo , haga clic en Generar Project1.exe (no ejecute el proyecto).
- Ejecute el archivo EXE.
Resultado: obtiene un error (711) que confirma que Project1.Usercontrol1 no es un ProgID válido dado que no puede encontrarse información acerca del mismo en el archivo EXE.
Solución: Antes de compilar el proyecto, haga clic en el menú Proyecto y elija Propiedades de Project1. En la ficha Generar, desactive la casilla "Quitar información acerca de los controles ActiveX no usados".
Observaciones
De modo predeterminado, los controles ActiveX a los que haga referencia sin antes colocarlos en algún tipo de formulario en tiempo de diseño no están disponibles para el método Controls.Add en tiempo de ejecución o en un ejecutable.
Control Hierarchical FlexGrid: propiedades ColWordWrapOption, ColWordWrapOptionBand, ColWordWrapOptionFixed, ColWordWrapOptionHeader
Las propiedades siguientes son parte del conjunto de características del control Hierarchical FlexGrid pero no están incluidas en la Ayuda del control: ColWordWrapOption, ColWordWrapOptionBand, ColWordWrapOptionFixed, ColWordWrapOptionHeader. Encontrará la descripción y la sintaxis de estas propiedades a continuación. Para todas ellas, los valores son los mismos y los encontrará al final del tema correspondiente.
ColWordWrapOption (Propiedad)
Devuelve o establece un valor que especifica el ajuste del texto en una columna especificada.
Sintaxis
objeto.ColWordWrapOption (Index) = integer
La sintaxis de la propiedad ColWordWrapOption consta de las siguientes partes:
Parte
Descripción
objeto
Expresión de objeto que da como resultado un control Hierarchical FlexGrid.
Index
Long. Número de la columna en la que se lee o establece el ajuste del texto. El valor debe estar comprendido en el intervalo -1 y Cols - 1. Un valor -1 permite seleccionar todas las columnas.
integer
Expresión numérica que determina el ajuste de palabras, como se muestra en valores.
ColWordWrapOptionBand (Propiedad)
Devuelve o establece un valor que especifica el ajuste del texto en una banda especificada.
Sintaxis
objeto.ColWordWrapOptionBand (BandNumber, BandColIndex) = integer
La sintaxis de la propiedad ColWordWrapOption consta de las siguientes partes:
Parte
Descripción
objeto
Expresión de objeto que da como resultado un control Hierarchical FlexGrid.
BandNumber
Long. Número de la banda en la que se lee o establece el ajuste del palabras. El valor debe estar comprendido en el intervalo 0 a Bands - 1.
BandColIndex
Long. Número de la columna en la que se lee o establece el ajuste del texto. Este parámetro opcional tiene el valor predeterminado -1, para indicar todas las columnas de la banda. Los valores admitidos van de -1 a Cols -1.
integer
Expresión numérica que determina cómo se ajustan las palabras, como se muestra en valores.
ColWordWrapOptionFixed (Propiedad)
Devuelve o establece un valor que especifica el ajuste del texto en una columna fija especificada.
Sintaxis
objeto.ColWordWrapOptionFixed(index) = integer
La sintaxis de la propiedad ColWordWrapOptionFixed consta de las siguientes partes:
Parte
Descripción
objeto
Expresión de objeto que da como resultado un control Hierarchical FlexGrid.
index
Long. Número de la columna en la que se obtiene o establece el ajuste de palabras. Este parámetro opcional tiene el valor predeterminado -1. Los valores admitidos van de -1 a Cols -1.
integer
Expresión numérica que determina el ajuste de las palabras, como se muestra en valores.
ColWordWrapOptionHeader (Propiedad)
Devuelve o establece un valor que especifica el ajuste del texto en un encabezado de columna.
Sintaxis
objeto.ColWordWrapOptionHeader(BandNumber, BandColIndex) = integer
La sintaxis de la propiedad ColWordWrapOptionHeader consta de las siguientes partes:
Parte
Descripción
objeto
Expresión de objeto que da como resultado un control Hierarchical FlexGrid.
BandNumber
Long. El número de la banda en la que se lee o establece el ajuste de palabras. El valor debe estar comprendido en el intervalo 0 a Bands - 1.
BandColIndex
Long. Número de la columna en la que se obtiene o establece el ajuste de palabras. Este parámetro opcional tiene el valor predeterminado -1 que indica todos los encabezados de columnas en la banda. Los valores admitidos van de -1 a Cols -1.
integer
Expresión numérica que determina cómo se ajustan las palabras, como se muestra en valores.
Valores
Los valores admitidos para integer son:
Constante
Valor
Descripción
flexSingleLine
0
(Predeterminado) Muestra texto en una única línea.
flexWordBreak
1
Las líneas se ajustan automáticamente entre palabras.
flexWordEllipsis
2
Recorta el texto que entra dentro del rectángulo y agrega puntos suspensivos.
flexWordBreakEllipsis
3
Ajusta las palabras entre líneas y agrega puntos suspensivos si el texto no entra dentro del rectángulo.
Control Hierarchical FlexGrid: las propiedades ColIsVisible y RowIsVisible son de sólo lectura
Las propiedades ColIsVisible y RowIsVisible son de sólo lectura y no pueden establecerse mediante programa. Puede utilizar las propiedades para probar si una columna o fila es visible así como ocultarlas en su caso, como se muestra a continuación:
With MSHFlexGrid1 If .ColIsVisible(1) Then .ColWidth(1) = 0 If .RowIsVisible(1) Then .RowHeight(1) = 0 End WithControl Hierarchical FlexGrid: valores adicionales de las propiedades GridLines, GridLinesBand, GridLinesFixed, GridLinesHeader, GridLinesIndent y GridLinesUnpopulated
Es posible utilizar dos valores adicionales para las propiedades siguientes: GridLines, GridLinesBand, GridLinesFixed, GridLinesHeader, GridLinesIndent y GridLinesUnpopulated. Los valore posibles se muestran en la tabla siguiente:
Constante
Valor
Descripción
flexGridDashes
4
Líneas discontinuas. Establece el estilo de línea discontinua entre celdas.
flexGridDots
5
Líneas de puntos. Establece el estilo de línea de puntos entre celdas.
Observaciones
Es posible utilizar estos valores además de flexGridNone, flexGridFlat, flexGridInset y flexGridRaised.
Control DataRepeater: establecer propiedades públicas sólo tiene efecto en el control actual
Cuando cree un control de usuario para usarlo en un control DataRepeater, preste atención al hecho de que las propiedades públicas del control tan sólo se establecerán en el control actual (el control "activo" con el enfoque). Por ejemplo, si expone la propiedad Font de un control de usuario en tiempo de ejecución y establece de nuevo esta propiedad (como se muestra en el código de ejemplo a continuación) esta operación tendrá tan sólo efecto en el control actual del control DataRepeater. No tendrá efecto en la fuente de los controles repetidos.
Private Sub Command1_Click() ' Tan solo tiene efecto en la fuente del control actual. DataRepeater1.RepeatedControl.FontName = "Courier" End SubEl código correspondiente del control de usuario podría parecerse al siguiente:
Public Property Get FontName() As String FontName = txtProductName.Font.Name End Property Public Property Let FontName(ByVal newFontName As String) txtProductName.Font.Name = newFontName End Property
Control TabStrip: los separadores se muestran tan sólo cuando la propiedad Style = TabFlatButtons
Los separadores aparecerán en un control TabStrip tan sólo cuando la propiedad Style tiene el valor TabFlatButtons. Se muestra un ejemplo a continuación:
Private Sub Form_Load() With TabStrip1 .Style = tabFlatButtons .Separators = True End With End Sub
Diseñador de informe de datos: error en el código de control de evento
En el tema con el título Eventos de un informe de datos, existe un error en el código que explica cómo controlar los errores asíncronos. Para obtener más información efectúe una búsqueda en pantalla con la opción Buscar sólo títulos activada acerca de "Eventos de un informe de datos" en la documentación de Visual Studio 6.0 de la biblioteca MSDN.
El código se encuentra bajo el encabezado "Eventos de error para eventos asíncronos".
El código omite una instrucción "Select Case ErrObj.ErrorNumber". El código correcto es:
Private Sub DataReport_Error(ByVal JobType As _ MSDataReportLib.AsyncTypeConstants, ByVal Cookie As Long, _ ByVal ErrObj As MSDataReportLib.RptError, ShowError As Boolean) Select Case ErrObj.ErrorNumber Case rptErrPrinterInfo ' 8555 MsgBox "Error de impresión. " & _ "Es posible que no haya ninguna impresora instalada." ShowError = False Exit Sub Case Else ' Tratar otras situaciones aquí. ShowError = True End Select End Sub
Control RichTextBox: el método SelPrint tiene un argumento nuevo
El método SelPrint incluye ahora un segundo argumento opcional. La sintaxis y descripción de esta parte se muestra a continuación:
Sintaxis
objeto.SelPrint(lHDC As Long, [vStartDoc])
La sintaxis del método SelPrint consta de las siguientes partes:
Parte
Descripción
objeto
Expresión de objeto que da como resultado un control RichTextbox.
lHDC
Long. Contexto de dispositivo del dispositivo que tiene previsto utilizar para imprimir el contenido del control.
vStartDoc
Boolean. Especifica el comportamiento del control en relación con las operaciones de control de impresora startdoc y enddoc, como se muestra en valores.
Valores
Los valores admitidos para vStartDoc son:
Constante
Valor
Descripción
True
-1
(Predeterminado) El control conserva su comportamiento original y envía comandos startdoc y enddoc a la impresora.
False
0
El control no envía comandos startdoc y enddoc, sino únicamente comandos startpage y endpage a la impresora.
Observaciones
El argumento fue agregado con el fin de resolver situaciones en las que el comportamiento predeterminado no permite que las impresoras impriman. Cuando se invoca el método SelPrint, tanto Visual Basic como el control RichTextBox envían comandos startdoc y enddoc a la impresora dando como resultado dos pares de comandos startdoc/enddoc anidados. Algunas impresoras responden tan sólo al primer par de comandos y quedan por consiguiente deshabilitadas cuando el control RichTextbox envía el segundo par. En tal caso, establecer el argumento vStartDoc a False permite impedir el envío del segundo par de comandos.
La versión de Visual Basic 5 del control MSChart está disponible en el directorio Tools
Sólo para usuarios de la versión preliminar de Visual Basic:
Una versión de Visual Basic 5.0x del control MSChart se incluye ahora con Visual Basic. Si necesita una versión de Visual Basic 5 del control Chart e instaló la versión preliminar del control MSChart, sustituya la versión preliminar por la versión incluida en el directorio Tools del CD de Visual Basic.
Control Toolbar: cambios en los valores de la propiedad Style
Los valores de la propiedad Style para el control Toolbar han sido modificados. El tema de la Ayuda correspondiente a la propiedad enumera tbrTransparent y tbrRight como posibles valores, que sin embargo no están implementados en la versión actual. Los valores posibles por ahora y sus descripciones se muestran a continuación:
Constante
Valor
Descripción
tbrStandard
0
(Predeterminado) Barra de herramientas estándar.
tbrFlat
1
Plano. Los bordes de un botón aparecen dinámicamente cuando el cursor pasa sobre el botón.
Error en tiempo de ejecución 720 de Visual Basic: el intento de agregar algo que no sea un control a la colección Controls provoca un error en tiempo de ejecución
El intento de agregar a la colección Controls algo que no sea un control provoca el error en tiempo de ejecución 720. Tan sólo puede agregar controles intrínsecos de Visual Basic o controles ActiveX a la colección.
Para reproducirlo:
- Cree un Exe estándar nuevo.
- Agregue el código siguiente:
Private Sub Form_Load () Controls.Add "Excel.Application", "MyExcelApp") End Sub- Ejecute el archivo EXE.
Resultado: Obtiene un error (720): cadena de clase no válida.
Control Hierarchical FlexGrid: corregir errores al enlazar un objeto Recordset al control HFlexGrid
Si al intentar enlazar el control Hierarchical FlexGrid con un objeto Recordset de ADO recibe el error siguiente: "La configuración de DataSource puede ser incorrecta", intente cambiar algunas las propiedades de comportamiento asociadas con el objeto Recordset o Command de ADO. Por ejemplo, cambie la propiedad CursorLocation a adUseNone o bien a adUseClient.
Control Hierarchical FlexGrid: cómo cambiar la fuente de bandas individuales
Dado que la cuadrícula completa utiliza un mismo objeto Font, debe crear nuevos objetos Font con el fin de modificar las fuentes de las bandas individuales en lugar de cambiar directamente la fuente.
Por ejemplo, este procedimiento no cambia la fuente de la banda individual:
MSHFlexGrid1.FontBand(1).Name = "Arial"
Al modificar directamente el objeto Font, esto cambiaría la fuente de todas las bandas a Arial.
Para cambiar una banda individual, cree primero un nuevo objeto Font y a continuación asígnelo a la propiedad FontBand :
Dim ft As New StdFont ft.Name = "Arial" Set MSHFlexGrid1.FontBand(1) = ftEsto cambiará sólo la fuente de la banda a Arial.
Control Hierarchical FlexGrid: evitar la presentación de encabezados duplicados
De modo predeterminado, el control Hierarchical FlexGrid utiliza la primera fila fija del control Hierarchical FlexGrid como un conjunto de encabezados (lo que significa que muestra los nombres de los campos enlazados a cada columna en dicha fila). Debido a que el control HFlexGrid muestra de modo predeterminado una sola fila fija, si habilita la presentación de los encabezados en la banda 0, en efecto parecerá que se duplicó el encabezado. Para evitar esto, establezca la propiedad FixedRow a 0 o borre los valores de texto en la primera fila fija mediante código.
Control Data de ADO: no se implementaron los eventos FetchProgress y FetchComplete
Aunque el tema de referencia correspondiente al Control Data de ADO incluye vínculos a los eventos FetchProgress y FetchComplete, dichos eventos no se implementaron para ese control.
DataGrid: las propiedades SizeMode y Size Properties no aceptan el valor 2 (dbgNumberOfColumns)
Los temas de referencia para las propiedades SizeMode y Size del objeto Split hacen referencia a un valor de propiedad (dbgNumberOfColumns) que no existe. Pase por alto dicho valor.
Controles: control ImageList en un diseñador de páginas
Cuando utiliza el control ImageList en un diseñador de páginas DHTML, no es posible agregar imágenes en tiempo de diseño. Si intenta utilizar el código siguiente dentro de un proyecto .dll no compilado, obtendrá el error en tiempo de ejecución: -2147418113 (8000ffff), "Error en el método 'Add' de las imágenes objeto".
Private Sub DHTMLPage_Load() ImageList1.ListImages.Add , , LoadPicture("C:\Winnt\winnt.bmp") End SubSin embargo, el código funcionará cuando compile el proyecto .dll.
Control MSComm: la propiedad EOFEnable no interrumpe la recepción de datos
La propiedad EOFEnable determina si se genera el evento OnComm cuando se detecta un carácter EOF. Sin embargo, al contrario de lo mencionado en la documentación acerca de la propiedad, la entrada de datos no se interrumpe.
Control Treeview: la propiedad Visible del objeto Node es de sólo lectura
La propiedad Visible del objeto Node del control Treeview es una propiedad de sólo lectura. Si el nodo no es visible, puede utilizar el método EnsureVisible para hacerlo visible, como se muestra en el ejemplo:
Private Sub Command1_Click() If Not TreeView1.Nodes(10).Visible Then TreeView1.Nodes(10).EnsureVisible End If End SubControl SysInfo: constantes no admitidas
Los temas de referencia de los eventos siguientes:
- DeviceArrival (Evento)
- DeviceOtherEvent (Evento)
- DeviceQueryRemove (Evento)
- DeviceQueryRemoveFailed (Evento)
- DeviceRemoveComplete (Evento)
- DeviceRemovePending (Evento)
tienen listas de constantes que identifican dispositivos y datos de dispositivos. Sin embargo, al contrario de lo mencionado por la documentación, estas constantes no son admitidas por el control SysInfo. Los valores asociados con las constantes enumeradas en los temas de la Ayuda son válidos, pero los nombres de constantes no lo son.
Control User: la persistencia binaria de los datos de PropertyBag causa un error en el diseñador de páginas
PropertyBag guarda los datos en formato binario. Sin embargo, debido a un problema identificado con la persistencia binaria y el diseñador de páginas DHTML, los datos de este tipo provocan el error del diseñador de páginas y de Visual Basic. Vea Diseñador de páginas: problemas con la persistencia binaria para obtener más información.
Problemas con el idioma
La función InStr y comparaciones dependientes de la configuración regional
Para utilizar reglas dependientes de la configuración regional en una comparación, escriba un LCID (Id. de configuración regional) válido.
La instrucción SendKeys provoca un error de llamada a procedimiento no válido
La forma corta del código para enviar un tecla Insert {INS} da como resultado un error de "Llamada a procedimiento no válida" bajo Windows NT 4.0 Service Pack 3. Para pasar por alto este problema, utilice la forma larga del código: {Insert}.
Aclaración de la instrucción Type
La última frase del tema de la Ayuda "Type (instrucción)" afirma: "La configuración de la instrucción Option Base determina el límite inferior de las matrices." Esta frase no es correcta y debería pasarse por alto. El valor de Option Base no tiene efecto en matrices de tipos definidos por el usuario.
El tipo de datos Decimal se almacena como un entero con signo
El tema de la Ayuda "Decimal Data (Tipo)" afirma que las variables de tipo Decimal se almacenan como enteros sin signo, lo cual es incorrecto. Las variables Decimal se almacenan como enteros con signo.
La función DateSerial en Windows 98 y Windows NT 5
En el caso del argumento year, los años de dos dígitos se interpretan basándose en valores del equipo definidos por el usuario (el intervalo predeterminado es 1930-2029). Los valores de los intervalos se definen en la Configuración regional del Panel de control de Microsoft Windows.
Tecla de método abreviado "Buscar siguiente" de la ventana de código
El tema de la Ayuda "Ventana Código (Métodos abreviados del teclado)" afirma incorrectamente que la tecla de método abreviado Buscar siguiente es Mayúsculas-F4. La tecla de método abreviado correcta para "Buscar siguiente" es F3.
Sintaxis del método Add (Carpetas)
En el tema de la Ayuda "Add (Método), (carpetas)", la sintaxis mostrada es incorrecta. La sintaxis correcta es:objeto.Add nombreCarpeta
Problemas con los ejemplos
Ubicación de los archivos de ejemplo
Si elige incluir los ejemplos de Visual Basic en su instalación de MSDN, éstos se instalarán en el directorio:
C:\Archivos de programa\Microsoft Visual Studio\MSDN98\98VS\1033\Samples\VB98.Si elige no incluir los ejemplos de Visual Basic en su instalación de MSDN, podrá encontrarlos en el CD de MSDN en:
D:\Samples\Vb98Nota: Las letras de unidades indicadas arriba pueden variar de un sistema a otro.
Ejemplos de Visual Basic: los ejemplos Biblio y Mouse se omiten
El programa de ejemplo Biblio que se encuentra en la tabla de contenido de la documentación de Visual Basic ya no se incluye con el producto Visual Basic. El ejemplo Mouse, mencionado en "Responder a los eventos de Mouse y teclado" tampoco se incluye con el producto.
Ejemplos de Visual Basic: descripción de ChrtSamp
ChrtSamp es un nuevo programa de ejemplo incluido con Visual Basic que muestra las características principales del control MSChart. Si instaló los ejemplos de Visual Basic, puede encontrarlo en la ubicación de disco siguiente:
\\Archivos de programa\Microsoft Visual Studio\Msdn98\98vs\1033\Samples\Vb98\ChrtSamp
Si no instaló los ejemplos de Visual Basic en su disco, puede encontrar los ejemplos en el CD de MSDN en la ubicación siguiente:
Samples\Vb98\ChrtSamp
El ejemplo utiliza una hoja de cálculo de Excel para proporcionar los datos para un gráfico. Permite también mostrar diagramas de series múltiples al hacer clic en varios botones. Finalmente, el ejemplo muestra las características 3D del control al establecer la propiedad ChartType a un valor apropiado.
Archivo
Descripción
Chrtsamp.vbp
Archivo de proyecto del ejemplo.
Frmchart.frm
Formulario principal del ejemplo.
Frmchart.frx
Datos binarios del formulario.
Gas.xls
Hoja de cálculo de Excel que contiene los datos.
Modchart.bas
Módulo de código que contiene las funciones y procedimientos del ejemplo.
Para ejecutarlo
Presione F5 para ejecutar el ejemplo. Tras cargar todos los datos, haga clic en "Tipo de gráfico" para cambiar el tipo. Para ver las características en tres dimensiones del ejemplo, haga clic en el cuadro combinado Tipo de gráfico y seleccione un tipo de gráfico a 3-D, como 3dArea. Mantenga presionada la tecla CTRL, haga clic con el botón secundario del mouse y utilice el cursor para cambiar la presentación del diagrama.
Ejemplos de Visual Basic: ejemplo CtlsAdd: es necesario habilitar controls.mdb en el disco, en modo lectura y escritura
Si intenta ejecutar los ejemplos CtlsAdd desde el CD de MSDN, se producirá un error al intentar utilizar la base de datos controls.mdb que se encuentra en el CD. El ejemplo CtlCfg.vbp utiliza una base de datos de Access (controls.mdb) con el fin de almacenar información de clave de licencia acerca de los controles, por lo que es necesario instalar la base de datos en un disco duro. Copie el archivo controls.mdb al disco y habilítelo para escritura.
Ejemplo DHSHOWME.VBP: puede ser necesario establecer de nuevo la propiedad SourceFile para que este ejemplo funcione correctamente en modo de diseño
Si sus ejemplos de diseñador de páginas aparecen en blanco cuando los abre en modo de diseño, vuelva a establecer la Propiedad SourceFile con el fin de que refleje la ubicación en la que instaló los archivos HTML del proyecto en su equipo. Debe restaurar esta propiedad para cada diseñador en el proyecto. Su ejemplo debería a continuación funcionar correctamente.
Para establecer de nuevo la propiedad SourceFile correspondiente a un diseñador, escriba una ruta directamente en la propiedad SourceFile en la ventana Propiedades o bien seleccione el icono Propiedades de proyecto en el cuadro de herramientas, haga clic en Guardar como archivo externo, a continuación haga clic en Abrir y vaya hasta el archivo .htm adecuado.
Ejemplo PROPBAG.VBP: posible error al cargar el módulo correspondiente a este ejemplo
Propbag.vbp hace referencia a un módulo (Module1.bas) que se encuentra ubicado en el directorio de instalación predeterminado de los ejemplos de MSDN. Si desplaza este ejemplo a otro directorio, al abrir el proyecto el programa mostrará un error que indicará que la ruta del módulo no es correcta. Para corregir esto, cargue el proyecto sin el módulo y a continuación vuelva a agregar el módulo desde el directorio en el que instaló sus ejemplos.
Ejecución de la aplicación de ejemplo IObjSafe
Debido a algunos cambios de última hora, la aplicación de ejemplo IObjSafe (IObjSafe.vbp) no se ejecutará correctamente a menos que realice primero las modificaciones siguientes:
- Cargue el archivo de proyecto IObjSafe.vbp en el entorno de desarrollo.
- Elija Propiedades de ucObjSafety en el menú Proyecto. En la ficha Depurar, elimine la ruta y el nombre de archivo del cuadro de texto Iniciar programa.
- Escriba la ruta y el nombre del archivo IObjSafe.htm actual en el cuadro de texto Iniciar explorador con dirección URL. La ruta actual puede variar en función de su instalación.
- Elija Opciones en el menú Herramientas. En la ficha General, active la opción Interrupción en errores no controlados.
La aplicación debería ahora ejecutarse apropiadamente.
Existe una versión actualizada de la aplicación IObjSafe disponible en la red en la página de ejemplos de Microsoft Visual Basic.
Nombres de rutas de acceso
Al ejecutar algunos de los ejemplos, deberá modificar algunas de las rutas de éstos a no ser que instale VB en el directorio predeterminado.
A continuación se muestran dichos ejemplos:
Ejemplo MSFlexGrid
Este ejemplo producirá un cuadro de diálogo en el que se le pedirá que seleccione la ubicación de la base de datos Biblio.mdb. Esta base de datos está ubicada bajo el directorio donde haya instalado VB.Ejemplo ListCombo
Este ejemplo producirá un cuadro de diálogo en el que se le pedirá que seleccione la ubicación de la base de datos Biblio.mdb. Esta base de datos está ubicada bajo el directorio donde haya instalado VB.Ejemplo DataReport
Se deberá modificar la ruta de acceso a la base de datos Nwind a no ser que se seleccione la carpeta de instalación predeterminada.Para ello, abra deNwmind DataEnvironment, haga clic con el botón secundario del mouse en la conexión Nwind, elija Propiedades y modifique la ruta en la ficha Conexión.
Ejemplo AxData
Se deberá modificar la ruta de acceso a la base de datos Nwind a no ser que se seleccione la carpeta de instalación predeterminada.Para ello, abra Form1 en tiempo de diseño y modifique el valor de la propiedad de la cadena de conexión del control Data (Doneees).
Ejemplo ActxDoc
Si no se puede encontrar el segundo documento, será necesario modificar la ruta de acceso. Para ello, abra el código del documento FirstDoc en modo de diseño. En Private Sub cmdGoNext modifique la ruta de acceso en la línea curdir = "C:\Archivos de programa\Microsoft Visual Studio\VB98"Conseguir versiones actualizadas de las aplicaciones de ejemplo
Existen versiones actualizadas de muchas de las aplicaciones de ejemplo de Visual Basic así como ejemplos adicionales no incluidos en el CD disponibles en la red en la página de ejemplos de Microsoft Visual Basic.
Problemas con los Asistentes
Asistente de empaquetado y distribución: recogida automática de archivos del directorio Redist
Una característica nueva del Asistente de empaquetado y distribución es su capacidad para recoger archivos desde la carpeta directorio Redist. Éste sería un ejemplo de los pasos que permiten utilizar esta característica:
- Ya dispone de una aplicación lista para su empaquetado.
- La aplicación depende de un determinado archivo de sistema "MySysFile.dll" que, hasta hace poco, era un archivo independiente. Pero ahora, una reciente actualización del sistema ha hecho depender ese archivo de otros archivos para poder operar apropiadamente.
- Sin embargo, se suministra también una versión independiente del archivo de sistema.
- Para simplificar las instalaciones, coloque dicha versión independiente dentro de la carpeta Redist.
- Al crear su paquete de distribución, explore hasta el archivo de sistema con el fin de informar al asistente de que dicho archivo debería incluirse.
- En lugar de recoger el archivo de sistema (que depende de otros archivos), el Asistente de empaquetado y distribución recogerá la versión independiente que se encuentra en el directorio Redist.
De modo predeterminado, no se colocan archivos en la carpeta Redist.
El Asistente de empaquetado y distribución tiene una sección [Do Not Redist]
Se agregó una sección nueva al archivo VB6Dep.ini de empaquetado y distribución: [Do Not Redist]
La nueva sección enumera dos tipos de archivos:
- Archivos que no son necesarios en tiempo de ejecución. Por ejemplo, los diseñadores ActiveX necesitan a menudo dos referencias a un archivo, una para tiempo de diseño y la otra para tiempo de ejecución. Dado que la referencia de tiempo de diseño no es necesaria, se enumera en la sección y no se incluye en el paquete.
- Archivos que no pueden ser distribuidos mediante el Asistente de empaquetado y distribución. Algunos archivos dependientes no son instalados por Visual Basic: otro componente se encarga de ello. Por ejemplo, Internet Explorer 4.x instala los archivos Shdocvw.dll y Mshtml.dll.
Asistente de empaquetado y distribución: en modo silencioso, la ventana Notificación puede no ser la primera en el orden Z
Con Visual Basic, es posible ejecutar el Asistente de empaquetado y distribución en modo silencioso desde la línea de comandos. Al proceder de este modo, puede también establecer una ruta con el fin de registrar la salida del asistente(/l ). Con el valor de la ruta, el asistente creará un registro de eventos. Si no utiliza el argumento, el asistente mostrará en lugar de ello un cuadro de diálogo para indicarle que el asistente completó la operación. Sin embargo, la ventana no está siempre a la vista porque puede encontrarse bajo otras ventanas. Con el fin de mostrarla, puede ser necesario cerrar o minimizar todas las otras ventanas.
Para obtener más información, efectúe una búsqueda en pantalla acerca de "ejecutarlo como independiente" en Conceptos de Visual Basic en la documentación de Visual Studio 6.0 de la biblioteca MSDN.
Asistente de empaquetado y distribución: se agregó un argumento al modo de la línea de comandos para especificar una ruta ejecutable
Se agregó un argumento al modo de la línea de comandos del Asistente de empaquetado y distribución. El argumento se muestra en la tabla siguiente:
Argumento
Descripción
/e ruta
Utilice este argumento para establecer la ruta del archivo ejecutable del proyecto si difiere de la ruta del proyecto.
Observaciones
El argumento permite utilizar el modo de línea de comandos en un entorno de desarrollo múltiple en el que un equipo está especializado en la compilación y creación del paquete.
Para obtener más información, efectúe una búsqueda en pantalla, tras seleccionar Asistente de empaquetado y distribución, en ejecutarlo como independiente en la documentación de Visual Studio 6.0 de la biblioteca MSDN.
Asistente de empaquetado y distribución: agregar manualmente archivos de licencia de control de usuario
Cuando crea un paquete para un control de usuario que necesita una clave de licencia, el archivo de licencia (.VBL) no se incluye automáticamente; por lo cual debe agregar el archivo manualmente.
Cuando se encuentre en el cuadro de diálogo llamado "Asistente de empaquetado y distribución - Archivos incluidos", haga clic en el botón Agregar y busque el archivo .VBL apropiado.
Asistente de empaquetado y distribución: etapas en el proceso de distribución en Web
Cuando envía un paquete de Internet a un servidor Web mediante el Asistente de empaquetado y distribución, el asistente utiliza una tecnología conocida como WebPost con el fin de copiar su paquete en el servidor y procesarlo apropiadamente. Éstos son los pasos seguidos por WebPost cuando procesa su archivo .CAB:
- Descomprime el archivo .CAB dentro de un directorio temporal.
- Ubica el archivo .INF correspondiente al archivo .CAB.
- En función del contenido del archivo .INF, el proceso WebPost instala los archivos de aplicación (según la sección RInstallApplicationFiles del archivo .INF), instala los archivos de sistema (según la sección RIinstallSystemFiles) e instala los archivos compartidos (según la sección RInstallSharedFiles). Durante el proceso, registra todos los archivos necesarios.
NotaLa sección DefaultInstall del archivo .INF no se ejecuta, porque las instrucciones que contiene requieren a menudo la intervención del usuario. El proceso WebPost tampoco crea un directorio virtual para la aplicación si fuera necesario; los directorios se deben configurar por adelantado.Asistente de empaquetado y distribución: sugerencias acerca de la distribución en Web con el protocolo HTTP o FTP
- Si al intentar distribuir el archivo .CAB en un servidor Web, éste se copia en el servidor pero no se desempaqueta, asegúrese de que incluyó el archivo .CAB en la pantalla Elementos para distribuir y de que utilizó el protocolo Post de HTTP en la pantalla Sitio de publicación en Web. Además, debe activar la casilla de verificación Desempaquetar e instalar .cab de servidor, en la pantalla del Sitio de publicación en Web. Si no lo hizo, intente distribuir de nuevo su paquete con dicha opción activada.
NotaCuando se ejecuta en IIS 4.0, Posting Acceptor 2.0 permite desempaquetar archivos .CAB.
- Si recibe un error que indica que el servidor Web elegido no admite el proveedor de servicio seleccionado, existen varias cosas que puede hacer con el fin de corregir este problema:
- Si está utilizando el protocolo Post de HTTP, asegúrese de que Posting Acceptor está instalado en su servidor de Web. Si ejecuta IIS 4.0, instale Posting Acceptor 2.0. Si está ejecutando IIS 3.0, instale Posting Acceptor 1.0. Posting Acceptor 1.0 no permite desempaquetar archivos .CAB.
- Asegúrese de que su dirección URL es correcta. Si utiliza Post de HTTP, asegúrese de que su dirección URL empieza con http://. Si utiliza FTP, asegúrese de que su dirección URL empieza con ftp://.
- Si realiza una transferencia a un servidor donde se instaló Posting Acceptor 1.0, no puede activar la opción de desempaquetar e instalar sus archivos "cabinet" cuando distribuye su paquete mediante el asistente. Si recibe el error C0042115 que indica que la cadena de consulta INSTALL no es válida, compruebe la configuración de su servidor con el fin de determinar la versión instalada de Posting Acceptor. Si se trata de la versión 1.x, distribuya de nuevo su archivo cab, tras asegurarse de desactivar la opción Desempaquetar e instalar .cab de servidor.
- Si necesita usar el protocolo FTP para publicar en una dirección URL que empieza con http://, debería poder resolver este error agregando la entrada siguiente al final del archivo postinfo.asp de su servidor Web, ubicado normalmente en el directorio de secuencias de comandos en el servidor Web:
<!--Esta entrada es para el protocolo FTP -->
[{02B5E1D1-8B7C-11D0-AD45-00AA00A219AA}]
ServerName="<%= Request.ServerVariables("SERVER_NAME") %>"
- Si obtiene un error que indica que alguno de los archivos mencionados en el INF están ocupados y es necesario volver a iniciar, cambie de "No" a Yes la entrada ComponentPermitReboot en la clave del registro HKEY_LOCAL_MACHINE\Software\Microsoft\Publishing\RemoteInstaller. Esto permite proceder a desempaquetar e instalar el archivo .CAB cuando los archivos están ocupados, aunque es posible que sea necesario volver a iniciar manualmente el servidor con el fin de terminar adecuadamente la instalación.
- Si utiliza el protocolo Post de HTTP y un error le indica que no dispone de permiso de acceso al servidor Web, abra el Administrador de Servicios Internet en el equipo servidor, abra el nodo correspondiente a su sitio Web predeterminado (Console Root \ Internet Information Server \ machinename \ Default Web Site), elija Propiedades, seleccione la ficha Directorio particular y active la casilla de verificación Escritura.
- Si sus archivos son de sólo lectura, cuando los exponga obtendrá el error C0042116 que le anunciará la interrupción del procesamiento. Cambie los atributos de su archivo para continuar.
- Tenga presente que si expone un archivo en un directorio donde ya existe el mismo archivo, se sobrescribirá el archivo en el servidor y no se mostrará ningún mensaje de advertencia.
- Si utiliza el protocolo FTP y un error le indica que se denegó el acceso, abra el Administrador de Servicios Internet en el equipo servidor, abra el nodo correspondiente a su sitio FTP predeterminado (Console Root \ Internet Information Server \ machinename \ Default FTP Site), elija Propiedades, seleccione la ficha Directorio particular y active la casilla de verificación Escritura.
- Si utiliza el protocolo FTP y obtiene otros errores además del descrito en la viñeta anterior, asegúrese de que configuró apropiadamente su servicio FTP en el servidor Web. Para ello, inicie Microsoft Management Console (MMC) y siga los pasos siguientes:
- Haga clic con el botón secundario del mouse en Sitio FTP predeterminado y elija Directorio virtual nuevo.
- Escriba el alias necesario para obtener acceso al directorio virtual y a continuación haga clic en Siguiente.
- Escriba la ruta física del directorio al que asigna el directorio virtual (por ejemplo, c:\inetpub\ftproot) y a continuación haga clic en Siguiente.
- Active los permisos de acceso apropiados, asegúrese de que permitió el acceso para escritura para que sus distribuciones puedan desarrollarse sin errores y a continuación haga clic en Finalizar.
- Haga clic con el botón secundario del mouse en Sitio FTP predeterminado y elija Detener.
- Haga clic con el botón secundario del mouse en Sitio FTP predeterminado y elija Iniciar.
Cuando distribuya en el servidor FTP mediante el Asistente de empaquetado y distribución, utilice el sitio FTP://nombreServidor/alias donde alias es el alias que asignó en el paso 2. Utilice el nombre de usuario "anonymous" y la contraseña "yo@algúnLugar" para un inicio de sesión en modo anónimo.Asistente de empaquetado y distribución: elementos del menú Inicio: opción Ejecutar no admitida
Cuando crea un paquete para distribución, puede también crear un elemento en el menú Inicio. Aunque así se menciona en el tema de ayuda correspondiente al cuadro de diálogo, la opción Ejecutar no está permitida.
Configuraciones del sistema para Posting Acceptor de WebPost
Cuando distribuye sus paquetes en un servidor Web, el Asistente de empaquetado y distribución utiliza una tecnología conocida como WebPost con el fin de copiar sus archivos a la ubicación deseada. WebPost consta de dos componentes principales:
- El Asistente de empaquetado y distribución, que envía su contenido a un sitio calificado.
- Posting Acceptor, ubicado en el servidor Web, que habilita la exposición del contenido en un servidor IIS.
Existen múltiples versiones disponibles de Posting Acceptor. Asegúrese de instalar la versión correcta en su servidor Web en función de la configuración de su equipo. La tabla siguiente enumera las configuraciones apropiadas:
Utilice
Si ejecuta
Observaciones
Posting Acceptor 2.0
Windows NT 4.0 con SP3
IIS 4.0Posting Acceptor 2.0 admite tanto exponer como desempaquetar archivos "cabinet" (.CAB) en el servidor.
Posting Acceptor 1.0
Windows NT 4.0 con SP3
IIS 3.0No puede desempaquetar archivos .CAB con esta versión de Posting Acceptor. Utilícelo tan sólo para exponer contenido. Mueva sus archivos al servidor y, a continuación, registre manualmente los archivos necesarios que deberían registrarse en el procesamiento del .CAB.
Nota: Posting Acceptor no funciona en plataformas donde se utiliza Personal Web Server o Servicios de Web personales. Debe utilizar IIS.
Puede instalar Posting Acceptor 2.0 desde la carpeta Deploy del CD número 2 de instalación de Visual Studio. Posting Acceptor 1.0 puede instalarse desde el sitio Web de información de Microsoft Posting Acceptor. Si desea instalar Posting Acceptor 2.0 en un equipo que ya dispone del Option Pack de Windows NT, debería en primer lugar comprobar si ya instaló la versión 1.0 de Posting Acceptor. Si es el caso, elimínelo antes de instalar la versión 2.0. Para determinar si se instaló la versión 1.0, seleccione NT Option Pack en el subprograma Agregar o quitar programas del Panel de control. Haga clic en Agregar o quitar y busque Posting Acceptor 1.0 entre los componentes enumerados. Lo encontrará bajo Microsoft Site Server. Si se encuentra instalado, elimínelo. Puede a continuación instalar la versión 2.0: para ello ejecute PASetup.exe.
Asistente de empaquetado y distribución: modifique el archivo Setup.lst si vuelve a generar archivos .CAB a partir de un archivo por lotes
Tras crear un paquete de instalación estándar mediante el Asistente de empaquetado y distribución, vuelva a crear manualmente los archivos de instalación (Setup.exe, Setup.lst y todos los achivos .CAB): para ello, ejecute el archivo por lotes ubicado en la carpeta Support. Esto le permite personalizar manualmente el paquete o volver a crear un paquete sin tener que ejecutar de nuevo el asistente. La ejecución del archivo por lotes copiará setup.exe y setup.lst de la carpeta Support a la carpeta Package y generará el archivo (o los archivos) .CAB en la carpeta Package. Sin embargo, una vez terminado el proceso por lotes, setup.lst no sabrá qué número de archivos .CAB se generaron. A menos que resuelva este problema, el programa de instalación fallará.
Para resolver esta situación, siga uno de los procedimientos siguientes:
- Antes de ejecutar el archivo por lotes, elimine todos los archivos .CAB de la carpeta Package.
- Después de ejecutar el archivo por lotes, cuente el número de archivos .CAB que éste generó en la operación.
- Abra con un editor de textos el archivo Setup.lst en la carpeta Package. Nota: existen dos archivos Setup.lst. El primero se encuentra en la carpeta Support; el segundo, fuera de la carpeta Support, en la carpeta Package donde se crearon los archivos .CAB. Asegúrese de abrir el archivo Setup.lst en la carpeta Package.
- En el editor de texto, busque las líneas siguientes (que se encuentran al principio del archivo):
[Bootstrap] SetupTitle=Install SetupText=Copying Files, please stand by. CabFile=Projec1.CAB Spawn=Setup1.exe Uninstal=st6unst.exe TmpDir=msftqws.pdw
Después de la última línea (TmpDir=msftqws.pdw), escriba la línea siguiente: NCabs=
dónde N es igual al número de archivos cab generados.El archivo Setup.lst debería ahora estar actualizado y la instalación no provocará un error.
Asistente de empaquetado y distribución: error 80042114
Si está creando un paquete para su distribución en Internet y obtiene el error siguiente:
Error inesperado 80042114: el servidor Web seleccionado no indica que admita el proveedor de servicio seleccionado. ¿Desea continuar de todos modos?Dicho error ocurre porque especificó que su paquete debía exponerse para su publicación en un sitio FTP mediante una dirección URL de HTTP. Si está seguro de que dispone de privilegios de acceso al servidor Web, haga clic en "Sí": la distribución continuará.
Para evitar este error en el futuro, cuando vaya a crear un paquete de distribución en el mismo servidor, especifique el sitio y el protocolo. Al proceder de este modo, se mostrará el cuadro de diálogo siguiente:La dirección URL especificada y el método de publicación se pueden guardar en el registro como un sitio de publicación en Web. Esto comprobará que la dirección URL y el método de publicación son válidos y ahorrará tiempo en futuras distribuciones en este sitio. ¿Desea almacenar esta información como un sitio de publicación en Web?Si elige "Sí", se guardará la información del sitio y no volverá a ver el error 80042114.
Asistente de empaquetado y distribución: uso de Mdac_typ.Cab y Mdac20.Cab para distribuir componentes de acceso a datos
Cuando su Paquete de Internet incluye cualquiera de los cuatro archivos siguientes, el asistente establecerá de modo predeterminado que esos archivos se descarguen desde el sitio http://activex.microsoft.com/controls/vb6/mdac_typ.cab.
MSDAOSP.dll MSADO15.dll MSADCF.dll ODBC32.dllDe modo similar, el asistente determinará de manera predeterminada la descarga de los archivos siguientes del sitio http://activex.microsoft.com/controls/vb6/mdac20.cab:
MSADOR15.dll MSADCO.dllEn ambos casos, estos valores predeterminados aparecen como la opción "Descargar desde el sitio Web de Microsoft" en la pantalla Origen de archivo. Estos archivos .CAB (mdac_typ.cab y mdac20.cab) realizan un procesamiento especial que no debería intentarse manualmente. Para asegurarse de que se aplica el procesamiento adecuado, su archivo .CAB de Internet no debería incluir sino hacer referencia a dichos archivos .CAB. Por consiguiente, conviene no activar nunca la opción "Incluir en este archivo contenedor" para ninguno de estos archivos. Además, si elige la opción "Descargar de sitio Web alternativo", conviene especificar con precaución qué archivos son copias de archivos .CAB con el fin de asegurarse de que se utiliza el procesamiento apropiado.
No cambie los valores predeterminados de estos archivos.
Asistente de empaquetado y distribución: agregue manualmente los archivos .ASP y .HTM para las aplicaciones IIS cuando utilice la instalación estándar
Si utiliza la instalación estándar del Asistente de empaquetado y distribución para distribuir una aplicación para IIS, debe incluir manualmente cualquier archivo .asp o .htm en el paquete. Agregue los archivos mediante el cuadro de diálogo Incluir archivos.
Asistente de empaquetado y distribución: formatos de fecha y hora incorrectos
En ciertas situaciones, el Asistente de empaquetado y distribución escribirá incorrectamente la información de fecha y hora en el archivo Setup.lst. Cuando esto se produce, la instalación fallará porque las fechas estarán escritas con un formato que el programa setup.exe no puede leer. El problema ocurre cuando crea un paquete de ditribución mediante la versión US de Visual Basic en:
- Un equipo que utiliza la versión alemana de Windows (Nota: la versión alemana de Visual Basic funcionará correctamente).
- Cualquier equipo donde el separador de fecha no es una barra diagonal ("/") ni un guión ("-").
Para corregir los formatos incorrectos:
- En el menú Inicio, abra el Panel de control.
- Haga clic en el icono Configuración regional.
- En la ficha Fecha, cambie el separador de fecha por "/".
- En la ficha Hora, cambie el separador de hora por ":".
- Ejecute el Asistente de empaquetado y distribución.
- Restablezca los valores de fecha y hora.
Asistente de empaquetado y distribución: no se puede ejecutar Setup.exe en la primera versión de Windows 95
No todos los paquetes de instalación generados con el asistente podrán iniciarse en ciertas instalaciones de Windows 95, debido a un error de compatibilidad con una API en la versión original de Oleaut32.dll. Este error no se producirá en la versión 2 del sistema operativo Windows 95 ni en cualquier versión de Windows NT 4.0 y posterior, y no se producirá tampoco si se instaló Microsoft Office 97 o Internet Explorer 3.0 ó 4.0. Cualquier instalación de una aplicación de Visual Basic 5.0 resolverá también la situación. Otro modo de resolver este error es sobrescribir primero la antigua versión de Oleaut32.dll con la última versión. Asegúrese de cerrar todas las aplicaciones antes de intentar actualizar manualmente Oleaut32.dll.
Asistente de empaquetado y distribución: empaquetado de documentos ActiveX
El Asistente de empaquetado y distribución de Visual Basic 6.0 puede escribir información CODEBASE= y VERSION= directamente incrustada en el archivo .vbd de su proyecto de documento ActiveX. Esto elimina la necesidad de utilizar un archivo .htm extra con el fin de iniciar documentos ActiveX. La información incrustada permite a Internet Explorer leer el nombre del archivo .CAB correspondiente al código y versión de su documento ActiveX desde el archivo .vbd y llevar a cabo la instalación. Ahora es posible explorar directamente hasta el archivo .VBD: el código de su documento de usuario se descargará si es necesario.
La misma funcionalidad está disponible para la instalación de Visual Basic 5.0 mediante el programa SetCodeBase ubicado en el área de usuarios registrados de Visual Basic.
A continuación presentamos algunos problemas de las instalaciones de documentos de usuario con el Asistente de empaquetado y distribución de Visual Basic 6.0:
- Internet Explorer 3.x, 4.0 y 4.01 no pueden leer la información incrustada en el archivo VBD. El asistente genera también un archivo .htm al estilo antiguo (VB5). Es posible usar este archivo .htm para iniciar documentos ActiveX. Sin embargo, debe primero modificar el archivo .htm, ya que la mayor parte del código está entre comentarios. Después de eliminar los comentarios así como una etiqueta <A> adicional (<a href=xxxx.VBD>xxxxx.VBD</a>) al principio, el archivo se quedará con una única etiqueta OBJECT con el CLSID de su documento de usuario y con el código de secuencias de comandos correspondiente al evento Window_OnLoad.
- Internet Explorer 4.01 con Service Pack 1 y posterior leerá esta información correctamente desde el archivo .vbd.
Problemas con los mensajes de error
No existen temas de ayuda correspondientes a los mensajes de error siguientes
No existen actualmente temas de Ayuda para los mensajes de error siguientes:
"El módulo de objeto necesita implementar '<nombre>' para la interfaz '<nombreClase>'." Una interfaz es una colección de prototipos de procedimientos no implementados. Este error ocurre cuando especifica una interfaz en una instrucción Implements pero omite agregar código para todos los métodos de la interfaz.
Debe escribir código para todos los procedimientos especificados en la interfaz. Es suficiente un procedimiento vacío que contenga tan sólo un comentario.
Para obtener información adicional, seleccione el elemento en cuestión y presione F1.
"No se pueden usar tipos Private Enum y Enum definidos en módulos estándar o clases privadas en módulos públicos de objeto como parámetros o tipos de retorno de procedimientos públicos, como miembros públicos de datos o como campos de tipos públicos definidos por el usuario". Este error ocurre cuando intenta utilizar un tipo Enum (o un tipo Enum privado) como:
- un parámetro para un módulo de objeto público
- un tipo de retorno para un procedimiento público
- un miembro de datos públicos
- campo de tipos públicos definidos por el usuario
Evite el uso de tipos Enum (o un tipo Enum privado) en estas circunstancias.
"No se puede ejecutar ReDim o Erase, ni asignar a un valor Variant que contiene una matriz cuyo elemento es el objeto With". Este error ocurre cuando intenta volver a dimensionar con ReDim, eliminar con Erase o asignar una variable a un tipo Variant cuyo elemento es un objeto With. Por ejemplo, el código siguiente producirá este error:
Type Test Name as Integer End Type Sub Main() Dim c(0) As Test Dim e e = c With e(0) ReDim e(1) End With End Sub
Problemas con el diseñador de clases de Web
Clases de Web: "Me." no admitido
No puede utilizar la referencia "Me" en el código de su clase de Web para hacer referencia al objeto WebClass. Por ejemplo, la documentación muestra frecuentemente que puede escribir código como "Me.URLData = valor". Esto no está admitido. En lugar de Me, debe utilizar la instrucción "Webclass". Por ejemplo, en lugar de Me.URLData, debería utilizar Webclass.URLData.
Clases de Web: una sintaxis HTML no válida puede causar un error no especificado
Si alguna de las plantillas que agrega a su clase de Web contiene código HTML mal escrito, obtendrá algunas veces un mensaje de error al cargar la plantilla. El mensaje tan sólo afirma que se produjo un error no especificado. Por ejemplo, en páginas antiguas podían existir dos etiquetas BODY, una para especificar un GIF para el fondo de pantalla y otra para especificar el color. Puede también tener errores de etiquetas de apertura y cierre no equilibradas, anidaciones no válidas u otros problemas de sintaxis. Si obtiene este mensaje al cargar una plantilla, compruebe cuidadosamente su código HTML o bien ejecute un programa de comprobación de sintaxis de código HTM con su archivo y a continuación vuelva a cargar la plantilla.
Clases de Web: evite el uso de variables globales o estáticas en una clase de Web
Se produce una asignación de variables globales por cada subproceso en un entorno multiproceso. Para obtener más información,efectúe una búsqueda en pantalla con la opción Buscar sólo títulos activada acerca de "Escalabilidad y subprocesos múltiples" en la documentación de Visual Studio 6.0 de la biblioteca MSDN.
Clases de Web: algunos cambios externos al código HTML no se detectan automáticamente
Cuando trabaja con una plantilla de código HTML en el diseñador de clases de Web, Visual Basic suele detectar cualquier cambio efectuado en el archivo HTML fuera de Visual Basic (por ejemplo, en un editor de código HTML externo) cuando vuelve al diseñador. En esos casos el programa le pide que vuelva a cargar el archivo modificado.
En algunos casos, los cambios externos no son detectados. Este problema ocurre con más frecuencia cuando establece el enfoque en una ventana de Visual Basic que no es la del diseñador de clases de Web antes de cambiar a un editor externo. Hasta su retorno a Visual Basic, el mensaje de actualización no se muestra. La consecuencia de esto es que puede llegar a sobrescribir los cambios externos al guardar el proyecto, a menos que actualice el archivo por iniciativa propia.
Nota Puede también encontrarse con esta situación si modifica la plantilla mientras ejecuta su proyecto.En los casos en los que modifica el código HTML y el programa no le indica que lo actualice, efectúe esta actualización manualmente: para ello seleccione Actualizar plantilla HTML en el menú contextual de la plantilla.
Nota: Cuando vaya a explorar hasta su editor externo, lo mejor es utilizar el botón Modificar plantilla HTML de la barra de herramientas o el comando del menú contextual. Si utiliza la barra de tareas o la combinación Alt-Tab para explorar hasta un editor, asegúrese de guardar su proyecto antes de abandonar Visual Basic o corre el riego de perder los cambios realizados en el diseñador.
Clases de Web: las configuraciones del archivo de la consola de administración de IIS no están permitidas para las plantillas
La consola de administración de IIS permite al administrador del servidor especificar propiedades para los archivos disponibles en el servidor de IIS. Estas propiedades incluyen encabezados de HTTP, seguridad de archivos y errores personalizados. Estas propiedades no se establecerán en un archivo de plantilla de clase de Web si se envía dicho archivo al cliente mediante el ejecutable de la clase de Web.
Clases de Web: ejecución desatendida
Un proyecto que contiene una clase de Web debe tener activada la opción de Ejecución desatendida en el cuadro de diálogo Propiedades de proyecto. Establecer esta propiedad ofrece las ventajas siguientes:
- Permite ejecutar la clase de Web como un objeto con modelo independiente. Esto permite que la clase de Web pueda atender a una petición HTTP en el subproceso que recibió la petición en lugar de procesar todas la peticiones en un único subproceso.
Nota Debe establecer la propiedad ThreadingModel en el cuadro de diálogo Propiedades de proyecto con el valor Subprocesos independientes, con el fin de ejecutar un objeto con modelo independiente.
- Permite que el archivo DLL ejecutable de Visual Basic registre todos los errores de tiempo de ejecución en el registro de eventos en lugar de presentar los errores al usuario. La presentación del mensaje en un diálogo podría detener indefinidamente el subproceso de IIS.
- Al establecer esta propiedad, cualquier llamada a la función MsgBox de Visual Basic MsgBox registrará su mensaje en el registro de eventos en lugar de mostrarse dentro de un cuadro. La presentación del mensaje en un diálogo podría detener indefinidamente el subproceso de IIS.
Clases de Web: Conservado en memoria
En los proyectos de Visual Basic estándar, los proyectos se descargan de los subprocesos o procesos tan pronto como dejan de utilizarse. En un proyecto de clase de Web, este modelo puede provocar problemas de rendimiento porque el servidor debe crear un objeto, invocar un método dentro de éste y destruirlo. Es posible optimizar sus clases de Web: para ello establezca una propiedad del proyecto llamada Conservado en memoria. La propiedad Conservado en memoria impide la descarga del proyecto hasta que no termine el subproceso o el proceso en el se ejecuta.
Clases de Web: resumen de diferencias entre la versión para depuración y la versión compilada
Visual Basic ofrece la posibilidad de depurar componentes que se ejecutan bajo un servicio de Windows NT. Una de las aplicaciones más comunes de esta característica es la depuración de una aplicación para IIS. Visual Basic consigue esto al ejecutar el componente en el entorno integrado de desarrollo (IDE) de Visual Basic. Cuando se ejecuta el componente, IIS crea un objeto proxy proporcionado por Visual Basic que a su vez crea el objeto real ejecutado dentro del entorno integrado de desarrollo (IDE) de Visual Basic. IIS se comunica a continuación con el objeto mediante DCOM.
Este comportamiento del proyecto en modo depuración difiere mucho de su modo de ejecución cuando se trata de un archivo DLL compilado. Algunos comportamientos presentes en el modo de depuración difieren cuando ejecuta la versión compilada del proyecto. Por esta razón, debe tener presente cuál será el comportamiento del proyecto compilado cuando genera su clase de Web.
Éstas son las principales áreas en las que debe afinar su aplicación para que el comportamiento mostrado por el Web tenga la apariencia de una aplicación compilada:
- Utilice sólo un DNS de sistema ya que otros DNS no funcionarán fuera del modo de depuración.
- No utilice en su proyecto una base de datos de Access en un equipo remoto. Aunque esto funcionará en modo de depuración, no podrá utilizar la base de datos en la aplicación compilada.
- No permita que la clase de Web se agregue a sí misma o agregue otros componentes de Visual Basic al objeto Application de las páginas Active Server. Si intenta hacer esto, se generará un error al ejecutar la aplicación compilada.
- Comprenda cuál es el contexto de seguridad de la aplicación compilada. Consulte la sección "Clases de Web: artículos de interés" a continuación, para obtener ayuda acerca de la seguridad.
- Tenga presente que a su clase de Web compilada pueden tener acceso subprocesos múltiples, en lugar de un mismo subproceso como es el caso en modo de depuración. Las variables estáticas y globales no se mantienen de un subproceso a otro. Para obtener más información efectúe una búsqueda en pantalla con la opción Buscar sólo títulos activada acerca de "Escalabilidad y subprocesos múltiples" en la documentación de Visual Studio 6.0 de la biblioteca MSDN.
- Comprenda que aunque podrá ver mensajes indicadores en modo de depuración, una vez compilada la clase de Web escribirá todos los errores en el registro de eventos de NT o en un archivo de registro creado en el directorio Windows. No aparecen mensajes correspondientes a errores en el modo compilado.
- Si bien es necesario establecer el modo de ejecución desatendida para las clases de Web, no verá los efectos laterales si omite establecer esta propiedad en modo de depuración. Vea la sección Ejecución desatendida, más arriba, para obtener más detalles.
Clases de Web: sugerencias para el rendimiento
A continuación presentamos varias sugerencias que puede incorporar a sus aplicaciones para IIS con el fin de mejorar su rendimiento:
- Asegúrese de que están activadas las opciones Ejecución desatendida y Conservado en memoria en el cuadro de diálogo Propiedades de proyecto de su aplicación.
- Si su aplicación no incluye ninguna sustitución de texto, establezca la propiedad TagPrefix con una cadena vacía. Esto impide que la clase de Web lleve a cabo análisis innecesarios.
- No almacene objetos de Visual Basic (o cualquier otro objeto del modelo de independiente de COM) en el objeto Session de las páginas Active Server. Esto puede afectar a la escalabilidad. Puede almacenar cadenas en el objeto Session sin efectos negativos. Consulte la documentación para IIS para obtener más detalles.
- Limite el uso de tipos Variant en su aplicación.
- Cuando la propiedad StateManagement de la clase de Web tiene el valor wcRetainInstance, el rendimiento se reducirá cuando el aumente significativamente el número de clientes.
- Si su aplicación lleva a cabo una transacción del lado de cliente con una plantilla de clase de Web que no contiene ninguna sustitución o bien si utiliza la propiedad URLData, conviene obtener acceso directamente a la plantilla mediante una dirección URL.
- Cuando utilice el método URLFor, especifique el elemento de Web mediante la cadena del nombre en lugar de una referencia a objeto.
- Utilice tipos específicos al crear o invocar otros componentes.
Clases de Web: problemas diversos
- Cuando el depurador de su aplicación para IIS encuentra un punto de interrupción en algún evento, al presionar F5 para continuar no devuelve el enfoque a Internet Explorer. Debe cambiar a Internet Explorer manualmente después de continuar.
- Los nombres de clases de Web y los nombres de etiquetas no distinguen mayúsculas de minúsculas. No puede volver a nombrar una clase de Web con el mismo nombre que poseía previamente, con sólo un cambio de mayúsculas a minúsculas o a la inversa. Por ejemplo, si intenta volver a nombrar una clase de Web llamada Entradapedido como EntradaPedido, el nombre original queda sin cambiar.
- Evite la ejecución de múltiples instancias del explorador durante la depuración. Si tiene abierta más de una instancia de Internet Explorer, Visual Basic no recuerda en cuál de los exploradores se ejecuta el proyecto de clase de Web. Si tiene abiertos dos exploradores, uno que apunte a su proyecto y otro a otra página, ambos exploradores se verán afectados cuando termine su sesión de depuración.
- Es posible que obtenga un error si intenta compilar su proyecto de aplicación para IIS desde la línea de comandos. Un modo de solucionar esto es abrir el proyecto en Visual Basic, alterar el diseñador de modo insignificante y a continuación volver a guardar el proyecto. Inicie de nuevo a continuación la compilación desde la línea de comandos, todo debería funcionar correctamente.
- Si desea programar botones en las plantillas de código HTML de su clase de Web, tenga presentes dos puntos. El primero, que sus botones deben ser del tipo SUBMIT. Para esto, agregue un parámetro en el código HTML correspondiente a su elemento de botón que diga: type=SUBMIT. El segundo, que no puede escribir código para el botón directamente; en lugar de ello debe conectar su elemento de formulario. Puede colocar cada botón en un formulario separado o bien utilizar la colección formularios del objeto Request con el fin de determinar el botón que originó el evento.
Clases de Web: artículos de interés
En las clases de Web confluyen numerosas tecnologías diferentes, entre otras: Visual Basic, páginas Active Server, Internet Information Server y Windows NT. Existen numerosos artículos a su disposición en el sitio Web de Microsoft que pueden resultarle útiles para aprender más acerca de las tecnologías que sustentan las clases de Web. Algunos de los artículos que pueden ser particularmente útiles se enumeran a continuación (estos artículos están en inglés):
- El sitio principal de SiteBuilder Network.
(http://www.microsoft.com/workshop/server/toc.asp).- "Implementing a Secure Site with ASP"
(http://www.microsoft.com/isn/techcenter/security.asp).- "Security Issues with Objects in ASP and ISAPI Extensions"
(KB article Q172925)- "COM Security Frequently Asked Questions"
(KB article Q158508)- "Descriptions of Workings of OLE Threading Models"
(KB article Q150777)- "Automate Printing in ASP from COM Servers"
(KB article Q184291)- "COM Servers Activation and NT Windows Stations"
(KB article Q169321)- "Launching ActiveX Servers from ISAPI Extensions"
(KB article Q156223)- "Security Ramifications for IIS Applications"
(KB article Q158229)Clases de Web: aplicar formato en el código fuente de un archivo de HTM
Puede constatar la pérdida de parte del formato en su código fuente HTML tras agregar un archivo de plantilla al diseñador de clases de Web. Por ejemplo la clase de Web puede eliminar algunos espacios en blanco sobrantes de su archivo original. Esto no tiene ningún efecto en el funcionamiento de su página HTML.
Clases de Web: no se admite el elemento LINK de HTML
La etiquetas LINK se utilizan en una página HTML para hacer referencia a hojas de estilo. Aunque sus páginas HTML en un proyecto de clase de Web pueden contener esta etiqueta, no puede utilizar el diseñador para obtener acceso al elemento LINK ni procesar código de Visual Basic para el mismo. Si necesita manejar una etiqueta LINK dentro de su código, puede escribir manualmente la notación de evento como muestra la documentación en pantalla. Para ver la notación efectúe una búsqueda en pantalla con la opción Buscar sólo títulos activada acerca de "Agregar manualmente notación de eventos a un archivo .HTM" en la documentación de Visual Studio 6.0 de la biblioteca MSDN.
Clases de Web: cuando utiliza Visual SourceSafe con proyectos de clase de Web, debe proteger manualmente los archivos del proyecto .HTM
En Visual Source Safe, cuando protege un proyecto de aplicación para IIS, no se protegen automáticamente las páginas HTML asociadas con el árbol de Source Safe junto con el resto de los archivos del proyecto. Debe agregarlos manualmente al árbol como archivos relacionados.
Clases de Web: TagPrefix debería ser WC:
Aunque el valor predeterminado de la propiedad TagPrefix para sus plantillas de clase de Web es WC@, es preferible utilizar WC: siempre que sea posible con el fin de indicar sustituciones de texto en sus archivos de plantilla.
Clases de Web: parámetro Variant en el método URLFor
El parámetro WebItem del método URLFor puede aceptar un objeto WebItem o el nombre de un elemento de Web en formato cadena. Por razones de rendimiento, debería utilizar el formato de cadena al hacer referencia a múltiples elementos de Web dentro de una misma petición.
Clases de Web: los datos en secuencia se pasan mediante el parámetro &WCU
En la sección "Controlar las secuencias de clases de Web" del libro Generar aplicaciones para Internet de Guía de herramientas componentes de MSDN, la documentación afirma incorrectamente que puede cambiar datos entre el cliente y el servidor al agregar un parámetro ?Data en la petición a la dirección URL. En la práctica, debe utilizar un parámetro &WCU en lugar de ?Data. La sintaxis correcta de la petición es:
WCI=webitem1?WCE=event1&WCU=01Clases de Web: las constantes de la propiedad StateManagement hacen referencia a propiedades incorrectas
En el tema "StateManagement (Constantes de la propiedad)" se afirma incorrectamente que la constante wcRetainInstance permite a la clase de Web conservar los datos de estado hasta que el objeto WebClass llama al método SetComplete. Esto podría significar que los datos se conservan hasta que el objeto WebClass llama al método ReleaseInstance. Para ver los temas de Ayuda erróneos efectúe una búsqueda en pantalla con la opción Buscar sólo títulos activada acerca de "StateManagement (constantes de la propiedad)" en la documentación de Visual Studio 6.0 de la biblioteca MSDN.
Clases de Web: estado y objeto Session
Si el valor del tipo StateManagement del objeto WebClass es wcRetainInstance, se mantendrá una instancia separada de la clase de Web en el objeto Session de ASP por cada sesión de usuario. En ciertos casos, puede llegar a pensar que la información de estado no se mantendrá cuando dispone actualmente de dos instancias de una clase de Web en su objeto Session. Una situación en la que esto podría ocurrir es cuando tiene dos directorios virtuales y los dos apuntan a la misma ubicación. Si crea un primer directorio virtual cuando inicia su sesión de depuración y hace referencia a un segundo en su código, iniciará en la práctica una segunda instancia de la clase de Web cuando se active el código.
Consulte la documentación de MSDN acerca de las páginas Active Server para obtener detalles acerca de cómo se implementa el objeto Session de las páginas Active Server.
Clases de Web: correcciones al código en el tema de la Ayuda "Definir eventos de la clase de Web en tiempo de ejecución"
En el tema "Definir eventos de la clase de Web en tiempo de ejecución", el código de ejemplo muestra una instrucción como la siguiente:
rs = New ADO.RecordsetLa sintaxis correcta para esta línea debería ser:
Set rs = New ADODB.RecordsetClases de Web: archivos HTM y ASP no incluidos en los paquetes estándar
Cuando empaqueta una aplicación para IIS en un paquete estándar mediante el Asistente de empaquetado y distribución, el asistente no incluye automáticamente los archivos .htm y .asp correspondientes al proyecto en el archivo .CAB que crea. Debe incluir esos archivos manualmente durante el empaquetado de la aplicación.
Clases de Web: error no especificado
Se produce un "error no especificado" si agrega una clase de Web existente a un proyecto nuevo y a continuación hace clic en el icono de plantilla antes de guardar el proyecto. Si obtiene un mensaje que indica un "Error no especificado" en dicho contexto, guarde su proyecto.
Problemas con el diseñador de páginas DHTML
Mensajes de error del diseñador de páginas
No existen por ahora temas de Ayuda para los mensajes de error siguientes:
"¿Desea guardar el código HTML interno en un archivo?" Esto ocurre si especifica otro archivo HTML ya existente en la Página de propiedades.
Si tiene código HTML en una instancia del diseñador de páginas y decide utilizar un archivo HTML diferente ya existente dentro del diseñador, debe abrir la página de propiedades y especificar el nombre del archivo existente. A continuación el diseñador de páginas debe saber qué hacer con el código HTML interno que se encuentra actualmente en el diseñador. Si contesta Sí a esta pregunta, Visual Basic guardará el código HTML en un archivo tras especificar un nombre de archivo.
"Los diseñadores de páginas DHTML no pueden ser privados" Esto ocurre si intenta cambiar una propiedad Public del diseñador de páginas DHTML a Private. Aunque los diseñadores ActiveX puede ser públicos o privados, deben ser declarados como públicos para obtener acceso a los mismos desde una aplicación DHTML. Los diseñadores privados pueden ser útiles en algunos casos, como cuando desea encapsular la lógica de acceso a sus datos dentro del entorno de datos, pero no desea declarar este último como público.
"¿Volver a cargar el archivo HTML modificado?" Esto ocurre si el Diseñador de páginas detecta que el archivo HTML al que hace referencia el diseñador se modificó en el disco. Este mensaje le permite confirmar si desea cargar el archivo HTML modificado en el diseñador.
Diseñador de páginas: "Me." no admitido
No puede utilizar la referencia "Me" en el código de su clase de Web para hacer referencia al objeto DHTMLPage. Por ejemplo, la documentación muestra frecuentemente que puede escribir código como "Me.Document.item". Esto no está admitido. En lugar de Me, debe utilizar la instrucción "DHTMLPage". Por ejemplo, en lugar de Me.Document, podría utilizar DHTMLPage.Document. Si el diseñador es privado, es posible utilizar "Me", pero no está permitido usar Private en las páginas DHTML.
Diseñador de páginas: no se tiene acceso a elementos de código HTML desde formularios u objetos externos
No puede escribir código para hacer haga referencia a elementos presentes en una página HTML en un formulario, cuadro de mensaje u otro objeto. Sólo es posible obtener acceso a los elementos de página dentro de la propia página.
Diseñador de páginas: los archivos de origen de imagen no se resuelven correctamente
A menudo, cuando trabaja en el diseñador de página, querrá hacer referencia a una imagen que se encuentra ubicada en el mismo directorio que su página HTML actual. Normalmente, cuando hace referencia a una imagen de este tipo, no incluye una ruta en el atributo SRC del elemento de imagen. La ausencia de ruta indica al explorador que debe tomar la imagen del directorio actual de la página. Por ejemplo, podría escribir "mimagen.gif" en la propiedad SRC de una imagen de este tipo en lugar de especificar "c:\midhtml\mimagen.gif". Dicha ruta se denomina ruta relativa porque no especifica la ubicación completa del archivo de imagen.
En tiempo de diseño, el diseñador de páginas no muestra correctamente esas imágenes con rutas relativas. Cuando escribe un valor de propiedad de este tipo en la propiedad SRC o muestra una página que contiene una referencia de este tipo, ocurren dos cosas:
- El elemento de imagen se muestra vacío en tiempo de diseño.
- El diseñador de páginas agrega la palabra "About:" al valor de su propiedad SRC. Por ejemplo mostraría "About:mimagen.gif".
A pesar de todo, la imagen aparece correctamente cuando ejecuta el proyecto. Por consiguiente, puede pasar por alto la palabra clave "About:" de la propiedad SRC y el hecho de que la imagen no aparezca en el diseñador. Cuando guarda el archivo HTML, la etiqueta de imagen se escribirá correctamente.
Diseñador de páginas: problemas con la persistencia binaria
Algunos controles intentan guardar parte o la totalidad de sus propiedades en un formato binario que no puede reproducirse directamente en el código HTML. Debido a esto es posible que algunas propiedades del control no se guarden tras ejecutar su proyecto. Para corregir este problema, establezca la propiedad en tiempo de ejecución. La lista siguiente muestra las propiedades conocidas que presentan este problema:
Control
Elemento
Control Tabbed Dialog
La propiedad TabsPerRow no es persistente
Controles Listbox sin ventana
Los elementos de lista no son persistentes
Controles comunes
Los valores de Tabstrip no son persistentes
Controles comunes
Los valores de Toolbar no son persistentes
Controles comunes
Los valores de StatusBar no son persistentes
Control ADODC
La propiedad ConnectionString no es persistente
Además, en muchos controles, las propiedades de fuentes no son persistentes. Cuando se da, ésta es la manifestación más común del problema de la persistencia binaria.
Diseñador de páginas: problemas en la biblioteca de tipos impiden que se muestren algunos temas de la Ayuda
Cuando inicia un proyecto diseñador de páginas, verá dos bibliotecas de tipos DHTML en el Examinador de objetos: la biblioteca DHTMLPAGELIB y la biblioteca DHTMLProject. La Ayuda está habilitada para la biblioteca DHTMLPAGELIB pero no para la biblioteca DHTMLProject. La mayoría de los elementos en DHTMLProject deberían estar disponibles dentro de la otra biblioteca.
En otros casos, problemas en la biblioteca de tipos impiden que ciertas partes de la Ayuda puedan mostrarse o funcionar correctamente. Esto se produce en los casos siguientes:
- Cuando intenta abrir la Ayuda desde la ventana de Propiedades correspondiente a las propiedades de un control ActiveX.
- Cuando intenta abrir la Ayuda desde la ventana del editor de código, acerca de la propiedad Document.
En la mayoría de los casos, debería poder encontrar el tema deseado mediante el índice en el visor de la Ayuda de MSDN.
Diseñador de páginas: aparecen cuadros modales detrás del explorador en modo de ejecución
Si agrega un cuadro de mensaje a su página DHTML, éste aparece detrás de Internet Explorer cuando lo activa en modo de ejecución. Además, no puede desplazar Internet Explorer de forma que pueda ver el mensaje porque es un mensaje modal. Cuando escuche el sonido indicador de la presencia de un mensaje en pantalla, seleccione la aplicación de Visual Basic en la barra de tareas con el fin de presentar y aceptar el mensaje.
Diseñador de páginas: no inspeccione objetos del tipo HTMLDocument
La expansión de objetos inspeccionados de tipo HTMLDocument puede causar problemas en el entorno integrado de desarrollo (IDE). Evite la inspección de objetos de este tipo.
Diseñador de páginas: no es posible diseñar marcos dentro del diseñador de páginas
Cuando crea páginas Web en el diseñador de páginas DHTML, no puede insertar conjuntos de marcos dentro de la página y llenar su contenido. Puede sin embargo mostrar las páginas que crea para su aplicación DHTML dentro de un conjunto de marcos creados fuera de Visual Basic. Si desea diseñar y depurar ventanas HTML, el proceso es el siguiente:
- En Visual Basic, diseñe el contenido de cada marco con un diseñador de páginas DHTML individual.
- En un programa de edición externo, diseñe el documento con la descripción del conjunto de marcos como un archivo .htm separado y guárdelo en el directorio temporal. Establezca los atributos SRC de cada marco para que apunten a sus páginas con contenido: para ello utilice los nombres definidos en sus propiedades BuildFile.
- En Visual Basic, elija "Iniciar explorador con dirección URL" en la ficha Depurar del cuadro de diálogo Propiedades de proyecto y escriba la ruta del archivo del conjunto de marcos.
- Active el modo de ejecución. Visual Basic inicia Internet Explorer y carga la página con el conjunto de marcos diseñado en un programa externo. El documento con el conjunto de marcos debería cargar ahora su diseñador de páginas en los marcos apropiados.
- Depure su aplicación del modo habitual.
Diseñador de páginas: no se puede usar código de Visual Basic con el método SetInterval
Si utiliza el método SetInterval del objeto BaseWindow de Internet Explorer con un temporizador dentro de sus aplicaciones DHTML, es necesario establecer el primer parámetro del método de tal forma que apunte a una rutina de temporización en código Javascript o VBScript incluida dentro de la página HTML. Este método no puede hacer referencia a una rutina de Visual Basic dentro del código de su diseñador de páginas.
Diseñador de páginas: problemas con los controles
Tenga en cuenta los puntos siguientes cuando trabaja con controles ActiveX en sus aplicaciones DHTML:
- Debe utilizar versiones compiladas de cualquier control ActiveX que agrega a sus páginas DHTML.
- No es posible utilizar una página DHTML en un proyecto de control ActiveX en esta versión. La inversa tampoco es posible, el proyecto de control ActiveX no puede ser parte del grupo de proyectos en el que trabaja. El modo más seguro y de más confianza para generar y depurar un control de usuario es compilar el proyecto de control de usuario y a continuación cerrar dicho proyecto, agregar el control al diseñador de páginas y proseguir en ese punto. No es posible disponer de depuración y diseño interactivos entre los dos proyectos por ahora.
- Cuando incrusta un control ActiveX en una página en su aplicación DHTML, no se copia con él toda la información apropiada de la biblioteca de tipos. Esto puede provocar errores al intentar obtener acceso desde un vínculo del explorador de objetos a la información correspondiente al control así como impedirle mostrar las propiedades y métodos extendidos del control de la ventana de instrucciones autocompletadas que aparece cuando escribe código.
- Algunos controles ActiveX no funcionarán correctamente con el diseñador de páginas. No es posible utilizar los controles siguientes en una página DHTML: MS Chart, Script Debugger, Hierarchical FlexGrid, SrcEdit OC, LayoutDTC, Tabular Data control, PageNavbarDTC o IE Popup Window. Además, no es posible utilizar controles privados o controles no compilados en las páginas de sus aplicaciones DHTML. Del mismo modo, es posible que algunos controles conseguidos de terceras empresas no funcionen correctamente con el diseñador de páginas.
La mayoría de los controles que funcionan con Internet Explorer 4 deberían funcionar con el diseñador de páginas. Si adquiere un control comercializado por terceros que no funciona con el diseñador de páginas, pruébelo dentro de Internet Explorer y a continuación póngase en contacto con el distribuidor del control. Para obtener información acerca de cómo generar controles ActiveX que funcionan con el diseñador de páginas e Internet Explorer, consulte el artículo "Generar controles ActiveX para Internet Explorer 4.0", disponible en la biblioteca de MSDN o bien en el sitio Web de Microsoft en la sección "MSDN Online".- Si en un control ActiveX establece el fondo transparente, se mostrará opaco en tiempo de diseño cuando lo agregue a su aplicación DHTML.
- Si su página DHTML contiene un control Listview e intenta obtener acceso a la propiedad Width del objeto ColHeader, se encontrará con un error que le indicará que el objeto no admite esta propiedad. La propiedad aparece en la lista desplegable "Lista de miembros automática" pero no debería utilizarla en su código.
- Algunos controles de Visual Basic, como el control de diálogo común o el control Sysinfo son invisibles en tiempo de ejecución. Si agrega alguno de esos objetos a su página HTML, no podrá seleccionarlo y desplazarlo dentro de la página después de dibujarlo una primera vez. Sin embargo puede seleccionar el control en el panel Treeview y eliminarlo o bien obtener acceso a sus propiedades.
- Si agrega un control File Upload (FlUpl) a su diseñador DHTML y hace clic en él en tiempo de diseño, éste se activará y mostrará el cuadro de diálogo de selección de archivo estándar. Puede cancelar este cuadro de diálogo y seguir adelante.
- Existe una propiedad InnerText no operativa en la lista desplegable de la Lista de miembros automática correspondiente al elemento de la regla horizontal. No establezca ningún valor en esta propiedad ya que no producirá ningún resultado.
- Cuando agrega un control ActiveX a su página, las propiedades Height y Width no se actualizan automáticamente mientras el control cambia su tamaño en el diseñador. Para actualizar los valores numéricos de las propiedades Height y Width, haga clic en un área en blanco del Treeview después de cambiar el tamaño de su control.
- Cuando hace clic en un control en el cuadro de herramientas y a continuación mueve el cursor sobre el panel de diseño del diseñador, la forma en I del cursor no cambia a la de un puntero con el que se indica que puede hacer clic y pintar su control. Pero es posible seleccionar y arrastrar los bordes del control hasta darle la forma deseada, aunque el cursor muestre la forma de I.
- Cuando copia controles entre dos proyectos DHTML en el mismo grupo de proyectos, no se actualiza el cuadro de diálogo Componentes. Necesitará establecer manualmente las referencias necesarias para dicho control.
- Si el proyecto se ejecuta en modo de depuración y utiliza el control ImageList, la imagen de éste no se cargará. Sin embargo, la imagen funcionará correctamente cuando ejecute el archivo DLL compilado.
Diseñador de páginas: problemas diversos del código HTML
Tenga en cuenta los siguientes puntos al crear y trabajar con código HTML en el diseñador de páginas DHTML:
- Si su página contiene una metaetiqueta CHARSET, ésta se eliminará cuando el diseñador lea la página. Esto no debería causar problemas en la mayoría de las páginas.
- Los anchos de columna que se muestran en el diseñador pueden no coincidir con los anchos de columna que aparecen al ejecutar su página en el explorador. Conseguirá evitar este problema al establecer sus anchos de columna en porcentajes en lugar de en píxeles o bien si se asegura de que la columna de más a la izquierda no tiene establecida ninguna medida de ancho.
- No asigne a la propiedad ID valores mayores de 117 caracteres. Si lo hace, puede recibir un error al ejecutar la aplicación.
- Si el primer elemento de párrafo de su página no contiene texto y le sigue otro elemento de código HTML, puede obtener resultados no esperados si elimina la primera etiqueta <P>. En este caso, otros elementos de la página también pueden eliminarse.
- Puede obtener resultados no coherentes si intenta eliminar la etiqueta DIV desde el panel Treeview del diseñador. Si tiene dificultades para eliminar una etiqueta DIV, utilice la función Iniciar editor y elimine las etiquetas <DIV> y </DIV> manualmente.
- Cuando ejecuta su proyecto, los bordes de las tablas se mostrarán tan sólo en aquellas celdas que contienen texto. Puede forzar el dibujo del borde en las celdas vacías de sus tablas: para ello coloque una etiqueta <BR> en cada celda no utilizada de la tabla.
- Tras ejecutar el proyecto, es posible que los valores de las propiedades establecidas para el elemento TITLE de su página HTML no sean persistentes en la cuadrícula de propiedades. No obstante, si examina el código fuente de HTML en el explorador verá que las propiedades de su título siguen estando presentes en el flujo de código HTML.
- Los elementos de una página están siempre delimitados por la esquina superior izquierda. Por consiguiente, si cambia el tamaño del elemento al estirar los bordes superior o izquierdo, el elemento se mostrará con el tamaño indicado al soltar el cursor pero seguirá ubicado en la esquina superior izquierda original. Esto puede producir resultados no esperados. Para evitar esto coloque primero su control con la esquina superior izquierda en el lugar apropiado y a continuación cámbielo al tamaño adecuado.
- Puede encontrar dificultades para eliminar el formato de fuente de algunos elementos. Por ejemplo, si agrega un encabezado H1 a su página, presiona INTRO y escribe una pocas frases a continuación, el párrafo mostrará el mismo formato que el encabezado, es decir: se mostrará ampliado y en negrita. No puede eliminar este formato usando los iconos Negrita en la barra de herramientas de formato. Para eliminar este formato incorrecto utilice la característica Iniciar editor y corrija manualmente las etiquetas de formato, o bien cambie a Normal el estilo del texto seleccionado en el diseñador.
- Algunas propiedades que aparecen en la ventana de Propiedades del objeto Document no son válidas. Estas propiedades empiezan con las letras "on". Si establece el valor de cualquiera de estas propiedades, no podrá ver ningún resultado basado en el valor que estableció al ejecutar el proyecto ni examinar el código fuente de HTML.
- En el caso de una casilla de verificación de HTML, se utiliza una propiedad llamada "Indeterminate", con el fin de establecer el estado de dicho elemento a sombreado. Sin embargo, si establece esta propiedad a True y a continuación hace clic en la casilla de verificación con el fin de dejarla en blanco, el valor de la propiedad Indeterminate no toma el valor False. Puede establecer de nuevo su valor manualmente o bien hacer clic una tercera vez.
- En el caso de un control ubicado totalmente con las propiedades Height y Width de la ventana de Propiedades, no es posible cambiar el tamaño del control al cambiar directamente los valores de esas propiedades. En lugar de ello, para cambiar el tamaño del control, arrastre uno de sus bordes en el diseñador.
Si inserta un elemento de imagen de entrada en su página y la imagen que contiene forma parte de un mapa de imágenes, la propiedad Shape estará disponible en las áreas de esa imagen. Si desea usar la propiedad Shape con el fin darle forma de polígono a partir de otra forma, obtendrá un error.
- El panel TreeView del diseñador puede no reflejar el orden exacto de los elementos a medida que se muestran en el panel de diseño. El panel Treeview muestra las relaciones de estructura de los elementos en la página en el orden en que aparecen en el flujo de código HTML. La posición de un elemento en el flujo de código HTML no corresponde siempre a la posición de un elemento en la página mostrada porque es posible cambiar la posición de un elemento mediante atributos y estilos dentro del código. Su página aparecerá en Internet Explorer del mismo modo que en el panel de diseño del diseñador.
Diseñador de páginas: problemas diversos de depuración
Tenga en cuenta los puntos siguientes cuando depure y pruebe sus aplicaciones DHTML:
- En la ventana Locales, las funciones utilizadas en su aplicación DHTML se enumeran dos veces. Esto puede causar dificultades porque aparentemente permite establecer dos valores diferentes en variables booleanas.
- Varias propiedades enumeradas en la ventana Locales producirán un error si intenta modificar sus valores. Se trata de las propiedades siguientes:
DHTMLPage.BaseWindow.document.activeElement.all.lengthDHTMLPage.BaseWindow.document.activeElement.offsetParent.all.lengthDHTMLPage.BaseWindow.document.activeElement.children.length
- Si actualiza Internet Explorer mientras su proyecto DHTML está en modo de interrupción y a continuación vuelve al modo de ejecución en Visual Basic, tanto sus puntos de interrupción como las instrucciones Stop dejarán de ser operativos. Detenga el modo de depuración y a continuación presione F5 de nuevo para iniciar una segunda vez su proceso de depuración.
Diseñador de páginas: sintaxis para explorar mediante programación
En el tema "Explorar aplicaciones DHTML" en la sección Desarrollar aplicaciones DHTML del libro Generar aplicaciones para Internet, la documentación afirma que puede desplazarse por el programa de una página a otra usando esta sintaxis dentro de su código:
Private Function Button1_onclick() As Boolean BaseWindow.navigate "Project1.DHTMLPage2.html" End FunctionEsta sintaxis no es correcta porque un carácter de subrayado (en lugar de un punto) debe separar el nombre de proyecto y el nombre de página. La sintaxis correcta que debe usar se muestra a continuación:
Private Function Button1_onclick() As Boolean BaseWindow.navigate "Project1_DHTMLPage2.html" End FunctionDiseñador de páginas: inserción de etiqueta OBJECT
En el tema "Probar los proyectos DHTML" la documentación afirma que se inserta una etiqueta OBJECT en su página durante la depuración pero no dice que dicha etiqueta se inserta al mismo tiempo dentro de una etiqueta METADATA. Además, las aclaraciones siguientes pueden serle útiles:
- El contenido del atributo CODEBASE de la etiqueta OBJECT se completa durante el empaquetado, cuando utiliza el Asistente de empaquetado y distribución con el fin de preparar la distribución del proyecto.
- Durante la depuración, la etiqueta OBJECT está actualmente insertada en una copia temporal del archivo HTML. La etiqueta final se define durante el proceso de empaquetado.
Diseñador de páginas: no se puede usar Ctrl-Tab entre ventanas cuando el diseñador de páginas tiene el enfoque
Cuando la ventana del diseñador de páginas tiene el enfoque, no puede utilizar la combinación de teclado Ctrl-Tab con el fin de desplazarse por todas las ventanas abiertas en el entorno integrado de desarrollo (IDE) de Visual Basic como hace en otros proyectos.
Diseñador de páginas: no se puede eliminar una tabla si no contiene columnas
Si elimina todas las columnas de una tabla de la página y a continuación intenta eliminar la propia tabla, ésta sigue apareciendo en el panel Treeview del diseñador. Para eliminar la tabla del Treeview, debe eliminar el elemento de párrafo bajo el que aparece el elemento de tabla.
Diseñador de páginas: cuando utiliza Visual SourceSafe con proyectos del diseñador de páginas, debe proteger manualmente los archivos .HTM del proyecto
En Visual Source Safe, cuando protege un proyecto de aplicación DHTML, no se protegen automáticamente las páginas HTML asociadas con el árbol de Source Safe junto con el resto de los archivos del proyecto. Es necesario agregarlos manualmente al árbol como archivos relacionados.
Nota Esto se aplica tan sólo si guardó sus páginas HTML como archivos externos. Si las guardó dentro del proyecto no existen archivos .htm que proteger en su proyecto en tiempo de diseño.Diseñador de páginas: una propiedad BuildFile no calificada genera el archivo DLL en el escritorio
Si tras modificar la propiedad BuildFile ésta no especifica la unidad y directorio en que debería ubicarse el archivo, el sistema generará los archivos resultantes directamente en su escritorio. Escriba siempre la ruta calificada completa cuando escriba valores para esta propiedad.
Diseñador de páginas: uso del evento Load con la propiedad AsyncLoad
En el tema "Load (Evento, página DHTML)" dentro de la sección Referencia de la documentación de Visual Basic en MSDN, la documentación afirma incorrectamente lo siguiente:
"Los programadores pueden utilizar este evento cuando ejecutan la aplicación en modo asíncrono (cuando la propiedad AsyncLoad está establecida como True) como notificación de que todos los elementos se han cargado en la página".En la práctica, esto vendría a significar que cuando ejecutan la aplicación en modo síncrono (cuando AsyncLoad tiene el valor False), los programadores pueden usar el evento Load como una notificación de que todos los elementos han sido cargados.
Diseñador de páginas: problemas con la página de propiedades
Tenga en cuenta los siguientes puntos al trabajar en las páginas de propiedades de numerosos elementos HTML en el diseñador de páginas de DHTML:
- Algunos elementos disponen de fichas adicionales en sus páginas de propiedades que no aparecen cuando muestra las mismas en un proyecto DHTML. En muchos casos, puede mostrar estas fichas aunque no estén visibles, al presionar la tecla TAB.
- Si realiza cambios a la página de propiedades personalizadas de un control ActiveX agregado a su aplicación DHTML, no siempre podrá ver esos cambios reflejados en su proyecto DHTML. Para corregir este problema, cierre su proyecto DHTML y vuelva a compilar el proyecto de control ActiveX. Sus cambios deberían aparecer a continuación en el proyecto DHTML. Repita este proceso cada vez que desee realizar cambios en la página de propiedades del control.
- La palabra "Test" aparecerá en el cuerpo de algunas páginas de propiedades. Esto no causará ningún problema en su aplicación.
Diseñador de páginas: ubicación de los archivos de proyecto en la distribución con archivo .CAB
En el tema "Distribuir el proyecto DHTML", en la documentación se afirma que el archivo de proyecto DLL, el ejecutable de Visual Basic así como los archivos .dsr y .dsx del proyecto se colocan dentro del mismo archivo .CAB durante el proceso de distribución. Esto no es correcto. En la práctica, los archivos .dsr y .dsx del proyecto no se colocan dentro del archivo .CAB.
Diseñador de páginas: cambio en el nombre de la opción Guardar
En la documentación del diseñador de páginas, los procedimientos para la selección de las opciones de guardar le indican que seleccione una opción del cuadro de diálogo Propiedades de página llamada "Guardar HTML en el diseñador" si no desea usar un archivo HTML externo para guardar. Esta opción se llama actualmente "Guardar HTML como parte del proyecto VB".
Diseñador de páginas: problemas al mostrar código cuando se cambia del modo de compilación al modo de depuración
Es posible, en ciertos casos, encontrarse con el problema de que no es posible mostrar los cambios efectuados en el código de su aplicación DHTML cuando, después de ejecutar el archivo DLL compilado, realiza cambios en el código y pasa a continuación a modo de depuración. En esta situación, intente cualquiera de las soluciones siguientes:
- Una vez modificado el código, desactive la casilla Usar explorador existente en la ficha Depurar del cuadro de diálogo Propiedades de proyecto, antes de iniciar el proceso de depuración.
- Salga del explorador tras ejecutar el archivo DLL compilado, antes de abrir el entorno integrado de desarrollo para hacer cambios en el código.
Diseñador de páginas: la Ayuda acerca de la mayoría de los elementos de lenguaje está disponible en Platform SDK
La mayoría de los elementos del diseñador de páginas son heredados del modelo de objeto Document de Internet Explorer. La tecla F1 no está disponible para estos elementos. Para obtener ayuda acerca de estos temas, abra el nodo "Platform SDK" en la tabla de contenido de MSDN, a continuación abra el nodo "Servicios de Internet, Intranet y Extranet" y busque la sección "HTML dinámico". También puede utilizar el índice para llevar a cabo la búsqueda del nombre de un elemento de lenguaje en particular.
Problemas con la extensibilidad
Comportamiento de un complemento "A prueba de errores en la línea de comandos"
Utilice el cuadro Comportamiento de carga en el Administrador de complementos con el fin de controlar el modo y momento en que se carga un complemento en Visual Basic.
- Cargado/Descargado: permite cargar o descargar un complemento seleccionado según esté la casilla activada o desactivada.
- Cargar al iniciar: indica si el complemento seleccionado debe cargarse cuando se inicia el entorno integrado de desarrollo (IDE) de Visual Basic.
- Línea de comandos: indica si debe cargarse un complemento cuando se inicia Visual Basic con una línea de comandos, es decir, desde el indicador de DOS o bien desde una secuencia de comandos.
Cuando selecciona el modo de carga de un complemento desde la línea de comandos, puede obtener el mensaje de advertencia siguiente:
- "No se ha confirmado el complemento seleccionado como 'A prueba de errores en la línea de comandos' y puede que sea necesaria la intervención del usuario (posiblemente a través de la interfaz de usuario). ¿Desea continuar?"
Esto ocurre cuando selecciona un complemento para su uso en la Línea de comandos sin que el autor del complemento lo declarase como "A prueba de errores en la línea de comandos" cuando lo creó. (Es posible indicar esto en el diseñador de complementos mediante una casilla de verificación).
"A prueba de errores en la línea de comandos" significa que el complemento se registró de tal modo que no contiene interfaz que necesite la entrada del usuario cuando se invoca Visual Basic desde una línea de comandos. Una interfaz de usuario puede interferir con las operaciones de un proceso en modo desatendido (como las secuencias de comandos de generación).
Si no se indica que un complemento es seguro para línea de comandos (aunque de hecho sea seguro para línea de comandos), los usuarios recibirán el mensaje de advertencia cuando activen el complemento y a continuación la opción Línea de comandos del cuadro Comportamiento de carga. Éste no es un problema serio, sino más bien una advertencia al usuario de que el complemento seleccionado posiblemente contiene elementos de la UI que pueden emerger inesperadamente e interrumpir sus secuencias de comandos automáticas al detenerse a la espera de la entrada del usuario.
Establecer manualmente valores de complementos en el registro
También es posible activar manualmente el modificador "A prueba de errores en la línea de comandos" (así como los demás valores) de un complemento mediante el registro de Windows.
Nota: No debería intentar manipular directamente ninguna entrada del registro de Windows a menos que esté familiarizado con él. El establecimiento de valores no válidos en las entradas del registro puede causar problemas con Windows y posiblemente impedir su inicio.
En Visual Basic 6.0, la clave que conserva la información sobre el complemento se encuentra en HKEY_CURRENT_USER\SOFTWARE\Microsoft\Visual Basic\6.0\Addins\<add-in.name>. En el caso de Visual Basic 6.0, los valores DWord de LoadBehavior son:
- None = 0
- Startup = 1
- Command Line = 4
- Command Line / Startup = 5
Existe también un valor DWord adicional que indica si el complemento es seguro para línea de comandos: CommandLineSafe. El valor 1 indica que el complemento es seguro para línea de comandos, mientras el valor 0 (predeterminado) indica que no es seguro para línea de comandos. El valor 0 es implícito si omite activar el cuadro A prueba de errores en la línea de comandos en el diseñador de complementos ya que se supone 0 como valor predeterminado: el complemento no se considera seguro para línea de comandos.
Para mostrar ahora cómo utilizar estos valores para indicar que un complemento ficticio (My.Addin) es seguro para línea de comandos y para cargarlo cuando se inicia Visual Basic desde la línea de comandos, podría establecer los valores siguientes del registro: para ello, utilice una herramienta como RegEdit:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Visual Basic\6.0\Addins\My.Addin "FriendlyName"="Un nombre explícito para su complemento" "Description"="Este valor describe el complemento" "LoadBehavior"=dword:4 "CommandLineSafe"=dword:1
Uso del diseñador de complementos
Visual Basic 6.0 incluye una herramienta nueva, llamada diseñador de complementos, para ayudarle a crear complementos. Para abrirlo:
- Cree un nuevo proyecto de complemento.
- En el Explorador de proyectos, en el cuadro Diseñadores, se encuentra un diseñador llamado Connect. Haga doble clic para activar el diseñador de complementos.
Desafortunadamente, la ayuda contextual no está por ahora disponible para el diseñador de complementos. Sin embargo, hay temas de Ayuda disponibles. Puede encontrar los temas apropiados al realizar una búsqueda de Diseñador de complementos en el índice de MSDN. Debería ver una lista con tres temas relacionados:
- "Utilización del diseñador de complementos"
- "General (Ficha, Diseñador de complementos)"
- "Avanzadas (Ficha, Diseñador de complementos)"
Para obtener más información efectúe una búsqueda en pantalla con la opción Buscar sólo títulos activada acerca de "Registrar los complementos" en la documentación de Visual Studio 6.0 de la biblioteca MSDN.
Diseñador de complementos: información adicional acerca de la especificación de un archivo DLL satélite
Cuando crea un complemento con el diseñador de complementos, puede especificar un archivo DLL en la ficha Avanzado. Asegúrese sin embargo de escribir tan sólo el nombre del archivo DLL y no la ruta calificada completa del mismo. Por ejemplo:
MiNombreDeComplemento.DLLy no:
Complementos\MiComplemento\MiNombreDeComplemento.DLL
DLL satélites traducidos
Si creó un archivo DLL satélite traducido, conviene también crear un directorio de recursos así como un directorio correspondiente al Id. de configuración regional del archivo DLL satélite e instalar éste en el directorio apropiado. El esquema de una ruta de este tipo es:
<Directorio de complementos>\Recursos\<Id.regional>\<MiSatelite.DLL>Por ejemplo, un archivo DLL satélite para la versión en alemán (con Id. de configuración regional: Locale ID = 1031) podría ir en el directorio:
C:\Archivos de programa\MiAddin\Recursos \1031\NombreAddin.DLL
Problemas diversos
Devolver un valor de error desde un archivo DLL
Para devolver un valor de error desde un procedimiento de una biblioteca de vínculos dinámicos (DLL), es necesario escribir el código del prototipo de lenguaje C de modo que el valor devuelto sea un HRESULT. Consulte Referencia del programador de OLE 2, volumen 2, de Microsoft Press para obtener más información acerca de cómo hacer esto.
Guía de acceso a datos: el tutorial de DataFormats tiene una extensión incorrecta
El tema llamado "Tutorial de los objetos Format" contiene una referencia incorrecta a un archivo con extensión .mdl. La extensión actual del archivo es .udl. Para obtener más información efectúe una búsqueda en pantalla con la opción Buscar sólo títulos activada acerca de "Tutorial de los objetos Format" en la documentación de Visual Studio 6.0 de la biblioteca MSDN.
El archivo en cuestión aparece en la lista como "Northwind.mdl", pero debería ser "Northwind.udl".
Se agregó un campo para un editor externo al cuadro de diálogo Opciones
La ficha Avanzado del cuadro de diálogo Opciones tiene un nuevo cuadro de texto llamado Editor externo de código HTML. Esta opción le permite seleccionar el programa de edición de código HTML que aparece cuando selecciona Iniciar editor desde el diseñador de páginas DHTML o bien desde el diseñador de clases de Web. Debe escribir la unidad, la ruta y el nombre del ejecutable del programa que desea utilizar. Puede elegir un programa de edición de código HTML, de procesamiento de texto o cualquier otro editor de texto que prefiera.
Herramienta CodeBase Fixup Utility en la transferencia de componentes de Internet
La sección "Descargar componentes ActiveX" del libro Generar aplicaciones para Internet contiene referencias a una herramienta llamada CodeBase Fixup Utility que puede usar para establecer manualmente información básica para código en un documento ActiveX. Esta información es incorrecta. La herramienta no se distribuye en el directorio \Tools con Visual Basic y no es necesario llevar a cabo este proceso manualmente en el caso de Internet Explorer 4.0 porque el Asistente de empaquetado y distribución inserta automáticamente la información básica para código apropiada en éstos y otros proyectos en los que se utiliza.
Texto truncado en los cuadros de diálogo Propiedades de proyecto y Abrir en las versiones de Windows para Japón, China y Corea
Cuando ejecuta Visual Basic en las versiones de Windows para Japón, China o Corea, puede observar que el texto en los cuadros de dialogo Propiedades de proyecto y Abrir aparece truncado. Si esto se produce, cierre Windows, vuelva a iniciarlo y a continuación inicie Visual Basic: el problema estará corregido.
Evite el uso del complemento Repository con diseñadores ActiveX
Conviene evitar el uso del complemento Repository con proyectos que contienen diseñadores ActiveX.
Para obtener una lista completa de los diseñadores disponibles, haga clic en el menú Proyecto de Visual Basic, elija Componentes y a continuación haga clic en la ficha Diseñadores del cuadro de diálogo Componentes.
La instalación de BackOffice sobrescribe la versión más reciente del control Calendar de Microsoft Access
Cuando tanto los componentes cliente de Visual Basic como BackOffice se encuentran instalados en el mismo equipo, en el Cuadro de herramientas aparece un control Calendar incorrecto. En lugar del archivo MSCAL.OCX, se instala MSACAL70.OCX. Además, el icono del Cuadro de herramientas también aparece de forma incorrecta y se solapa con otro icono.
Solución al problema:
Registre el archivo MSCAL.OCX realizando los pasos siguientes:
1. Cierre Visual Basic.
2. Vaya al indicador de comandos de MS-DOS.
3. Escriba este comando: 'regsvr32 c:\winnt\system32\mscal.ocx'.
4. Vuelva a ejecutar Visual Basic.
5. En el menú Ver, seleccione Cuadro de herramientas.
Ahora debe aparecer el control Calendar correcto en el Cuadro de herramientas.
Problemas con Microsoft Transaction Server (MTS)
Generar y depurar componentes de MTS en Visual Basic 6.0
Visual Basic 6.0 admite la depuración de componentes de Microsoft Transaction Server (MTS), pero conviene tener en cuenta varios problemas. Los problemas siguientes se aplican sólo a los componentes de MTS que se ejecutan en el depurador.
Windows NT 4.0 SP4 requerido
El soporte para la depuración de MTS necesita Windows NT 4.0 Service Pack 4 (SP4) o posterior. La depuración MTS no es compatible con Windows 95 o Windows 98.
MTSTransactionMode (Propiedad)
Visual Basic 6.0 introduce una nueva propiedad MTSTransactionMode para clases que permite establecer en éstas el soporte de transacciones de Microsoft Transaction Server (MTS) requerido. Los valores de la propiedad equivalen a los de la misma propiedad en el explorador de MTS. Sin embargo, los nombres de estas propiedades en el entorno integrado de desarrollo (IDE) de Visual Basic no son exactamente los mismos que los nombres usados en el explorador de MTS. La asociación de nombres es la siguiente:
Valor de la propiedad en VB
Opción en el Explorador de MTS
0 - NotAnMTSObject
N/A
1 - NoTransactions
No admite transacciones
2 - RequiresTransaction
Requiere una transacción
3 - UsesTransaction
Admite transacciones
4 - RequiresNewTransaction
Requiere una transacción nueva
Los atributos Transaction de una clase se importan dentro de MTS sólo si se agrega el componente a un paquete mediante la herramienta Agregar archivo. Si el componente se integró en un paquete mediante la lista de componentes registrados, los atributos de MTS no se reflejan en el explorador de MTS.
Habilitar la depuración de MTS
Para depurar componentes MTS con Visual Basic 6.0, establezca la propiedad MTSTransactionMode con un valor distinto de 0-NotAnMTSObject. Entonces, cuando presione F5 para iniciar la depuración, Visual Basic activará su componente dentro del ejecutable de Microsoft Transaction Server.
Cliente simple, servidor y subproceso
Se admite la depuración tan sólo para un único cliente y un único componente de servidor MTS a la vez, que operen en un subproceso único. Para situaciones donde se requieren múltiples clientes o servidores de MTS, o bien múltiples subprocesos, conviene depurar el componente de Visual Basic en el entorno de desarrollo de Visual C++. Para obtener detalles acerca de cómo depurar los componentes de Visual Basic en el entorno de Visual C++, vea la documentación de Visual C++.
Requisitos de compilación para la depuración
Para generar y depurar un componente MTS en Visual Basic, debe generar su componente en un archivo DLL y
establecer la compatibilidad binaria para el proyecto. Si no establece la compatibilidad binaria y agrega o elimina interfaces en el componente, es posible que MTS no detecte estos cambios.Limitaciones en la depuración de los eventos Class_Initialize y Class_Terminate
No conviene escribir código en los eventos Class_Initialize y Class_Terminate de un componente MTS que intenta obtener acceso al objeto o al objeto de contexto correspondiente. El ejecutable del entorno de Visual Basic llama a Class_Initialize antes de que se activen el objeto y su contexto, de modo que cualquier operación que Class_Initialize intente realizar sobre el objeto o el contexto del objeto fallará. De modo similar, se desactivan el objeto y su contexto antes de la llamada a Class_Terminate, por lo que las operaciones que este método intenta sobre el objeto y su contexto fallarán también.
No conviene establecer un punto de interrupción en el evento Class_Terminate de un componente MTS. En efecto, cuando el depurador encuentre el punto de interrupción, intentará activar el objeto, intento cuyo error causará la interrupción de Visual Basic.
Inspeccionar objetos de MTS
Durante la depuración, no inspeccione variables de objeto devueltas por el ejecutable de MTS, incluso ni los valores devueltos por SafeRef, GetObjectContext, CreateInstance ni otras funciones que devuelven objetos alojados por MTS.
Para simular con mayor eficacia el entorno de tiempo de ejecución, el ejecutable de Microsoft Transaction Server hace una pausa en sus operaciones cada vez que Visual Basic se interrumpe en el depurador. Internamente, Visual Basic realiza llamadas a métodos en los objetos que se examinan en el depurador. Dado que el ejecutable de MTS está en pausa mientras examina las variables de inspección, pueden fallar las llamadas que Visual Basic haga a estos objetos.
Si agrega objetos alojados por MTS a la ventana de inspección o si los examina por otros medios, esto puede provocar que MTS detecte un estado no consistente y el proceso terminará.
Registro y depuración
Las facilidades de depuración en Visual Basic permiten depurar un componente MTS sin necesidad de instalarlo en el explorador de MTS. Cuando inicia la depuración, Visual Basic realizará automáticamente una llamada a MTS con el fin de ejecutar su componente dentro del ejecutable de MTS.
En función de sus necesidades de depuración, le conviene también instalar su componente en el explorador de MTS. Existen algunos problemas que deben tenerse en cuenta al hacer esto. Si realiza cambios en interfaces, nombres de clase, nombres de proyecto, soporte transaccional u otros valores de sus componentes en el entorno integrado de desarrollo (IDE) de Visual Basic, pueden producirse conflictos entre los datos de configuración del explorador de MTS y la configuración actual que ejecuta en el depurador de Visual Basic. También puede ocurrir que el componente se inicie en MTS mientras lo depura. Más todavía, si exporta un paquete mientras depura un componente del paquete, MTS trata el entorno de desarrollo de Visual Basic como el propio componente.
Es posible evitar estos problemas si se asegura que el componente que depura no está registrado en el explorador de MTS. Como se menciona más adelante en esta sección, si modifica en el depurador la configuración de un componente instalado, es posible que deba eliminar y volver a instalar el componente.
Cambios en componentes durante la depuración
En Visual Basic, puede modificar los atributos transaccionales de un componente MTS durante la depuración. Visual Basic no registra estos cambios en el explorador de MTS.
Si durante la depuración realiza un cambio en su código fuente que requiere la generación de un nuevo CLSID o ProgID por parte de Visual Basic o bien si modifica el atributo transaccional de cualquier clase de MTS, debe utilizar el Explorador de MTS con el fin de eliminar y reinstalar el paquete que contiene la clase. Si estableció el modo de compatibilidad binaria para el componente, el programa le advertirá de que se produjeron cambios.
Iniciar el depurador mientras se ejecuta un componente en MTS
Si ejecuta un componente fuera del depurador y a continuación decide iniciar la depuración, es posible que una instancia del componente siga en ejecución en MTS cuando lo inicia en el depurador. MTS detectará esta condición e intentará cerrar sin aviso la instancia que controla. Para evitar este problema, elimine el componente del explorador de MTS antes de iniciar la depuración.
Depurar Componentes MTS no registrados
Un componente MTS puede ejecutarse en el depurador de Visual Basic sin necesidad de registrarlo en el catálogo de MTS. En este caso, el componente no será visible in el explorador de MTS. Es preferible depurar componentes no registrados, ya que esto evita un cierto número de problemas descritos en otros puntos de esta sección.
Distribución y depuración
Para distribuir apropiadamente un componente MTS, necesita generar el componente como archivo DLL, asegurarse de que el componente no está ejecutándose en ninguna sesión de depuración y a continuación ejecutar el Asistente de empaquetado y distribución. Es posible abrir el componente en Visual Basic pero no puede estar activo en una sesión de depuración.
Los componentes MTS se ejecutan en el depurador como si se tratase de un paquete de biblioteca
El entorno ejecutable de MTS trata a los componentes de Visual Basic que van a depurarse como si perteneciesen a un paquete de biblioteca, aunque los componentes se registren con MTS como pertenecientes a un paquete de servidor. Los paquetes de biblioteca no admiten el seguimiento de componentes, la comprobación de responsabilidades o el aislamiento de procesos.
Dado que los componentes de MTS que van a depurarse se comportan como si se encontrasen en un paquete de biblioteca, no puede llevar a cabo la depuración de la seguridad en el entorno de desarrollo Visual Basic. La activación remota del componente depurado usará los atributos de seguridad de Visual Basic. No obstante, la activación remota de un componente que se ejecuta en el entorno ejecutable de MTS (mtx.exe) utilizará en el explorador de MTS los atributos de seguridad establecidos para dicho paquete en particular. Para depurar los problemas de seguridad, conviene utilizar el entorno de desarrollo de Visual C++.
Errores en componentes causan la interrupción de la ejecución de Visual Basic
Un componente MTS que vaya a depurarse se ejecuta en el mismo proceso que el entorno de desarrollo de Visual Basic, por lo que un error en el componente interrumpirá también la ejecución de Visual Basic. Igualmente, el ejecutable del entorno de MTS cierra automáticamente el proceso ejecutable cuando detecta una incoherencia en su estado interno. En estos casos, MTS mostrará un cuadro de diálogo para explicar la situación, la ventana de Visual Basic desaparecerá y se registrará el suceso en el registro de sistema de Windows NT. Compruebe el Visor de sucesos de Windows NT así como otros temas de este documento para obtener explicaciones posibles para el problema.
No hay soporte para clases de Web con transacciones
Las clases de Web con transacciones de Visual Basic no están admitidas en Visual Basic 6.0.
Se pasa por alto la clave de registro RunWithoutContext
Visual Basic 6.0 pasa por alto la clave de registro RunWithoutContext. Esta clave ya no es necesaria con la depuración integrada de objetos de MTS en Visual Basic 6.0, ya que las características proporcionadas por el objeto de context están ahora disponibles durante la depuración.
Uso de IObjectControl
Si necesita ejecutar código durante el inicio o la terminación de su objeto MTS, debería implementar la interfaz IObjectControl (desde la biblioteca de tipos de Microsoft Transaction Server) y utilizar las funciones Activate y Deactivate. El ejecutable de MTS llama a estas funciones durante el inicio y la terminación de su objeto. Es preferible usar las funciones de IObjectControl en lugar de Class_Initialize y Class_Terminate debido a las limitaciones descritas a continuación.
Es posible escribir código para obtener acceso al objeto Context en las funciones Activate y Deactivate. Sin embargo, debido al modo en que el ejecutable de MTS activa los objetos, no conviene insertar puntos de interrupción en IObjectControl::Deactivate o en IObjectControl::CanBePooled.
El depurador puede reactivar objetos liberados por MTS
Visual Basic 6.0 puede reactivar objetos de MTS mientras se depura en modo paso a paso a través de un cliente. Dado el modo en que Visual Basic 6.0 extrae la información acerca de los objetos, se trata de un comportamiento previsible. Por ejemplo, considere el código siguiente:
Dim x as object Set x = CreateObject("MyApp.Class") x.Test Set x = NothingCuando el método x.Test llama a SetComplete, MTS libera inmediatamente a x de la memoria, pero x no ha sido todavía establecido a Nothing. Cuando x.Test vuelve, el depurador de Visual Basic llama al método QueryInterface de x acerca de la interfaz IProvideClassInfo. El envoltorio de contextos asociado con x crea una instancia nueva de MyApp.Class para ofrecer servicio a la llamada a QueryInterface. Como resultado, verá a dicho objeto no inicializado en el depurador tras el retorno de x.Test. Tal objeto sólo aparece en el depurador y queda eliminado por la siguiente instrucción que establece x a Nothing.
Objeto Dictionary
Introducción al objeto Dictionary
Visual Basic 6.0 incluye un nuevo objeto Dictionary que puede usar en lugar de un objeto Collection o de una matriz. Un objeto Dictionary es el equivalente de la matriz asociativa tal y como se utiliza en PERL y en otros lenguajes de programación. El objeto Dictionary ofrece propiedades y métodos adicionales que no están disponibles para colecciones o matrices.
El objeto Dictionary está incluido en la bibilioteca Microsoft Scripting Runtime (Scrrun.dll) que se comercializa con Visual Basic 6.0. Debe agregar una referencia a Scrrun.dll con el fin de usar el objeto Dictionary en su proyecto.
Para aprender más acerca del objeto Dictionary efectúe una búsqueda en pantalla con la opción Buscar sólo títulos activada acerca de "Dictionary (Objeto)" en la documentación de Visual Studio 6.0 de la biblioteca MSDN.
Visual Component Manager
Problemas conocidos de Visual Component Manager
El tema "Archivos relacionados (ficha del cuadro de diálogo Propiedades de componente)" no es correcto
Referencia de la interfaz de usuario de Visual Component Manager: el tema "Archivos relacionados (Ficha, cuadro de diálogo Propiedades de componente)" afirma incorrectamente que la ficha se utiliza para mostrar y agregar archivos relacionados con el componente seleccionado. De hecho, no es posible modificar ninguna información mostrada por la ficha. Tan sólo puede agregar archivos relacionados a un componente cuando publica o vuelve a publicar el componente. Para obtener más información, efectúe una búsqueda en pantalla con la opción Buscar sólo títulos activada acerca de "Publicar componentes" en la documentación de Visual Studio 6.0 de la biblioteca MSDN.
Eliminar las claves de registro de Repository 1.0
Si instaló VCM 5.0 (antes disponible para la descarga desde el Web) tendrá la siguiente configuración de claves en el registro de Windows. Estas claves eran necesarias para VCM 5.0 y la versión 1.0 de Repository. Si encuentra las siguientes entradas del Registro, su eliminación es segura y puede, de hecho, mejorar el rendimiento de VCM 6.0.
- HKEY_LOCAL_MACHINE\Software\Microsoft\Repository\Engine\CacheMaxAnnProps
- HKEY_LOCAL_MACHINE\Software\Microsoft\Repository\Engine\CacheMaxObjects
- HKEY_LOCAL_MACHINE\Software\Microsoft\Repository\Engine\CacheRelshipMaxCollections
- HKEY_LOCAL_MACHINE\Software\Microsoft\Repository\Engine\CacheRelshipMaxRows
- HKEY_LOCAL_MACHINE\Software\Microsoft\Repository\Engine\MaxRowCacheAge
Agregar tablas de Repository a un archivo .MDB existente
Si intenta abrir un archivo .MDB existente desde un VCM que no es una base de datos de Repository, es decir, que no contiene una estructura ni tablas de Repository, el programa le pregunta si desea agregar las tablas de Repository a la base de datos. No conviene hacer esto en una utilización normal; Repository debería estar generalmente en una base de datos separada. La operación dará resultado, pero pueden ser necesarios hasta 10 minutos para crear la estructura de Repository en un archivo .MDB existente.
Para crear un nuevo archivo .MDB marcado que contenga la estructura de Repository, haga clic con el botón secundario del mouse en la el contorno de la carpeta esquema, haga clic en Repository, después en Nuevo y, a continuación, escriba el nombre del archivo que desea crear.
Explorador de rendimiento de aplicaciones
Problemas conocidos del Explorador de rendimiento de aplicaciones
Configurar la seguridad de automatización al usar componentes del APE remoto
Con el fin de utilizar Automatización remota (RA) para comunicar con componentes del APE remoto, puede ser necesario configurar la seguridad de RA mediante el Administrador de conexiones de automatización remota (Racmgr32.exe).
Para configurar la seguridad de RA
- Inicie Racmgr32.exe y haga clic en la ficha Acceso del cliente.
- Active "Permitir todas las creaciones remotas" o bien "Permitir creaciones remotas con clave".
- Si activó "Permitir creaciones remotas con clave", asegúrese de que la casilla de verificación "Permitir activación remota" está activada para cada componente del APE.
RA admite los niveles de autenticación siguientes:
Nombre
Valor
Descripción
Default
0
Utiliza el valor predeterminado de Red.
None
1
No hay autenticación.
Connect
2
La conexión con el servidor es autenticada.
Call
3
Realiza la autenticación sólo al inicio de cada llamada a procedimiento remoto, cuando el servidor recibe la petición. No se aplica a secuencias de protocolo basadas en conexión (aquellas que empiezan con el prefijo "ncacn").
Packet
4
Comprueba que todos los datos recibidos fueron recibidos del cliente previsto.
Packet Integrity
5
Comprueba que no se modificó ningún dato transferido entre el cliente y el servidor.
Packet Privacy
6
Comprueba todos los otros niveles y cifra los valores de los argumentos de cada llamada a procedimiento remoto.
Los perfiles del APE se instalan inicialmente con un nivel de autenticación igual a 1 ("None") porque Windows 95 admite tan sólo dicho nivel de autenticación. Sin embargo, si se desea contar con seguridad adicional, es posible cambiar el nivel de autenticación de un perfil al modificar el archivo de colección del perfil (el archivo Aemanagr.ini) mediante un editor de texto como el Bloc de notas.
Cada perfil empieza con el nombre de la colección entre corchetes, como [Peak performance, synchronous (CPU, Pool)]. Siguen los atributos del perfil, con el formato <nombre>=<valor> (por ejemplo "Task Duration=1"). Para cambiar el nivel de autenticación, cambie el valor del atributo "Authentication" del perfil seleccionado y guarde el archivo.
Problemas de compatibilidad entre el Explorador de rendimiento de aplicaciones (APE) comercializado con Visual Studio 6.0 y la versión para Visual Basic 5.0
Existen problemas conocidos entre el Explorador de rendimiento de aplicaciones (APE) distribuido con Visual Studio 6.0 y el APE suministrado con Visual Basic 5.0.
Para evitar problemas de compatibilidad, elija una de las siguientes opciones:
- Antes de instalar Visual Studio 6.0 y APE en el equipo que tiene la versión del APE distribuida con VB 5, desinstale primero la versión APE de VB y a continuación instale Visual Studio y APE.
- Si instaló Visual Studio 6.0 y APE en el mismo equipo que posee el APE de VB5, desinstale el APE de VB y a continuación vuelva a instalar el APE de Visual Studio.
Ajustar los valores predeterminados para utilizar APE y MTS
Tras instalar la base de datos APETEST en SQL Server, debe ajustar algunos de los valores predeterminados con el fin de utilizar APE y MTS.
Nota Si no lo hizo ya, debe en primer lugar instalar la base de datos APETEST en SQL Server. Para aprender cómo instalar la base de datos APETEST, realice una búsqueda del tema "Asistente para instalación de la base de datos de APE" en MSDN Library para Visual Studio 6.0.
Para configurar la instalación de la base de datos APETEST para operar con MTS
- Inicie Microsoft SQL Enterprise Manager.
- En la carpeta DataBases, haga clic con el botón secundario en la base de datos APETEST y elija Edit.
- Haga clic en la ficha Options.
- Active la casilla de verificación Truncated Log on Checkpoint y haga clic en OK.
- En la carpeta DataBases, haga clic con el botón secundario en la base de datos tempdb y elija Edit.
- Haga clic en Expand.
- En el cuadro Data Device, seleccione <new>.
- En el cuadro de diálogo New Database Device escriba tempdbData en el cuadro Name.
- En el cuadro Size (MB) escriba 10.
- Haga clic en Create now y finalmente haga clic en OK.
- Haga clic en Expand now.
- Haga clic en Expand.
- En el cuadro Log Device elija <new>.
- En el cuadro de diálogo New Database Device escriba tempdbLog en el cuadro Name.
- En el cuadro Size (MB) escriba 10.
- Haga clic en Create now y finalmente haga clic en OK.
Para configurar la cantidad permitida de conexiones de usuario
- Inicie Microsoft SQL Enterprise Manager.
- Haga clic con el botón secundario del mouse en el servidor y haga clic en Configure.
Por ejemplo, si su servidor se llama CORONA, en la ventana secundaria del Server Manager haga clic con el botón secundario del mouse en CORONA y a continuación en Configure.
- Haga clic en la ficha Configuration.
- En el cuadro Configuration, sume al menos 15 al número de conexiones de usuario.
Nota Si ejecuta APETEST en un servidor de bases de datos de producción, es posible que no disponga de permisos de acceso para ajustar el número actual de conexiones de usuario. En este caso, debería solicitar a su administrador de bases de datos que sume al menos 15 al número actual de conexiones de usuarios con el fin de admitir las comprobaciones del APE.
La instalación desde el servidor del Explorador de rendimiento de aplicaciones puede generar un error
Durante la instalación de los componentes en el servidor del APE, puede aparecer un error que hace referencia a una versión incorrecta de OLEAUT32.dll. Puede pasar por alto este error y continuar con la instalación.
Sin embargo, este mensaje de error puede indicar que el paquete de Microsoft Transaction Server no se instaló correctamente. Para confirmar que fue correctamente instalado, ejecute Transaction Server Explorer y busque todos los paquetes de MTS instalados en el equipo. El paquete APE de Visual Studio debería aparecer en la lista.
Para instalar el paquete AEMTSSVC.pkg, ejecute el explorador de MTS Transaction Server desde el menú Inicio e instale el paquete en el equipo local mediante el Explorador de MTS.