PRB: ADO's Field ATTRIBUTE Property and adFldRowID

ID: Q182351


The information in this article applies to:
  • ActiveX Data Objects (ADO), versions 1.5, 2.0, 2.1 SP2


SYMPTOMS

ADO's field Attribute property will not return "adFldRowID" when checked against any data sources being accessed through the OLEDB Provider for ODBC.


CAUSE

The OLEDB Provider for ODBC, which is used by default, cannot access this information because it is not available through ODBC.


RESOLUTION

Use a native OLEDB Provider specific to the data source being used. The data source must also support a field type that maps to OLE DB's definition of a row identifier to be able to return a value of "adFldRowID."


STATUS

This behavior is by design.


MORE INFORMATION

The "adFldRowID" Attribute maps to OLEDB's DBCOLUMNFLAGS_ISROWID flag. A row that has this flag "contains a persistent row identifier that cannot be written to and has no meaningful value except to identify the row."

Using the preceding description, no column in SQL Server falls into this category. Thus, even when using a native OLEDB Provider for SQL Server, the "adFldRowID" would not be returned through the field's Attribute property. In the following sample code, if you connect to a different data source, the value of the field attribute may vary. The field Attribute value may be composed of more than one Attribute constant. For example, if the Attribute value of a specific field is 24, then it represents adFldFixed (16) + adFldUnknownUpdatable (8).

Steps to Reproduce Behavior

  1. Start Visual Basic.


  2. Add a Reference to the "Microsoft ActiveX Data Objects Library."


  3. Add a command button to the form and add the following code to the click event:


  4. 
       Private Sub Command2_Click()
             Dim Cn As New Connection
             Dim rs As New Recordset
             Dim SQL As String
    
             Cn.Open "DRIVER={SQL Server};SERVER=<server_name>;UID=;PWD=;"
             SQL = "select * from pubs..jobs"
             rs.Open SQL, Cn
             MsgBox "Name: " & rs.Fields(0).Name & vbCrLf & "Attribs: " & _
                rs.Fields(0).Attributes
    
             rs.Close
             Cn.Close
          End Sub 
  5. Notice that the attribute value is 16 which maps to adFldFixed as it appears in the message box.



REFERENCES

For more information, refer to the SDK documentation.

Additional query words: kbdse

Keywords : kbADO kbADO150 kbADO200 kbGrpMDAC kbDSupport
Version : WINDOWS:1.5,2.0,2.1 SP2
Platform : WINDOWS
Issue type : kbprb


Last Reviewed: November 3, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.