Microsoft KB Archive/175691

= BUG: VFP CDX with EMPTY Function is Not Recognized in VB =

Article ID: 175691

Article Last Modified on 1/11/2001

-

APPLIES TO


 * Microsoft Visual Basic 5.0 Professional Edition
 * Microsoft Visual Basic 6.0 Professional Edition
 * Microsoft Visual Basic 5.0 Enterprise Edition
 * Microsoft Visual Basic 6.0 Enterprise Edition

-



This article was previously published under Q175691



SYMPTOMS
FoxPro indexes that contain the function EMPTY or ISBLANK will not be recognized in Visual Basic. Indexes with this function are recognized by Visual Basic 4.0. The following error will be generated under NT and Windows 2000:

An application error has occurred

and an application error log is being generated.

VB5.exe

Exception Access Violation (0xc0000005),Address .........

Visual Basic is terminated by this error.

In Windows 95 and Windows 98, 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.



Steps to Reproduce Behavior
 Create a Visual Basic project and choose DAO 3.5 under project references. 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.  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  Run the code above and note that the index names are printed. 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)

 Run the code above and note that you get the error above under NT and Windows 2000. Under Windows 95 and Windows 98, the index will not be recognized.</li> Remove the phone index, and the program will run successfully if the index has not become corrupted.</li></ol>

Additional query words: Dr. Watson function complex immediate inline kbVBp500bug kbVBp kbWinOS98 kbDSupport kbdse kbVBp600 kbDAO350 kbVFP250

Keywords: kbbug KB175691

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.