PRB: Microsoft ESQL for C Generates Compiler Error with an Array

ID: Q173843


The information in this article applies to:
  • Microsoft Embedded SQL for C Programmer's Toolkit, version 6.5


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: December 14, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.