Wayne Fuller
June 2nd, 1999, 07:22 AM
The following code tries to add a new record to the database. I get the
following error when it happens:
[Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO
statement.
Here is the code.
HRESULT CDataSource::AddNewBranch(long nNumber, BSTR bstrCity, BSTR bstrState)
{
HRESULT hr = Connect();
if ( SUCCEEDED(hr) )
{
_variant_t EMPTY_VARIANT(DISP_E_PARAMNOTFOUND, VT_ERROR);
_bstr_t bstrQuery("SELECT * FROM Branches");
_bstr_t bstrField1("Number");
_bstr_t bstrField2("Branch City");
_bstr_t bstrField3("Branch State");
_RecordsetPtr pRS;
try
{
hr = pRS.CreateInstance(_uuidof(Recordset));
if ( SUCCEEDED(hr) )
{
pRS->PutRefActiveConnection(m_Connection);
hr = pRS->Open(_variant_t(bstrQuery), EMPTY_VARIANT, adOpenForwardOnly, adLockOptimistic, adCmdText);
if ( SUCCEEDED(hr) )
{
SAFEARRAY * saField, * saValue;
SAFEARRAYBOUND aDim[1];
long nIndex[1];
aDim[0].lLbound = 0;
aDim[0].cElements = 3;
saField = SafeArrayCreate(VT_VARIANT, 1, &(aDim[0]));
if ( saField == NULL )
{
pRS->Close();
return E_OUTOFMEMORY;
}
saValue = SafeArrayCreate(VT_VARIANT, 1, &(aDim[0]));
if ( saValue == NULL )
{
pRS->Close();
return E_OUTOFMEMORY;
}
nIndex[0] = 0;
hr = SafeArrayPutElement(saField, &(nIndex[0]), &(_variant_t((const BSTR) bstrField1)));
nIndex[0] = 1;
hr = SafeArrayPutElement(saField, &(nIndex[0]), &(_variant_t((const BSTR) bstrField2)));
nIndex[0] = 2;
hr = SafeArrayPutElement(saField, &(nIndex[0]), &(_variant_t((const BSTR) bstrField3)));
if ( SUCCEEDED(hr) )
{
nIndex[0] = 0;
hr = SafeArrayPutElement(saValue, &(nIndex[0]), &(_variant_t((long) nNumber)));
nIndex[0] = 1;
hr = SafeArrayPutElement(saValue, &(nIndex[0]), &(_variant_t((const BSTR) bstrCity)));
nIndex[0] = 2;
hr = SafeArrayPutElement(saValue, &(nIndex[0]), &(_variant_t((const BSTR) bstrState)));
if ( SUCCEEDED(hr) )
{
VARIANT var1, var2;
var1.vt = VT_ARRAY | VT_VARIANT;
var2.vt = VT_ARRAY | VT_VARIANT;
var1.parray = saField;
var2.parray = saValue;
pRS->AddNew(_variant_t(var1), _variant_t(var2));
}
}
pRS->Close();
}
}
}
catch ( _com_error & e )
{
DisplayComError(e);
return e.Error();
}
}
// SysFreeString(bstrCity);
// SysFreeString(bstrState);
return hr;
}
Any help would be appreciated,
Wayne
following error when it happens:
[Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO
statement.
Here is the code.
HRESULT CDataSource::AddNewBranch(long nNumber, BSTR bstrCity, BSTR bstrState)
{
HRESULT hr = Connect();
if ( SUCCEEDED(hr) )
{
_variant_t EMPTY_VARIANT(DISP_E_PARAMNOTFOUND, VT_ERROR);
_bstr_t bstrQuery("SELECT * FROM Branches");
_bstr_t bstrField1("Number");
_bstr_t bstrField2("Branch City");
_bstr_t bstrField3("Branch State");
_RecordsetPtr pRS;
try
{
hr = pRS.CreateInstance(_uuidof(Recordset));
if ( SUCCEEDED(hr) )
{
pRS->PutRefActiveConnection(m_Connection);
hr = pRS->Open(_variant_t(bstrQuery), EMPTY_VARIANT, adOpenForwardOnly, adLockOptimistic, adCmdText);
if ( SUCCEEDED(hr) )
{
SAFEARRAY * saField, * saValue;
SAFEARRAYBOUND aDim[1];
long nIndex[1];
aDim[0].lLbound = 0;
aDim[0].cElements = 3;
saField = SafeArrayCreate(VT_VARIANT, 1, &(aDim[0]));
if ( saField == NULL )
{
pRS->Close();
return E_OUTOFMEMORY;
}
saValue = SafeArrayCreate(VT_VARIANT, 1, &(aDim[0]));
if ( saValue == NULL )
{
pRS->Close();
return E_OUTOFMEMORY;
}
nIndex[0] = 0;
hr = SafeArrayPutElement(saField, &(nIndex[0]), &(_variant_t((const BSTR) bstrField1)));
nIndex[0] = 1;
hr = SafeArrayPutElement(saField, &(nIndex[0]), &(_variant_t((const BSTR) bstrField2)));
nIndex[0] = 2;
hr = SafeArrayPutElement(saField, &(nIndex[0]), &(_variant_t((const BSTR) bstrField3)));
if ( SUCCEEDED(hr) )
{
nIndex[0] = 0;
hr = SafeArrayPutElement(saValue, &(nIndex[0]), &(_variant_t((long) nNumber)));
nIndex[0] = 1;
hr = SafeArrayPutElement(saValue, &(nIndex[0]), &(_variant_t((const BSTR) bstrCity)));
nIndex[0] = 2;
hr = SafeArrayPutElement(saValue, &(nIndex[0]), &(_variant_t((const BSTR) bstrState)));
if ( SUCCEEDED(hr) )
{
VARIANT var1, var2;
var1.vt = VT_ARRAY | VT_VARIANT;
var2.vt = VT_ARRAY | VT_VARIANT;
var1.parray = saField;
var2.parray = saValue;
pRS->AddNew(_variant_t(var1), _variant_t(var2));
}
}
pRS->Close();
}
}
}
catch ( _com_error & e )
{
DisplayComError(e);
return e.Error();
}
}
// SysFreeString(bstrCity);
// SysFreeString(bstrState);
return hr;
}
Any help would be appreciated,
Wayne