Article ID: 192883
Article Last Modified on 7/1/2004
class CDataSourceListener : public DataSourceListener
{
public:
ULONG m_ulRefCount;
CComplexCtl * m_pControl;
CDataSourceListener(CComplexCtl * pControl):m_ulRefCount(0),
m_pControl(pControl){}
STDMETHOD(QueryInterface)(REFIID iid, LPVOID * ppvObject)
{
if (IsEqualIID(__uuidof(IUnknown), iid) ||
IsEqualIID(__uuidof(DataSourceListener), iid))
{
*ppvObject = this;
AddRef();
return S_OK;
}
else
return E_NOINTERFACE;
}
STDMETHOD_(ULONG, AddRef)()
{
return m_ulRefCount++;
}
STDMETHOD_(ULONG, Release)()
{
if (--m_ulRefCount == 0)
{
delete this;
return 0;
}
else
return m_ulRefCount;
}
STDMETHOD(dataMemberChanged)(DataMember bstrDM)
{
m_pControl->UpdateControl();
return S_OK;
};
STDMETHOD(dataMemberAdded)(DataMember bstrDM){return S_OK;};
STDMETHOD(dataMemberRemoved)(DataMember bstrDM){return S_OK;};
};
STDMETHODIMP CComplexCtl::putref_DataSource(DataSource* pDataSource)
{
m_spDataSource = pDataSource;
CDataSourceListener * pListener = new CDataSourceListener(this);
// Listener object is deleted when it is released.
m_spDataSource->addDataSourceListener(pListener);
}
<HTML>
<HEAD>
<TITLE>Sample Query Page</TITLE>
</HEAD>
<BODY>
<CENTER>
<H1>Sample Query Page</H1>
<BR>
<OBJECT ID="COMPLEXDB" WIDTH=600 HEIGHT=200
CLASSID="CLSID:392BBDF0-06E1-11D1-8F8F-000000000000">
<PARAM NAME=DataSource DATASRC=#ADC>
<PARAM NAME=FieldName VALUE="ProductName">
</OBJECT>
<BR>
<OBJECT classid="clsid:BD96C556-65A3-11D0-983A-00C04FC29E33"
ID=ADC HEIGHT=1 WIDTH = 1>
<PARAM NAME="Server" VALUE="http://myIISServer">
<PARAM NAME="Connect" VALUE="DSN=DataTables">
<PARAM NAME="SQL" VALUE="Select * from Products">
</OBJECT>
</BODY>
</HTML>
NOTE: The Internet Client SDK documentation shows that you can use the
following syntax:
<OBJECT ID="COMPLEXDB" WIDTH=600 HEIGHT=200 Datasrc="#ADC"
CLASSID="CLSID:392BBDF0-06E1-11D1-8F8F-000000000000">
These lines are supposed to connect the data source object with the
particular object. This doesn't work with Internet Explorer 4.x and
OLE DB data bound controls. You must set the data source by using the
PARAM tag shown previously.Platform SDK: Database and Messaging; Microsoft Data Access SDK; OLE DB; ActiveX Control Writer
Keywords: kbhowto kbdatabase kbtemplate KB192883