Opens the Data Link Properties dialog box. Returns a connection string.
HRESULT PromptDataSource(
IUnknown * pUnkOuter
HWND hWndParent,
DBPROMPTOPTIONS dwPromptOptions,
ULONG cSourceTypeFilter,
DBSOURCETYPE * rgSourceTypeFilter,
LPCOLESTR pwszszzProviderFilter,
REFIID riid,
IUnknown ** ppDataSource);
Parameters
pUnkOuter [in]
A pointer to the controlling IUnknown interface if the data source object is being created as a part of an aggregate; otherwise, it is a null pointer.
hWndParent [in]
The parent window handle for dialog boxes to be displayed. The dialog box will always be centered within this window.
dwPromptOptions [in]
Specifies whether to prompt with the Create New Data Link wizard or the Data Link Properties dialog box.
Value | Meaning |
DBPROMPTOPTIONS_WIZARDSHEET | Prompt with Create New Data Link wizard. |
DBPROMPTOPTIONS_PROPERTYSHEET | Prompt with Data Link Properties dialog box. |
cSourceTypeFilter [in]
Count of elements in rgSourceTypeFilter. The only valid value is zero.
This is reserved for future use.
rgSourceTypeFilter [in]
This parameter is ignored unless cSourceTypeFilter is greater than zero. Otherwise, this parameter points to a valid array of DBSOURCETYPE values. If it is non-null, the providers presented to the user will be limited to those that match the SOURCE_TYPEs specified in rgSourceTypeFilter.
This is reserved for future use.
pwszszzProviderFilter [in]
A double null-terminated string of ProgIDs.
This parameter must be null, or point to a valid string. If it is non-null, the providers presented to the user will be limited to those that match the providers' ProgIDs specified in pwszszzProviderFilter. If only one provider is specified, and DBPROMPTOPTIONS_WIZARDSHEET is specified, the provider selection page is not displayed.
riid [in]
The requested interface for the data link returned in *ppDataSource.
ppDatasource [in, out]
A pointer to a data source object (DSO).
If *ppDataSource is null on entry, then Prompt generates a new DSO based on the information specified by the user, and returns a pointer to that DSO in *ppDataSource.
If *ppDataSource is non-null on entry, Prompt uses the properties returned by IProperties::GetProperties() as initial values. If the user selects a different provider, Prompt will release the original *ppDataSource and create a new data source. On exit, *ppDataSource will be set to a pointer to the interface specified by riid.
Return Code
S_OK
The method succeeded.
E_FAIL
A provider-specific error occurred.
DB_E_CANCELED
The user canceled the dialog.
E_NOINTERFACE
The data source did not support the interface specified in riid.
riid was IID_NULL.
*ppDatasource was not null and did not indicate an OLE DB data source generated from IDataInitialize or IDBPromptInitialize.
DB_E_NOAGGREGATION
pUnkOuter was not a null pointer and riid was something other than IID_IUnknown.
pUnkOuter was not a null pointer and the provider does not support aggregation.
E_INVALIDARG
ppDatasource was a null pointer.
cSourceTypeFilter was not zero and rgSourceTypeFilter was a null pointer.
An element in rgSourceTypeFilter was not a valid filter.
dwPromptOptions was an invalid value.
Comments
None.
Code Example
The following code fragment shows how a consumer might use IDBPromptInitialize::PromptDataSource to prompt the user for connection information:
// First CoCreate the OLE DB Service Component Manager
//
HRESULT hr =S_OK;
IDataInitialize *pIDataInitialize =NULL;
hr = CoCreateInstance(
CLSID_DataLinks,
NULL,
CLSCTX_INPROC_SERVER,
IID_IDataInitialize,
reinterpret_cast<void **>(pIDataInitialize));
// CreateDBInstance to instantiate previously stored provider
//
CLSID clsidProvider (GetProviderCLSID());
IDBProperties *pIDBProperties =NULL;
hr = pIDataInitialize->CreateDBInstance(
clsidProvider,
NULL,
CLSCTX_INPROC_SERVER,
NULL,
IID_IDBProperties,
reinterpret_cast<void **>(&pIDBProperties));
// Set some previously stored properties
//
ULONG cPropertySets (GetPropertySetsCount());
DBPROPSET (*rgPropertySets) (GetPropertySets());
hr = pIDBProperties->SetProperties(cPropertySets, rgPropertySets);
// Prompt the user to view/edit the connection information
//
IDBPromptInitialize *pIDBPromptInitialize =NULL;
hr = pIDataInitialize ->QueryInterface(
IID_IDBPromptInitialize,
reinterpret_cast<void **>(&pIDBPromptInitialize));
hr = pIDBPromptInitialize->PromptDataSource(
NULL,
hWndParent,
DBPROMPTOPTIONS_WIZARD,
0, NULL,
NULL,
IID_IDBProperties,
&pIDBProperties);