DOCUMENT:Q175691 30-OCT-1997 [vbwin] TITLE :BUG: VFP CDX with EMPTY Function Is Not Recognized in VB5 PRODUCT :Microsoft Visual Basic for Windows PROD/VER:WINDOWS:5.0 OPER/SYS:WINDOWS KEYWORDS:vb5all ====================================================================== --------------------------------------------------------------------- The information in this article applies to: - Microsoft Visual Basic Professional and Enterprise Editions for Windows, version 5.0 --------------------------------------------------------------------- SYMPTOMS ======== FoxPro indexes that contain the function EMPTY or ISBLANK will not be recognized in Visual Basic 5.0. Indexes with this function are recognized by Visual Basic 4.0. The following error will be generated under NT: An application error has occurred and an application error log is being generated. VB5.exe Exception Access Violation (0xc0000005),Address ......... Visual Basic 5.0 is terminated by this error. In Windows 95, no error is returned because the index is not seen. RESOLUTION ========== Compare field to " " instead of using EMPTY. The same results are achieved. STATUS ====== Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. We are researching this bug and will post new information here in the Microsoft Knowledge Base as it becomes available. MORE INFORMATION ================ Steps to Reproduce Behavior --------------------------- 1. Create a Visual Basic 5.0 project and choose DAO 3.5 under project references. 2 In FoxPro 2.5, use the customer table and set up some indexes on cno, state and ono. The CDX file with the same name as the table file will contain the indexes. 3. Place 2 CommandButtons on the form, and paste in the following code: Option Explicit Dim FoxDataDB As Database Dim RS As Recordset Dim myidx As Index Private Sub Command1_Click() RS.Close FoxDataDB.Close Set RS = Nothing Set FoxDataDB = Nothing Unload Me End Sub Private Sub Command2_Click() For Each myidx In FoxDataDB.TableDefs("customer").Indexes Debug.Print myidx.Name RS.Index = myidx.Name Next End Sub Private Sub Form_Load() Set FoxDataDB = Workspaces(0).OpenDatabase( _ "d:\fpw26\tutorial", _ False, False, "FoxPro 2.5;") Set RS = FoxDataDB.OpenRecordset("customer", dbOpenTable) End Sub 4. Run the code above and note that the index names are printed. 5. Delete some phone numbers from the database above and add the following index by choosing Database Setup from the menu in FoxPro: IIF(EMPTY(phone), state, phone) 6. Run the code above and note that you get the error above under NT. Under Windows 95, the index will not be recognized. 7. Remove the phone index, and the program will run successfully if the index has not become corrupted. Additional query words: Dr. Watson function complex immediate inline ====================================================================== Keywords : vb5all Component : dao Version : WINDOWS:5.0 Platform : WINDOWS Hardware : x86 Issue type : kbbug ============================================================================= THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY. Copyright Microsoft Corporation 1997.