PRB: Microsoft ESQL for C Generates Compiler Error w/ an Array

ID: Q173843

The information in this article applies to:

SYMPTOMS

The Visual C/C++ compiler generates the following compile error.

   error C2231: '.iValue' : left operand points to 'struct', use ->

The following code attempts to use an array to hold iID, and will show the problem:

   // 
   // Retrieves one row of results. The SELECT INTO statement is also a
   // singleton select
   EXEC SQL select iID
         INTO :gTest[iCount].iValue
         FROM tblTest
         where iID = 1;

CAUSE

The current version of the NSQLPREP utility is not designed to handle array structures.

WORKAROUND

To work around this problem, use a pointer as shown by the following code:

   EXEC SQL begin declare section;

      typedef struct   stTest
      {
         int   iValue;
      }   TEST;

      TEST *   pCurrent   =   NULL;

   EXEC SQL end declare section;
      .
      .
      .

   // 
   // Can use a pointer to fill array
   pCurrent =  &gTest[iCount];

   // 
   // Retrieves one row of results. The SELECT INTO statement is also a
   // singleton select
   EXEC SQL select iID
         INTO :pCurrent->iValue
         FROM tblTest
         where iID = 1;

Additional query words: ESQL E-SQL SQC
Keywords          : kbcode SSrvESQL_C SSrvProg 
Version           : WINDOWS:6.5
Platform          : WINDOWS
Issue type        : kbprb

Last Reviewed: September 16, 1997