‘Многошаговая операция OLE DB вызвала ошибки. Проверьте каждое значение состояния OLE DB, если оно доступно. Работы не было.
Однако когда я выполняю оператор в SSMS (SQL Server Management Studio), он получает результаты без ошибок / предупреждений.
Ниже мое заявление SQL.
> SELECT DISTINCT Runs.Run, Demographics.Groups FROM Runs, Demographics
> WHERE Runs.Run = Demographics.Run AND Runs.Run >= 1 AND Runs.Run <= 4
> ORDER BY Runs.Run, Demographics.Groups
По сути, я просто хочу получить указанные результаты, которые соответствуют условиям в выражении, как в SSMS.
Результаты успешной попытки запроса выбора в SSMS.
Оператор копируется из окна Locals в Visual Studio в тот момент, когда он передается этой функции для выполнения:
HRESULT COLETableData::DoQuery2(const CString& strTable, COleSafeArray* const psaCells, COleSafeArray* const psaHeaders, COleSafeArray* const psaTypes)
{
HRESULT hr = S_OK;
try
{
if (m_bInit)
{
// Set db access requirements
CDBPropSet dbProps(DBPROPSET_ROWSET);
dbProps.AddProperty(DBPROP_IRowsetChange, true);
dbProps.AddProperty(DBPROP_IRowsetLocate, false);
//dbProps.AddProperty(DBPROP_BOOKMARKS, true);
dbProps.AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_INSERT | DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_DELETE);
CCommand<CDynamicAccessor> oTable;
hr = oTable.Open(m_Session, strTable, &dbProps);
Строка SQL-запроса является strTable.
Последняя строка ‘hr’ — это HRESULT, который получает код ошибки.
РЕДАКТИРОВАТЬ:
Удаление DISTINCT из оператора дает те же результаты, на каком основании SQL больше не будет выполнять ту же операцию, что и с DISTINCT в нем?
Вы должны изменить его, чтобы использовать вместо этого соединения:
SELECT DISTINCT Runs.Run, Demographics.Groups
FROM Runs
INNER JOIN Demographics ON Runs.Run = Demographics.Run
WHERE Runs.Run >= 1 AND Runs.Run <= 4
ORDER BY Runs.Run, Demographics.Groups
Не уверен, что это решит вашу проблему, но вы должны делать это так, как вы это делали.
Это может быть что-то с вашим кодом, вызывающим SQL, вы можете опубликовать свой код, который вызывает это?
Других решений пока нет …