Q167167: INFO: Visual Basic 5.0 README.TXT File

Article: Q167167
Product(s): Microsoft Visual Basic for Windows
Version(s): 5.0
Operating System(s): 
Keyword(s): kbinterop kbtool kbVBp500
Last Modified: 11-JAN-2001

-------------------------------------------------------------------------------
The information in this article applies to:

- Microsoft Visual Basic Learning Edition for Windows, version 5.0 
- Microsoft Visual Basic Professional Edition for Windows, version 5.0 
- Microsoft Visual Basic Enterprise Edition for Windows, version 5.0 
-------------------------------------------------------------------------------

SUMMARY
=======

The information below includes the last-minute documentation and workarounds for
Visual Basic 5.0 that were not added to the ReadMe.Hlp file installed with
Visual Basic 5.0. This information can also be found in the README.TXT file that
ships with Visual Basic 5.0 on the Visual Basic 5.0 CD- ROM. This file is not
copied to the computer as part of the installation.

MORE INFORMATION
================

Microsoft Visual Basic 5.0 ReadMe.Txt

CONTENTS
--------

1. Unsigned Cabinet Files for Internet Download.

2. Use RichTextBox for Multi-line Capability on the SSTab Control.

3. Converting Replicated Databases.

4. Opening a Replica Database Created Through Visual Basic Code.

5. Removal of Implicit Transaction for SQL DML Statements.

6. GPF When Running Queries on Attached ODBC Data Sources.

7. Machines with More Than 1GB RAM.

8. Opening Jet 2.X File Format MDBs in Exclusive Mode.

9. Download Fails in Components with JET Dependency.

10. Issues with Entry of Non-Latin Characters.

11. Rich Error Handling Suggested in Initialization Code for ActiveX
  Documents.

12. App.Path Property and CurDir Function May Return UNC Paths,
  Depending on How the Program/Project is Run.

13. Fix to Excel Sample Code in Programmer's Guide.

14. Print Method Is Not Listed in the Object Browser or with Objects
  it Applies To.

15. Internet Transfer Control: Error Constants Updates.

16. Component Download Fails for DCOM Projects.

17. Controls that Support DataBindings Property at Design Time.

18. ActiveX Document Internet Download Issues.

19. Download Problems with Multiple VB5-Authored Controls on a
  Single HTML Page.

20. ActiveX Designers May Not be Used in Unattended Servers.

21. GPFs on Startup of Visual Basic 5.0.

22. Visual Basic 4.0 Event Procedures May Cause Errors in
  Visual Basic 5.0.

DETAILS
-------

1. Unsigned Cabinet Files for Internet Download.

  In the \Tools\cabinets folder on the Visual Basic 5.0 compact disc, you
  will find run-time and control .cab files used for Internet component
  download. These .cab files are not digitally signed so they should only
  be used for testing Visual Basic 5.0-authored control download.
  Additionally, these .cab files are not suitable for referencing directly
  from an HTML page. For example, you can not point to the Comdlg32.cab
  supplied on the Visual Basic 5.0 compact disc directly from an HTML page
  using the CODEBASE tag.

  The latest digitally-signed .cab files are available on the Microsoft
  Web site. To download these .cab files, go to:
  http://www.microsoft.com/vbasic/icompdown/ for more information.

  For more information on the Setup Wizard, digital signing, safety, and
  licensing, read the file Compdown.doc in the \Tools\docs directory on
  the Visual Basic 5.0 compact disc.

2. Use RichTextBox for Multi-line Capability on the SSTab Control.

  Use the RichTextBox control to provide multi-line capability on the
  SSTab control.

  The following steps on NT 4.0 may result in an application error and
  cause Visual Basic to close:

  A. Open an ActiveX control project.

  B. Put an SSTab control on the UserControl object.

  C. Put a TextBox control on the SSTab control.

  D. Set the TextBox control's Multi-Line property to TRUE.

  E. Close the UserControl designer. When you're prompted to save
    changes, click No.

  F. Open the File menu, choose the Add Project command, and double-
    click the Standard EXE icon on the New Project dialog.

  G. Put your ActiveX control on the form.

  H. Press the F5 key to run the project.

  I. Click the Stop button on the Visual Basic 5.0 toolbar.

  The following points are key:

   - The SSTab control is on the UserControl object.

   - The TextBox is on the SSTab control.

   - The TextBox control's Multi-Line property is set to TRUE.

3. Converting Replicated Databases.

  Visual Basic 5.0 cannot open a replica created with Visual Basic 4.0.
  You must convert the Design Master to Visual Basic 5.0 and then
  synchronize with the associated replicas.

4. Opening a Replica Database Created Through Visual Basic Code.

  If you make a database replicable using Data Access Objects (DAO)
  through Visual Basic 5.0 and then move the database to a different
  directory without first opening it, you will receive an error when you
  try to open the database. If you create a replica using DAO and then try
  to open the replica before opening the Design Master, you will also get
  an error. To solve this problem, when you replicate a database using
  DAO, open the Design Master in Visual Basic 5 and synchronize all
  replicas before moving the Design Master or opening a replica.

5. Removal of Implicit Transaction for SQL DML Statements.

  Even with all the work in Jet 3.0 to eliminate transactions in order to
  obtain better performance, SQL DML statements were still placed in an
  implicit transaction. This negated some of the performance work and
  typically resulted in DAO looping code to substantially outperform SQL
  DML statements. Jet 3.5 has removed that restriction and SQL DML
  statements are no longer placed in an implicit transaction. This results
  in a substantial performance benefit when running SQL DML statements
  that affects many rows of data.

  While this change provides a substantial performance increase, it also
  introduces a change to the behavior of SQL DML statements. Previously,
  the result of an SQL DML statement would roll back if any part of the
  SQL DML statement could not be completed. This was due to the fact that
  it was placed in an implicit transaction. It is now possible to have
  some of the rows affected by a SQL DML statement to be modified while
  others are not. If this behavior is not desired then the user will need
  to add explicit transactions around the SQL DML statement and sacrifice
  the performance gains.

6. GPF When Running Queries on Attached ODBC Data Sources.

  A GPF occurs if any relationship is defined on an MDB and a subsequent
  query through attached tables to ODBC data sources is used to do a join.
  This only occurs with Access 97 and this release of Jet 3.5 corrects
  that problem.

7. Machines with More Than 1GB RAM.

  All versions of Jet 3.0 and previous versions of Jet 3.5 would not start
  if a machine had more than 1GB RAM. This is fixed in this release of
  Jet 3.5.

8. Opening Jet 2.X File Format MDBs in Exclusive Mode.

  Certain scenarios when using Access 97 and Jet 3.5 would prevent users
  from opening a Jet 2.X file format database in shared mode. This issue
  is addressed in the release of Jet 3.5.

9. Download Fails in Components with Jet Dependency.

  Code download might fail if your Visual Basic component has a dependency
  on MSJet35 and is downloading to a machine with Office 97 installed. As
  with all code download failures, there is no indication to the user as
  to why the failure occurred. Below are the steps a developer should take
  to work around this problem:

  A. Start Setup Wizard, and select Internet Download Setup to create a
   .cab for component download.

  B. Open the Support folder of the location where the control's .cab
    was created. The default location is Win95\Temp\Swsetup or
    WinNT\Temp\Swsetup.

  C. Open the control's .inf file.

  D. Make following changes to the .inf file:

     1. Remove this line from the [Add.Code] section:

        VBAJET32.DLL=VBAJET32.DLL

     2. Remove the entire Section [VBAJET32.DLL].

  E. Save the .inf file.

  F. Run Makecab.exe. Makecab.exe is located in \Setupkit\Kitfil32
    below the folder where Visual Basic is installed. The /f parameter
    needs to be used. To do this, follow the steps below:

     1. Copy Makecab.exe to the Swsetup folder.

     2. Open the Win95 Start menu, select Run, and enter the following
       string: makecab /f yourcontrolname.ddf.

10. Issues with Entry of Non-Latin Characters.

  Many Win32 API functions are coded to use the System LCID setting. If
  the User and System LCID settings don't match, you may see issues in
  Visual Basic such as dialogs and controls displaying illegible text on
  entry of characters from non-Latin alphabets.

  It is possible to fix the problem in NT by checking the "Set as system
  default locale" check box in the Regional Settings and then rebooting
  the system. Windows 95, on the other hand, sets the System LCID at
  install time. It is advisable to install the localized version of
  Windows 95 with the same language as the User LCID. If using the Pan-
  European version of Windows 95, it is necessary to perform a Custom
  Installation and select the correct locale during the setup.

  However, while Visual Basic controls may behave properly once System and
  User are synchronized, entry of non-Latin characters will still result
  in illegible text displaying in Visual Basic's design environment (IDE)
  dialogs. Functionality is maintained, however.

11. Rich Error Handling Suggested in Initialization Code for ActiveX
  Documents.

  When untrapped errors occur in the Initialize event of an ActiveX
  document, Internet Explorer may display an error message indicating that
  it is unable to load the .vbd file. It is strongly suggested that you
  put rich error handling in place in any initialization code for
  UserDocument objects.

12. App.Path Property and CurDir Function May Return UNC Paths, Depending
  on How the Program/Project is Run.

  In Visual Basic 5.0, App.Path returns a UNC path (\\server\share...)
  rather than a drive path (E:\folder\folder...) in the following
  circumstances:

   - When a project is run after being loaded from a network share, even
     if the network share is mapped to a drive letter.

   - When a compiled Exe is run from a network share, but only if the Exe
     is run using a UNC path.

  This is a change from Visual Basic 4.0 and may cause problems for some
  existing code. The problems for compiled programs are different from the
  problems that occur when running a project in the development
  environment:

  COMPILED EXE: Some projects use the following two lines of code in Sub
  Main to change the current directory (as returned by the CurDir
  function) to match the startup directory (as returned by App.Path):

     ChDrive App.Path
     ChDir App.Path

  ChDrive cannot handle UNC paths and will raise an error when App.Path
  returns a UNC path. You can handle this error by placing On Error Resume
  Next before the ChDrive statement or by testing the first two characters
  of App.Path to see if they are backslashes:

     On Error Resume Next
     ChDrive App.Path
     ChDir App.Path

  This modification handles all cases in which the program is started from
  Windows using a UNC path (for example, in the Run dialog accessed from
  the Start menu), because Windows sets the current directory to a UNC
  path. ChDir handles changes between UNC paths correctly. (The failure of
  ChDrive can be ignored because there is no drive letter for a UNC path.)

  However, the code above will not work if a user runs the program by
  typing a UNC path at the command line of a DOS window. This is because a
  DOS window always has a drive path for the current directory, so CurDir
  is set to a drive path. ChDir does not raise an error, but it fails to
  change the directory from a drive path to a UNC path. The only
  workaround for this is to locate a local drive that's mapped to the
  share specified in the UNC path or to use network commands to create
  such a mapping.

  IN THE DEVELOPMENT ENVIRONMENT: If the project was loaded from a network
  share, either a UNC path or a mapped drive path, then App.Path will
  return a UNC path when the project is run. ChDrive will fail and raise
  an error. ChDir will not raise an error but the directory will not be
  changed. The only workaround is to set the drive and directory manually,
  as in the following example:

      Const PROJECTSHARE = "E:\VBPROJ\MYPROJECT"
      #Const Debug = True
      #If Debug Then
          ChDrive PROJECTSHARE
          ChDir PROJECTSHARE
      #Else
          On Error Resume Next
          ChDrive App.Path
          ChDir App.Path
      #End If

  If more than one developer might open the project on the network share,
  a DOS environment variable can be used to allow each developer to have
  his or her own mapping for the share:

      #Const Debug = True
      #If Debug Then
          ChDrive Environ$("MYPROJECTDIR")
          ChDir Environ$("MYPROJECTDIR")
      #Else
          On Error Resume Next
          ChDrive App.Path
          ChDir App.Path
      #End If

  The value of MYPROJECTDIR specifies the mapped drive letter and the
  path. For example: SET MYPROJECTDIR=M:\VBProj\MyProject.

  Note that the Help topics for the Path property, ChDir statement,
  ChDrive statement, and CurDir function do not mention this changed
  behavior.

13. Fix to Excel Sample Code in Programmer's Guide.

  In Chapter 10 of the Programmer's Guide "Programming with Components,"
  the section "Working with ActiveX Components" contains sample code
  adding values to Excel. Add the line:

    xlBook.Close

  immediately above the statement xlApp.Quit. This ensures that all Sheet
  objects are released.

14. Print Method Is Not Listed in the Object Browser or with Objects
  it Applies To.

  The Print method applies to the Form, Printer, PictureBox, UserControl,
  UserDocument, PropertyPage, and Debug objects.

  In Help, the Print method should appear in the Methods lists of all of
  these objects although, in fact, it only appears for the Debug object.
  In addition, these objects should all appear in the Applies To list in
  the Print Method topic although, in fact, only the Debug object appears
  there.

  For technical reasons, the Print method does not appear in the Object
  Browser, even though it is a valid method of the objects listed above.

15. Internet Transfer Control: Error Constants Updates.

  The Help topic "Trappable Errors for the Internet Transfer Control,"
  contains the following duplicates and errors:

  A. There are two entries for icnetTimeout (35768). The second can be
    ignored.

  B. The value for the constant icIncorrectPassword should be 35780.

  C. The value for the constant icHttpToHttpsOnRedir should be 35805.

  D. The value for the constant icHttpToHttpOnRedir should be 35806.

  E. The description of icFtpDropped (35877) should be
    "FTP - Connection dropped."

16. Component Download Fails for DCOM Projects.

  The .cab installation will work if the RemoteReg .cab is located in the
  same folder as Msracli.cab. If Msracli.cab is located in another
  location, component download will fail. The workaround is to modify the
  .inf file so that Msracli.cab is located in the local folder. This means
  you need access to Msracli.cab and must know how to build a .cab without
  Setup Wizard.

17. Controls that Support DataBindings Property at Design Time.

  The online Visual Basic Help documents the following controls as having
  a DataBindings property that can be accessed at design time. Some of
  them, however, do not, in fact, support accessing their DataBindings
  property during design time even though they have a DataBindings
  property. The following list clarifies which controls support the
  DataBinding property at design time:

     DBList      - Yes
     DBCombo     - Yes
     DBGrid      - No
     Toolbar     - No
     TabStrip    - No
     MaskedEdit  - Yes
     MSChart     - No
     MSFlexGrid  - No
     MCI         - No
     RichTextBox - Yes
     Slider      - No
     SSTab       - No

18. ActiveX Document Internet Download Issues.

  The sample HTML page created by the Setup Wizard for ActiveX Document-
  based projects will download and register the Visual Basic 5.0-created
  EXE or DLL and then jump to the .vbd file. The jump from the HTML page
  to the .vbd file will prevent any merged menus from displaying.
  Additionally, the DataChanged method will not operate correctly. The
  workaround is to replace the Setup Wizard-generated HTML Window_Onload
  event code with the following (where Userdocument1.vbd refers to your
  vbd filename):

      Sub Window_OnLoad
         Window.Navigate "userdocument1.vbd"
      End Sub

  NOTE: You can bypass the HTML page altogether and navigate directly to
  the .vbd file after the Visual Basic 5.0-created .exe or .dll has been
  successfully downloaded to the client. For the latest information on the
  Setup Wizard and ActiveX Document Internet download, go to
  http://www.microsoft.com/vbasic/icompdown/ and read the file
  Compdown.doc in the \Tools\docs directory on the Visual Basic 5.0
  compact disc.

19. Download Problems with Multiple VB5-Authored Controls on a Single
  HTML Page.

  If a single HTML page will contain multiple Visual Basic-authored
  ActiveX controls, put all of the controls into a single Visual Basic
  project and run the Setup Wizard on that project. The Setup Wizard will
  create a single CAB file for all the controls. The containment of all
  controls within a single CAB file minimizes download time and removes
  the possibility of files being downloaded more than once.

20. ActiveX Designers May Not Be Used in Unattended Servers.

  Visual Basic 5.0 does not support the use of ActiveX designers in multi-
  threaded (unattended) components. The UI prevents this in most cases,
  but there is a small loophole present that allows you to build a Visual
  Basic component containing ActiveX designers and mark the server as
  "unattended-execution," which in turn registers that component as
  "Apartment-Threaded." Doing this is unsupported and does not produce
  favorable results. For example, marking a project that contains a
  UserConnection designer as "unattended execution" and using it in a
  multi-threaded environment, such as the Microsoft Transaction Server,
  results in "Out of Memory" errors or more severe problems.

  The workaround is to always compile projects containing ActiveX
  designers as single-threaded. In other words, in these cases do not
  check "Unattended Execution."

21. GPFs on Startup of Visual Basic 5.0.

  If you get a GPF during startup of Visual Basic 5.0, it is probably
  caused by an incompatible add-in. You should edit the Vbaddin.ini and
  set all entries to zero. Once the entries are set to zero, Visual Basic
  5.0 will not load any add-ins on start-up. You can then use the Add-In
  Manager to add back add-ins that are working properly.

  If you get a GPF on start-up of the Visual Basic Learning Edition, it
  may be caused by add-ins installed by the Visual Basic Control Creation
  Edition Beta. The workaround is the same as above. Also, you should
  install the released version of the Control Creation Edition.

22. Visual Basic 4.0 Event Procedures May Cause Errors in
  Visual Basic 5.0.

  Visual Basic 4.0 did not recognize some typelib-defined data types, such
  as OLE_HANDLE. When these types were used in event arguments, Visual
  Basic 4.0 would replace them with the corresponding native type (in this
  case, Long). Thus, Visual Basic 4.0 would produce the following event
  procedure for an event with an argument of type OLE_HANDLE:

     Private Sub SomeControl1_SomeEvent(ByVal oh As Long)

     End Sub

  If this same event procedure prototype is created in Visual Basic 5.0,
  the correct data type will be used:

     Private Sub SomeControl1_SomeEvent(ByVal oh As stdole.OLE_HANDLE)

     End Sub

  If code generated in Visual Basic 4.0 is imported into Visual Basic 5.0,
  the event types will not match and the code will not compile. The
  solution is to cut the code from the existing event procedure, delete
  the event procedure prototype and recreate it in Visual Basic 5.0, and
  then paste the code back into the event procedure.

Additional query words:

======================================================================
Keywords          : kbinterop kbtool kbVBp500 
Technology        : kbVBSearch kbAudDeveloper kbZNotKeyword6 kbZNotKeyword2 kbVB500Search kbVBA500 kbVB500
Version           : 5.0
Issue type        : kbinfo

=============================================================================