Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este ejemplo se muestra el valor de la propiedad attributes attributes para Connection, Fieldy property objetos. Usa la propiedad Name de para mostrar el nombre de cada Field y Property objeto.
// BeginAttributesCpp.cpp
// compile with: /EHsc
#import "msado15.dll" no_namespace rename("EOF", "EndOfFile")
#include <ole2.h>
#include <stdio.h>
#include <conio.h>
#include "icrsint.h"
// This class extracts LastName, FirstName, FaxPhone from Employees table
class CEmployeeRs : public CADORecordBinding {
BEGIN_ADO_BINDING(CEmployeeRs)
// Column LastName is the 2nd field in the table
ADO_VARIABLE_LENGTH_ENTRY2(2, adVarChar, m_szemp_LastName, sizeof(m_szemp_LastName), lemp_LastNameStatus, TRUE)
// Column FirstName is the 17th field in the table
ADO_VARIABLE_LENGTH_ENTRY2(17, adVarChar, m_szemp_FirstName, sizeof(m_szemp_FirstName), lemp_FirstNameStatus, TRUE)
// Column FaxPhone is the 18th field in the table
ADO_VARIABLE_LENGTH_ENTRY2(18, adVarChar, m_szemp_Faxphone, sizeof(m_szemp_Faxphone), lemp_FaxphoneStatus, TRUE)
END_ADO_BINDING()
public:
CHAR m_szemp_LastName[21];
ULONG lemp_LastNameStatus;
CHAR m_szemp_FirstName[11];
ULONG lemp_FirstNameStatus;
CHAR m_szemp_Faxphone[25];
ULONG lemp_FaxphoneStatus;
};
// Function declarations
inline void TESTHR(HRESULT x) { if FAILED(x) _com_issue_error(x); };
void AttributesX();
void PrintProviderError(_ConnectionPtr pConnection);
void PrintComError(_com_error &e);
int main() {
if ( FAILED(::CoInitialize(NULL)) )
return -1;
AttributesX();
::CoUninitialize();
}
void AttributesX() {
// Define ADO object pointers. Initialize pointers on define.
// These are in the ADODB:: namespace
_RecordsetPtr pRstEmployee = NULL;
_ConnectionPtr pConnection = NULL;
FieldsPtr fldLoop = NULL;
PropertiesPtr proLoop = NULL;
// Define Other Variables
HRESULT hr = S_OK;
_variant_t Index;
Index.vt = VT_I2;
int j = 0;
// Open a recordset using a Client Cursor for the Employee Table
_bstr_t strCnn("Provider='sqloledb'; Data Source='(local)'; Initial Catalog='pubs'; Integrated Security='SSPI';");
try {
// open connection and record set
TESTHR(pConnection.CreateInstance(__uuidof(Connection)));
pConnection->Open(strCnn, "", "", adConnectUnspecified);
TESTHR(pRstEmployee.CreateInstance(__uuidof(Recordset)));
pRstEmployee->Open("Employee", _variant_t((IDispatch *)pConnection,true), adOpenForwardOnly,
adLockReadOnly, adCmdTable);
// Display the attributes of Connection.
printf("Connection attributes: %d \n", pConnection->Attributes);
// Display the attribute of the employee table's fields
printf("\nFields attributes:\n");
fldLoop = pRstEmployee->GetFields();
for (int i = 0 ; i < (int)fldLoop->GetCount() ; i++) {
Index.iVal = i;
printf (" %s = %d \n", (LPSTR)fldLoop->GetItem(Index)->GetName(),
(int)fldLoop->GetItem(Index)->GetAttributes());
}
// Display Fields of the Employee table which are NULLBALE
printf("\nNULLABLE Fields :");
for (int i1 = 0 ; i1 < (int)fldLoop->GetCount() ; i1++) {
Index.iVal = i1;
if (fldLoop->GetItem(Index)->GetAttributes() & adFldIsNullable)
printf ("%s \n", (LPSTR)fldLoop->GetItem(Index)->GetName());
}
// Display the attributes of the Employee tables's properties
printf("\nProperty attributes:\n");
proLoop = pRstEmployee->GetProperties();
for (int i2 = 0 ; i2 < (int)proLoop->GetCount() ; i2++) {
j = j + 1;
Index.iVal = i2;
printf (" %s = %d \n", (LPSTR)(_bstr_t)proLoop->GetItem(Index)->GetName(),
(int)proLoop->GetItem(Index)->GetAttributes());
}
}
catch(_com_error &e) {
// Notify the user of errors if any.
PrintProviderError(pConnection);
PrintComError(e);
}
// Clean up objects before exit.
if (pRstEmployee)
if (pRstEmployee->State == adStateOpen)
pRstEmployee->Close();
if (pConnection)
if (pConnection->State == adStateOpen)
pConnection->Close();
}
void PrintProviderError(_ConnectionPtr pConnection) {
// Print Provider Errors from Connection object.
// pErr is a record object in the Connection's Error collection.
ErrorPtr pErr = NULL;
long nCount = 0;
long i = 0;
if ( (pConnection->Errors->Count) > 0) {
nCount = pConnection->Errors->Count;
// Collection ranges from 0 to nCount -1.
for (i = 0 ; i < nCount ; i++) {
pErr = pConnection->Errors->GetItem(i);
printf("\t Error number: %x\t%s", (LPCSTR) pErr->Number, (LPCSTR) pErr->Description);
}
}
}
void PrintComError(_com_error &e) {
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
// Print Com errors.
printf("\nError\n");
printf("Code = %08lx\n", e.Error());
printf("Code meaning = %s\n", e.ErrorMessage());
printf("Source = %s\n", (LPCSTR) bstrSource);
printf("Description = %s\n", (LPCSTR) bstrDescription);
}
Consulte también
de Attributes (ADO)
del objeto connection (ADO) de
objeto Field
propiedad Name (ADO) de
objeto de propiedad (ADO) de