LONG: Corrections for Errors in VB Version 3.0 ManualsLast reviewed: February 26, 1996Article ID: Q100369 |
The information in this article applies to:
- Standard and Professional Editions of Microsoft Visual Basic for Windows, version 3.0
SUMMARYThis article is a master list of corrections for documentation errors in the Microsoft Visual Basic version 3.0 for Windows manuals. Included are corrections to version 3.0 of the following manuals and files that ship with both the Standard and Professional Editions:
MORE INFORMATIONCorrections to the Online Help File VB.HLP
Rediminsioning an ArrayHelp says that you can rediminsion an array from -32768 to 32767. This is incorrect. You can, however, redimension an array as follows:
Sub Form_Load () Redim x%(-32767 To -1) End Sub-or-
Sub Form_Load () Redim x%(1 To 32767) End SubNOTE: The manual and online help do not state this but the number of indexes for an array seem to be limited to 32K elements. Therefore, you can do a Redim x%(-32767 To -1) or Redim x%(1 To 32767), both of which stay within 32K elements. You cannot do a Redim x%(-32767 To 32767) because this is 64K elements, which will cause a subscript out-of-range error.
Error Message HelpOnline Help is not available for dialogs or error messages that occur at design time. For ISAM errors, use the Search dialog in Help.
"Couldn't find installable ISAM"An external file dynamic link library (DLL) file couldn't be found. This file is required for operations such as attaching or accessing external tables. Possible causes: 1) An entry in the [Installable ISAM] section in VB.INI or <APPNAME>.INI is incorrect. For example, this error occurs if you're accessing a Paradox external table, and the Paradox entry of the .INI file points to a nonexistent directory. Exit Visual Basic, make necessary corrections in VB.INI or <APPNAME>.INI using Microsoft Windows Notepad or another text editor, restart Visual Basic, and try the operation again. 2) One of the entries in the [Installable ISAM] section in VB.INI points to a network drive, and that drive isn't connected. Check to make sure the network is available and the proper drive letter is established, and try the operation again. For additional information, please see the following article(s) in the Microsoft Knowledge Base:
ARTICLE-ID: Q112652 TITLE : PRB: Can't Find Installable ISAM When Run Two DB Apps in VB Attributes PropertyThe Help topic for the attributes property and the DATACONS.TXT file incorrectly list DB_SYSTEMOBJECT as having a value of &H80000002. The correct value is H80000000.
Index Property (Data Access)The information listed in the Index Property (Data Access) Help topic is not correct. Here is the correct information for this topic: Applies To Table objectDescription With data access, determines which existing index is the current index used to sort records in a Table and in recordsets created from that Table. The default is blank. Not available at design time; read/write at run time.Syntax table.Index [ = indexname ]Remarks The order of the data in a table is determined by the order in which the data is added to the table. To alter the order of records fetched from the table when using a Table object, set the Index property to the name of an index in the Indexes collection of the Table's TableDef object. For example, to set the index to be used on a Seek against the Titles table: Dim Tb as Table, Db as Database Set Db = OpenDatabase("Biblio.MDB") Set Tb = Db.OpenTable("Titles") Tb.Index = "PubID" Tb.Seek "=", 3 The specified index must already be defined. If you set the Index property to an index that doesn't exist, or if the index isn't set when you use the Seek method, an error occurs. In the Professional Edition, you can create a new Index in a Table by creating a new Index object, setting its properties, then appending it to the Indexes collection of the Table's TableDef. The records in a Table can be ordered only according to the indexes defined for it. To sort the Table records in some other order, create a new Index for the table and append it to the Table's Index Collection, or create a Dynaset or Snapshot that has a different sort order. To specify the sort order for Dynasets and Snapshots, use the Sort property after the Dynaset or Snapshot has been created. You can also set the order of a Dynaset or Snapshot by including an Order By clause in a SQL statement used to define the Dynaset or Snapshot. The Index property of a control array element is not the same as the Index property of a data access object.Data Type String OpenQueryDef Example CodeIn the example, the name of the parameter is "Enter State" not "State Wanted," and the name of the existing query is "By State" not "Get State."
Click EventChange the following two bullet items:
Scrollbar PropertyThe following statement from the help is incorrect: "If no horizontal scroll bar is specified for a text box and MultiLine is True, the text will automatically wrap even if the WordWrap property is False." The WordWrap property applies only to Labels. Corrections to "Programmer's Guide"
(Page 160) Numeric Values Stored in Variants -- IsNumeric() Function The first line of code on the page indicates that the following would return True. IsNumeric("$100") In fact, it and all currency figures used with the IsNumeric() function return False. (Page 188) The New Keyword In the example at the top of the page, the local form variable F is declared with the New keyword using the Dim statement. To make the form variable and the loaded form instance persist, use a Static or Global variable instead. (Page 194) Determining the Type of an Object Variable You can use the If...TypeOf statement to determine the control type of a custom control: If TypeOf object Is objecttype The identifier you use for 'object' is the class name of the custom control. See the section "Specific Control Object Types" (P. 186) for more information. (Page 461) The Options Property The constant values shown are in hexidecimal and should be preceded with the &H notation. For example, DB_SQLPASSTHROUGH = &H40, not decimal 40. See online Help (Options Property) or the file DATACONS.TXT for the correct values. (Page 454) BIBLIO.MAK and DATAMGR.EXE The second sentence of the first paragraph should read: If you installed the sample applications, you will find this application in the \DATACTRL subdirectory of the Visual Basic SAMPLES subdirectory (\VB\SAMPLES\DATACTRL). The third sentence of the second paragraph shoul read: You will find DATAMGR.EXE in the main Visual Basic directory (\VB). (Page 456) Getting a Quick Start. Item 6. Delete the second sentence which begins "Set the DataSource property for Label1 ..." under item 6. (Page 458) Setting Database Properties at Design Time This section incorrectly states that at design time the RecordSource property of the Data Control lists all tables and queries. The RecordSource property lists the tables in a database, not the queries. At design time, if the DatabaseName or Connect property of the Data Control is set, the RecordSource property will retrieve a list of all available tables. If the user knows of a valid SQL query for the database, the RecordSource property will allow the query to be typed in, but it does not list the queries. (Page 459) The Connect Property In the table for the Connect property setting, change the Connect setting for Paradox from the following: paradox;pwd=password; to: paradox 3.x;pwd=password; NOTE: The database name in the Connect setting must match (except for case) the database name in the VB.INI file. See page 148 of "Professional Features Book 2." (Page 460) The DatabaseName Property The first paragraph on this page incorrectly says the RecordSource property of the Data Control lists all tables and queries. The RecordSource property lists the tables, not the queries. At design time, if the DatabaseName or Connect property of the Data Control is set, the RecordSource property will retrieve a list of all available tables. If the user knows of a valid SQL query for the database, the RecordSource property will allow the query to be typed in, but it does not list the queries. (Page 462) The RecordSource Property The first sentence in the second paragraph should be changed to remove the reference to queries. Queries are not returned by the RecordSource Property. In other words, change the following: At design time you can choose from a list of database tables and queries by first ... to: At design time you can choose from a list of database tables by first ... In addition, the following text and example should be changed: For example, the following SQL query returns all of the columns in the bibliography for authors who live in New York: Data1.DatabaseName = "BIBLIO.MDB" Data1.RecordSource = "Select * from Titles where state = 'NY'" Data1.Refresh The above should read: For example, the following SQL query returns all of the columns in the bibliography for publishers based in New York: Data1.DatabaseName = "BIBLIO.MDB" Data1.RecordSource = "Select * from Publishers where state ='NY'" Data1.Refresh (Page 465) Adding a New Record In the second paragraph in this section, the last sentence should read, "Notice that using the buttons on the data control or one of the Move methods to move to another record will automatically save your added record." (Page 530) Determining How an Object Is Displayed In the first paragraph, the second sentence should read, "the Icon check box," not "th eIcon check box." (Page 550) Creating Invisible Objects In the sample code, the following line has incorrect syntax: MyWord = ObjVar.SuggestWord MyWord The code should look like this: MyWord = ObjVar.SuggestWord (MyWord) (Page 552) Limitations in Visual Basic Under the discussion "Arrays and User-Defined Types," the third bulleted item should read: "You cannot assign the return value of a property or method to an array variable or a variable of a user-defined type." (Page 554) Closing an Object In the paragraph after the sample code, second sentence: It is not true that invoking a Close method on an object sets variables that refer to the object to Nothing. (Page 582) Determining the Files You Need to Distribute The following additional files are required for distributing your Visual Basic applications: DLL Name Required by (Professional Edition Only) ------------------------------------------------------ PDIRJET.DLL Crystal Reports for Visual Basic PDBJET.DLL Crystal Reports for Visual Basic MSAJT110.DLL Crystal Reports for Visual Basic MSAES110.DLL Crystal Reports for Visual Basic PDSODBC.DLL ODBC and Crystal Reports for Visual Basic (Page 588) Example All three references to CopyFile should end with a ")", not ",0)". (Page 643) Symbol Tables The first bullet item under Module Symbol Table should be under Global Symbol Table: - The actual text of the names of Sub and Function proceduresCorrections to "Language Reference" (Page 21-22) Action Property (OLE)
In the Settings table, in Setting 5, the reference to None in the second sentence of the third paragraph should read as follows: "If the Paste was not successful, the OleType property will be set to 3 (None)." In Setting 12, the constant should be OLE_READ_FROM_FILE, not ReadFromFile. In Setting 14, the constant should be OLE_INSERT_OBJ_DLG. (Page 41) AutoActivate Property In the Note, replace the words "the double-click event" with "a DblClick event." (Page 53) BorderStyle Property The OLE control cannot have a setting of 2. Remove the setting and description for Setting 2 in the OLE control table. (page 57) Caption property For labels, the caption is limited to 1024 characters, not 2048. (Page 65) Check Box Control Add DataField and DataSource to the Properties list. (Page 72) Click Event Change the following two bulleted items: - Selects an item in a combo box or list box, either by pressing the arrow keys or by clicking the mouse button. - Presses the Spacebar when a command button, option button, or check box has the focus. To: - Selects an option button or an item in a combo or list box by pressing the arrow keys or by clicking the mouse button. - Presses the Spacebar when a command button or check box has the focus. (Page 82) Color Property The "Applies To" line should read "Common dialog (Color dialog)." (Page 89) Common Dialog Control Add "FilterIndex" and "MaxFileSize" to the Properties (File dialogs) list. (Page 90) CompactDatabase Statement The Syntax line indicates that both the second and third function parameters are optional. This is incorrect. The second parameter is required. Use DB_LANG_GENERAL as the default. (Page 93) Connect Property In the Note, change "SourceTable" to "SourceTableName." (Page 97) Copies Property The "Applies To" line should read "Common dialog (Print dialog)." (Page 97) Controls Collection The following three statements are incorrect: If TypeOf Frm.Controls(I) Is Not Menu Then Frm.Controls(I).Enabled = State End If Replace them with the following four statements: If TypeOf Frm.Controls(I) Is Menu Then Else Frm.Controls(I).Enabled = State End If (Page 100) CreateDatabase Function Three corrections are necessary: - In the code example, replace "False" with "DB_VERSION10." - In the table above the code example, replace "DB_COMPACT_ENCRYPT" with "DB_ENCRYPT." - The Syntax line indicates that both the second and third function parameters are optional. This is incorrect. The second parameter is required. Use DB_LANG_GENERAL as the default. (Page 111) Data Control Add UpdateControls and UpdateRecord to the Methods list. (Page 112) Database Object In the Properties list, the QueryTimeout Property should be identified as being available only in the Professional Edition. (Page 117) DataText Property In the code example, change the two instances of "MSDRAW" to "MSGRAPH." (Page 134) DefaultExt Property The "Applies To" line should read: "Common dialog (File dialogs)." (Page 144) Dir, Dir$ Functions Line 11 of the sample program is incorrect. It reads: If GetAttr(Path + DirName) And ATTR_DIRECTORY = ATTR_DIRECTORY Then It should read: If (GetAttr(Path + DirName) And ATTR_DIRECTORY) = ATTR_DIRECTORYNOTE: With this line of code, directories with additional attributes can also be found. Simply add the desired attribute constants to the call to the Dir function.
(Page 185) Field Object The Properties list should refer to SourceField and SourceTable, not SourceFieldName and SourceTableName. Line 4 reads: Set MyFd = MyDb("PubId") It should read: Set MyFd = MyDn("PubId") (Page 187) Fields Property The third line of the Example (Professional Edition Only) given at the bottom of the page is incorrect. It should be changed to: TempIndex.Fields = "LName;FName" The correct version has no space between the two fields. (Page 195) FileTitle Property The "Applies To" line should read: "Common dialog (File dialogs)." Add the following to the Remarks section: Note: If the OFN_NOVALIDATE flag is set, the FileTitle property will not return a value. (Page 198) Filter Property (Common Dialog) At the beginning of the topic, add "Applies To...Common dialog (File dialogs)." In the Remarks section, after the third paragraph, add this text: Here is an example of a Filter in which the user can choose text files or picture files that include bitmaps and icons: Text(*.txt)|*.txt|Pictures(*.bmp;*.ico)|*.bmp;*.ico (Page 199) FilterIndex Property The "Applies To" line should read "Common dialog (File dialogs)." (Page 206) Flags Property (Font Dialog) The CF_APPLY constant listed is invalid. Do not use it. (Page 229) Frame Control Add the Name Property to the Properties list. (Page 231) FromPage, ToPage Properties The "Applies To" line should read "Common dialog (Print dialog)." (Page 240) GetAttr Function The final Sub...End Sub block in code should read as follows: Sub File1_Click () Const ATTR_READONLY = 1, ATTR_HIDDEN = 2 ' Declare Const ATTR_SYSTEM = 4, ATTR_ARCHIVE = 32 ' Constants. Dim Attr, FName, Msg ' Declare variables. If Right(Dir1.Path, 1) = "\" Then ' See if root file. FName = Dir1.Path & File1.FileName ' Get file path. Else FName = Dir1.Path & "\" & File1.FileName ' Get file ' path. End If Attr = GetAttr(FName) ' Get attributes. If Attr > 7 Then Attr = Attr Xor ATTR_ARCHIVE ' Disregard 'Archive. Select Case Attr ' Look up attributes. Case 0: Msg = "Normal" Case ATTR_READONLY: Msg = "Read-Only" Case ATTR_HIDDEN: Msg = "Hidden" Case ATTR_HIDDEN + ATTR_READONLY: Msg = "Hidden and Read-Only" Case ATTR_SYSTEM: Msg = "System" Case ATTR_READONLY + ATTR_SYSTEM: Msg = "Read-Only and System" Case ATTR_HIDDEN + ATTR_SYSTEM: Msg = "Hidden and System" Case ATTR_READONLY + ATTR_HIDDEN + ATTR_SYSTEM: - Msg = "Read-Only," + Msg = " Hidden, and System" End Select MsgBox UCase(FName) & " is a " & Msg & " file." ' Display ' message. End Sub (Page 256) hDC Property The Usage line should read: {[form.] [commondialog. | picturebox.] | Printer.}hDC Also, the second paragraph of the Remarks should read: "With a common dialog control, this property returns a device context for the printer selected in the Print dialog box when the..." (the rest of the text remains the same). (Page 258) Height, Width Properties The See Also line should refer to the "Width # Statement," not the "Width Statement." (Page 268) hWnd Property In the example code, the last argument in the SetWindowPos Declare (ByVal f as Long) is incorrect, it should be ByVal f as Integer. As written, the code generates a "Bad DLL Calling Convention" error. Change the Long to Integer and the call works. In addition, the following line of code doesn't work: mnuTopmost.Checked = Not mnuTopmost.checked This is because the Value property of a check box does not accept -1 (the results of NOT on 0), which is the initial value. Replace the incorrect line of code with this code: If mnuTopMost.Checked = 1 Then mnuTopMost.Checked = 0 Else mnuTopMost.Checked = 1 End if (Page 274) Image Control Add DataField and DataSource to the Properties list. (Page 279) Index Property (Data Access) The following information, in the Remarks section, is incorrect: To set this property with a data control, specify the TableDef, set the index, and then Refresh the control: Data1.RecordSource = "Publishers" Data1.Database.TableDefs("Publishers").Index = "PrimaryKey" Data1.Refresh Replace it with the following: You cannot set the Index property with a data control. To use an indexed field in Visual Basic, use a SQL statement similar to the following example: Data1.RecordSource = "SELECT * FROM Publishers ORDER BY Zip" Data1.Refresh By using the ORDER BY clause in the SQL syntax, you can simulate the effect of the Index property. (Page 279) Index Property (Data Access) The "Applies To" says TableDef but should say "Table." (Page 280) InitDir Property The "Applies To" line should read: "Common dialog (File dialogs)." (Page 280) Indexes Collection The See Also section makes reference to a "CreateIndex Method." This method does not exist. The reference should be omitted. (Page 281) Input # Statement The last paragraph, second-to-last sentence is incorrect. Change it to read as follows: "For strings not delimited by double quotation marks, the end of a string is assumed when a comma or the end of a line is encountered." (Page 297) KeyDown, KeyUp Events The See Also should refer to the SendKeys Statement, not the SendKeys Method. (Page 299) KeyPress Events The See Also should refer to the SendKeys Statement, not the SendKeys Method. (Page 303) Label Control Add the DataField, DataSource, and Parent properties to the Properties list. (Page 336-338) ListFields Method In the second table, the fifth and sixth entries in the Field column should be SourceTable and SourceField, not SourceTableName and SourceFieldName. The code example and the headings of the table below it should also refer to SourceTable and SourceField. (Page 345) ListTables Method In Remarks, the first paragraph under the TableType field table should read: "When you use the ListTables method to create a Snapshot, you can evaluate the contents of the Attributes field in the Snapshot by referring to the TableDef property settings table in the Attributes property topic. (Page 361) Max, Min Properties (Common Dialog) At the beginning of the topic, add: "Applies To...Common dialog (Font, Print dialogs)." (Page 363) MaxFileSize Property The "Applies To" line should read: "Common dialog (File dialogs)." (Page 381) MousePointer Property The Note section near the bottom of the page is incorrect. It should read: Note When set for the Screen object, MousePointer changes for the Visual Basic application; that is, it only overrides the application's MousePointer settings. (Page 390) Name Property The "Applies To" line should include the Database object. (Page 418) OpenQueryDef Method In the example, the name of the parameter is "Enter State" not "State Wanted," and the name of the existing query is "By State" not "Get State." (Page 432) Partition Function In the code in Example 3, the second five lines of code duplicate the first five lines and should be deleted. (Page 439) Picture Box Control Add DataField and DataSource to the Properties list. (Page 444) PopupMenu Method In the Syntax line, there should be a comma immediately before the y. (Page 455) PrinterDefault Property The "Applies To" line should read: "Common dialog (Print dialog)." (Page 536-537) SourceFieldName, SourceTableName Properties All references to SourceFieldName and SourceTableName in this topic should refer to "SourceField" and "SourceTable" instead. (Page 538) SourceTableName Property There should be a full entry for the "SourceTableName" topic. See online Help for the text of this topic. (Page 565) Text Box Control The second piece of art is incorrect. It should show a text box on a form but instead, it shows a menu title and menu items on a form. Also, add DataField and DataSource to the Properties list. (Page 595) Validate Event In the third paragraph following the Constants table, change "edit buffer" to "copy buffer." (Page 619) Trappable Errors In Appendix B, the odd header is wrong. It should read "Trappable Errors," not "Trappable Error Messages." (Page 634) Trappable Error Messages In Table B.6 ("Data Access Trappable Error Messages"), Error #3137 should be deleted. Corrections to "Professional Features Book 1 -- Custom Control Reference"
(Page xxii) Visual Basic Executable (.EXE) Files The Visual Basic run-time file is listed incorrectly. The first bulleted item should read VBRUN300.DLL, not VBRUN200.DLL. (Page 69) CDHolding Property Cross out the following paragraph. It is incorrect. It contradicts the Remarks under CDTimeout Property: When the Carrier Detect line is high (CDHolding=True) and the CDTimeout number of milliseconds has passed, the communications control sets the CommEvent property to MSCOMM_ER_CDTO (Carrier Detect Timeout Error), and generates the OnComm event. (page 78) Input Property The Remarks section lists the SendMessage syntax incorrectly. Replace it with this syntax: pMSComm->SendMessage(UM_INPUT,cbData,lpData) (Page 107) Graphs Within Graphs This section states, "The graph control can have child windows. You can place other controls (including more graphs) within a graph." This information is incorrect. The graph control in Visual Basic version 3.0 does not support child controls. You cannot place a control of any type on a graph and have it belong to the graph. The entire section should be removed. (Page 147) Graph Control In Example 1, the following line contains two "=" characters: Graph1.LabelText = "Data point" = Str$(i%) The line should read: Graph1.LabelText = "Data point" + Str$(i%) (Page 148) Graph Control In Example 2, the following line contains two "=" characters: Graph1.LabelText = "Label" = Str$(i%) The line should read: Graph1.LabelText = "Label" + Str$(i%) (Page 176) Key Status Control The table for the Value property incorrectly states that False is the default value. The default value is determined by the state of the keyboard. (Page 180) MAPI Session Control There should be no footnotes, since the MAPI controls are only available in Visual Basic. (Page 186) MAPI Messages Control There should be no footnotes, since the MAPI controls are only available in Visual Basic.(Page 249)
The reference to the WM_LOSTFOCUS message should refer to WM_KILLFOCUS. The same error occurs in the VBAPI help file under Standard Events/Lost Focus.Corrections to "Professional Features Book 1 -- Help Compiler Guide"
(Page 68) Running Macros When a User Enters a Topic Insert the following sentence after the first sentence: "Macro calls can be authored in footnotes that use an exclamation (!) as the reference mark." (Page 117) Mapping Context Sensitive Objects The text attached to the third bullet is incorrect. There must be exactly one space between the context number and the context string. The example on the following page is also incorrect. It should be corrected to reduce the multiple spaces to one space as follows: [MAP] Edit_Window 0x001 Control_Menu 0x002 Maximize_Icon 0x003 ... and so on ...Corrections to "Professional Features Book 2 -- Data Access Guide"
(Page 31) Creating New Table Definitions Delete the following line of code from the example: On Error Resume Next (Page 36) Attributes The following should be added to the table: Constant Value Pupose =================================================================== DB_VARIABLEFIELD 2 Indicates that the field is of variable length (Text, Binary, memo). (Page 58) Using the Options Argument Change the example code near the middle of the page to this: Dim Options% Dim Db As Database Dim T As Table Set Db = OpenDatabase ("BIBLIO.MDB") Options% = DB_DENYWRITE + DB_DENYREAD Set T = Db.OpenTable ("Titles", Options%) (Page 75) Using the Seek Method The last paragraph is incorrect. It states: "You don't have to supply values for every field in the index; if you omit a field value, the Seek method finds the first record that matches the values you do supply." This is incorrect. If you use the equal (=) comparison operator, you must supply values for all fields. If you use any of the other comparison operators, the above statement is correct.(Page 96-97) QueryDef Example Code
In the example, the name of the parameter is "Enter State" not "State Wanted," and the name of the existing query is "By State" not "Get State." (Page 108) Transaction Logging The reference to a trappable error (2004) in the last sentence is incorrect. There is no such error code. When a transaction log fills, it does not cause error 2004. (Page 139) Accessing Paradox Tables The following line is incorrect: conn$ = "Paradox;" It should read as follows: conn$ = "Paradox 3.X" (Page 154) Accessing Microsoft SQL Server Databases The reference to two versions of INSTCAT.SQL (INSTCAT.SQL and INSTCAT.48) that are supposedly used differently depending on whether the backend is Microsoft SQL Server or Sybase, is an error. The single version of INSTCAT.SQL provided by Microsoft on the Visual Basic version 3.0 disks is complete and sufficient for both Microsoft SQL Server and Sybase SQL Server, versions 4.2 and later. The file named INSTCAT.48, if you have it, is not useful and can be deleted. The instructions on how to run INSTCAT.SQL, which formerly were found in Appendix D of the version 2.0 "Professional Features" manual, are no longer included in the manual. Page 154 of the version 3.0 manual says you can find information on setup, configuration, and operational issues when accessing tables from SQL Server in a file named SQLSVR.HLP. In fact, this file does not exist. The correct file name is DRVSSRVR.HLP, and you should find it in the \WINDOWS\SYSTEM directory. In the DRVSSRVR.HLP file, search on "INSTCAT.SQL" to find the syntax of the ISQL batch command that you need to use to run the INSTCAT.SQL file. |
Additional reference words: 3.00 docerr
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |