Preguntas y Respuestas sobre Visual Basic

Id. de artículo: 550489 - Ver los productos a los que se aplica este artículo
Este artículo se publicó anteriormente con el número E10490
Expandir todo | Contraer todo

Resumen

En este artículo podrá encontrar las preguntas más frecuentes realizadas sobre Microsoft Visual Basic 4.0.

Más información

  1. ¿Existe una actualización de Visual Basic 4.0?

    Respuesta: Sí, Microsoft tiene disponible la release 4.0a de Visual Basic para usuarios registrados de la versión 4.0. Aclararemos que no se trata de una nueva versión del producto(la siguiente versión a la 4.0 es la 5.0), sino más bien es una actualización de algunos de los componentes de Visual Basic 4.0.

    Básicamente la release 4.0 incluye actualizaciones de controles OCX(entre ellos el DBGrid, el control SSTab y los controles de Windows 95), actualizaciones de componentes de 32 bits tales como RDO/RDC, VBA, DAO, etc. También han sido subsanados algunos errores aparecidos en la versión 4.0.

    La versión empresarial también incluye una nueva release 4.0a de Visual SourceSafe. El fichero VB.EXE no ha cambiado.

    En España, esta actualización puede adquirirse a través del Servicio de Atención al Cliente de Microsoft(tfno: 902-197198).
  2. ¿Qué es y cómo puedo obtener VBScript?

    Respuesta: Visual Basic Scripting Edition(más conocido por la abreviatura de VBScript) es un subconjunto del lenguaje Microsoft Visual Basic. Si bien no va asociado al producto Visual Basic en sí, es decir, no se necesita el entorno de Visual Basic para programar VBScript.

    Actualmente VBScript forma parte de Microsoft Internet Explorer 3.0 y de Internet Information Server 3.0. Este lenguaje está enfocado al desarrollo de aplicaciones para Internet, y el código puede incluirse en páginas HTML o ASP de una forma muy simple. Basta con incluir la etiqueta:
    
             <SCRIPT LANGUAGE="VBScript">
    
                ' Código VBScript
    
             </SCRIPT>
    
    
    Microsoft tiene una página Web donde puede localizar extensa documentación y referencia del lenguaje VBScript así como nuevas versiones:
    http://msdn2.microsoft.com/en-us/library/ms950396.aspx
  3. ¿Cómo se pueden introducir valores en una celda de un dbgrid?

    Respuesta: Visual Basic 4.0 incluye el control DBGrid, diseñado por la firma Apex. La forma correcta y más simple de introducir valores en una celda de un dbgrid ligado a un control de datos (data control), es utilizando la propiedad Value. En cambio, si en un formulario se inserta un código como el siguiente:
    
             Private Sub Command2_Click()
    
                DBGrid1.Columns(2).Value = 438
    
             End Sub
    
    
    se lanzará el error 438 en tiempo de ejecución: "el objeto no acepta esta propiedad o método".

    Realmente la forma correcta de introducir valores en una celda de un dbgrid es a través del control de datos asociado con el dbgrid. De esta forma el código:
    
             Private Sub Command1_Click()
    
                Data1.Recordset.Edit
                Data1.Recordset.Fields(1) = 438
                Data1.Recordset.Update
    
             End Sub
    
    
    cumple la misma labor y no da lugar a ningún mensaje de error.

    Visual Basic 4.0a incluye una actualización del control DBGrid que sí permite utilizar la propiedad Value para introducir valores en celdas.

    Como es lógico, Apex dispone de esta actualización gratuita del True DBGrid versión Standard. Puede conseguirse en el Web de Apex:
    http://www.apexsc.com
  4. ¿Cómo se puede obtener el valor de la celda activa de un DBGrid?

    Respuesta: Lo que se pretende es que al hacer clic sobre una celda de un DBGrid, se obtenga el valor de la celda del DBGrid en un TextBox.

    Para hacerlo, cree un proyecto nuevo en Visual Basic 4.0, de tal forma que Formulario esté compuesto por los siguientes controles con sus correspondientes propiedades:
    
             ControlNombrePropiedadValor
    
             LabelLabel1CaptionContenido de la celda :
    
             TextBoxText1Text""
    
             DataData1Databasenamec:\....\biblio.mdb
             RecordSourceAuthors
    
             DBGridDBGrid1DataSourceData1
    


    Introduzca el siguiente código en el Formulario:
    
             Option Explicit
             'la variable Clickon se usa para detectar cuando se ha 
             'pulsado el ratón
             Dim Clickon As Boolean
    
             Private Sub DBGrid1_Click()
    
                Clickon = True
    
             End Sub
    
             Private Sub DBGrid1_RowColChange(LastRow As Variant, ByVal _
                LastCol As Integer)
             'recupera el valor de la celda al hacer Clic con el ratón
    
                If Clickon Then
    
                   Text1 = DBGrid1.Columns(DBGrid1.Col).Value
                   Clickon = False
    
                End If
    
             End Sub
    
             Private Sub Form_Load()
    
                Clickon = False
    
             End Sub
    
  5. ¿Porqué se producen parpadeos al descargar un formulario con un dbgrid?

    Respuesta: En determinadas circunstancias, al descargar un formulario que contiene un dbgrid, el formulario que lo mostró puede quedar parpadeante, siendo imposible que el usuario vuelva a tomar el control de la aplicación.

    Las condiciones bajo las que se produce este hecho son:
    1. Un Form1 muestra de forma modal un Form2(Form2.Show 1).
    2. Form2 muestra a su vez un tercer formulario Form3 también de forma modal (Form3.Show 1).
    3. Form3 contiene un dbgrid.
    Bajo estas circunstancias, al descargar el Form3, por ejemplo desde un botón con el código:
    
             Private Sub Command1_Click()
    
                Unload Me
    
             End Sub
    
    
    el foco, que debería volver a Form2, queda indeterminado. El resultado es que el formulario Form2 parpadea continuamente, siendo imposible volver a tomar el control en dicho formulario, y por tanto en la aplicación.

    ¿Cómo impedir este comportamiento? Simplemente añadiendo una línea Me.Enabled = False en el evento Unload de Form3:
    
             Private Sub Form_Unload(Cancel As Integer)
    
                Me.Enabled = False
    
             End Sub
    
    
  6. ¿Es posible concatenar dos campos de una tabla en un control DBCombo?

    Respuesta: El control dbcombo de Visual Basic permite visualizar campos independientes de la tabla especificada en un control de datos (Data Control). Hay una forma sencilla de incluir el contenido de dos campos en este control. Para ello basta con indicar en la propiedad RecordSource del control de datos la sentencia SQL apropiada. Por ejemplo:
    
             RecordSource    =   "select au_id & ""  "" & author as 
             enlazado from authors"
    
    
    selecciona y concatena los campos au_id y author de la tabla Authors. El control dbcombo podrá asociarse posteriormente al campo enlazado.
  7. ¿Cómo es el tratamiento de las tablas remotas de sólo lectura cuando se accede vía ODBC?

    Respuesta: Cuando se trabaja con DAO y ODBC, es necesario que las tablas remotas dispongan de un índice único, para que puedan actualizarse.

    Puede utilizar el gestor de base de datos remoto (Por ejemplo Microsoft SQL Server) para crear el índice único para cada tabla, usando el comando CREATE UNIQUE INDEX. La sintaxis básica es :
    
             CREATE UNIQUE INDEX <index_name>
             ON [[<database.>]<owner.>]<table_name.> (<column_name>
                [, <column_name>]...)
    
    
    Puede también ejecutar este comando con una consulta SQL pass- through desde Microsoft Visual Basic.
  8. ¿Cuál es la causa del mensaje de error: Error 3421: "Data type conversion error"?

    Respuesta: Se produce al intentar grabar un registro que contenga algún campo vacío. El error se puede producir con distintos tipos de campos, dependiendo de los soportados por el formato de la base de datos (Fecha/Hora, Numérico, Boolean, Moneda.....) y tanto sobre bases de datos con formato Access, como con bases de datos externas (ISAM como por ejemplo FoxPro, u ODBC como SQL Server).

    Una de las posibles soluciones es comprobar en el evento Validate del control Data1 si Txtfechahora (control TextBox asociado al campo) está vacío y si se ha modificado, en tal caso se asignaría una valor nulo al campo del Recordset. Por ejemplo:
    
             Private Sub Data1_Validate(Action As Integer, Save As _
                Integer)
    
                If Txtfechahora.Text = "" And Txtfechahora.DataChanged _
                   Then
    
                   Data1.Recordset.Edit
                   Data1.Recordset.Fields("fecha/hora") = Null
                   Data1.Recordset.Update
    
                End If
    
             End Sub
    
    
  9. ¿Cuál es la causa del mensaje de error: "Error 3426 y 3020 - Diferente números de error con 16-bit/32-bit"?

    Respuesta: Al ejecutar el método Update sobre un recordset, el error que se produce es diferente dependiendo de la versión de VB4, 16 o 32- bit:
    
             16-Bit 
             --------
    
             Run-time error '3426':
             The action was canceled by an associated object.
    
             32-Bit
             --------
    
             Run-time error '3020':
             Update or CancelUpdate without AddNew or Edit.
    
    
    Para corregirlo ejecute el método Edit del recordset, justo antes que el método Update :
    
             Data1.RecordSet.Edit
             Data1.RecordSet.Update
    
    
  10. ¿Cómo se puede cambiar la referencia a la librería de objetos de Excel en Ingles (xl5en32.olb)?

    Respuesta: El error que se recibe al intentarlo es : "La configuración de idioma para la biblioteca de objetos es incompatible con el proyecto actual"

    Esta técnica modifica un fichero de proyecto VBP existente para incluir la referencia a la librería de objetos de Microsoft Excel en Ingles (xl5en32.olb):
    1. Guarde y cierre el proyecto con la referencia a la librería de objetos en Español (xl5es32.olb).
    2. Abra en un editor de texto, como el NOTEPAD.EXE, el fichero de proyecto VBP y cambie la siguiente referencia a Microsoft Excel :
      
                     Reference=*\G{00020813-0000-0000-C000- _
                     000000000046}#1.0#a#_
                     C:\MSOFFICE\EXCEL\XL5ES32.OLB#Biblioteca de objetos _
                     de Microsoft Excel 5.0
      


      por :
      
                     Reference=*\G{00020813-0000-0000-C000- _
                     000000000046}#1.0#9#_
                     C:\MSOffice\Excel\Xl5en32.olb#Microsoft Excel 5.0 _
                     Object Library
      
    3. Guarde el fichero VBP y cierre el editor de texto.
    4. Arranque Microsoft Visual Basic 4.0 y cargue y guarde el proyecto.
    5. Elija Herramientas | Referencias. La librería de objetos en Inglés aparecerá en la lista en vez de la Española. Para los nuevos proyectos que cree, aparecerá en la lista la Española. Para que aparezca siempre la Inglesa en cualquier proyecto que cree, introduzca la referencia anterior en el fichero de proyecto AUTO32LD.VBP.

Propiedades

Id. de artículo: 550489 - Última revisión: miércoles, 8 de agosto de 2007 - Versión: 3.1
La información de este artículo se refiere a:
  • Microsoft Visual Basic 4.0 Standard Edition
Palabras clave: 
preguntas spanishkb p&r respuestas kbfaq 4.0 vba KB550489

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com