Рейтинг:
1
OriginalGriff
Проверьте строку подключения и убедитесь, что вы подключаетесь к определенной БД, а не просто подключаетесь к серверу.
Если вы уверены, что это правильно, то используйте отладчик, чтобы точно проверить, что вы делаете с этой строкой запроса и что именно вы передаете в SQL. (У нас нет доступа к остальной части вашего кода, поэтому мы не можем проверить, что строка не будет изменена с этого момента).
SELECT SUM(...
отлично работает на всех моих системах здесь, так что я бы предположил, что это то, что вы делаете со строкой позже.
Member 14594285
теперь запрос работает, но вопрос, когда я пишу код для записи своих результатов в список, я пишу:
набор записей.GetFieldValue(_T("data_scanner"), dtScanner);
набор записей.GetFieldValue(_T("somma"), lPezzi);
pLst->SetItemText(nProdotti, 1, strDataScanner);
но там нет группы по данным..есть только список дат
OriginalGriff
Отдельная проблема, отдельный вопрос - разместите его как новый, чтобы он был открыт для всех здесь.
И включите полный код для соответствующего фрагмента, чтобы мы все точно знали, с чем вы работаете.
Рейтинг:
0
phil.o
Вы должны использовать GROUP BY
предложение при использовании любой агрегационной функции:
strQuery = _T( "SELECT SUM (pezzi) FROM PRODOTTI GROUP BY id " );
Member 14594285
Я написал::
strQuery = _T( "SELECT SUM (pel_pezzi) FROM PRODOTTI GROUP BY PRODOTTI.data_scanner");
if (CFG->m_bDataScanner)
{
strQuery.Добавить(bWhere ? ТО _T("И ") : ІТ("ГДЕ "));
strQuery.AppendFormat(_T("PRODOTTI.pel_data_scanner между '%04ld-%02ld-%02ld %02ld:%02ld:%02ld' и '%04ld-%02ld-%02ld %02ld:%02ld:%02ld'"),
ГПФ-&ГТ;m_dtScannerIni.GetYear(), CFG->m_dtScannerIni.GetMonth(), CFG->m_dtScannerIni.GetDay(), CFG->m_dtScannerIni.GetHour(), CFG->m_dtScannerIni.GetMinute(), CFG->m_dtScannerIni.GetSecond(),
ГПФ-&ГТ;m_dtScannerFin.GetYear(), CFG->m_dtScannerFin.GetMonth(), CFG->m_dtScannerFin.GetDay(), CFG->m_dtScannerFin.GetHour(), CFG->m_dtScannerFin.GetMinute(), CFG->m_dtScannerFin.GetSecond());
bWhere = TRUE;
}
Member 14594285
но это не работает, есть ошибка в моем синтаксе
phil.o
Что ж, было бы интересно посмотреть на окончательный запрос, который будет получен. Единственное, что я могу сказать прямо сейчас, это то, что после этого, кажется, не хватает пробела data_scanner
Это распространенная ошибка при построении sql-запросов путем конкатенации.
Member 14594285
Я написал это только для того, чтобы попробовать:
strQuery = _T( "SELECT SUM (pel_pezzi), data_scanner FROM PRODOTTI GROUP BY PRODOTTI.data_scanner ");
но это не вотк, это говорит о том, что в моей базе данных есть столбец SUM, Я не понимаю
Member 14594285
теперь я удалил пробел после суммы, и есть еще одна ошибка: "impossibile trovare l'oggetto desiderato"
Richard Deeming
- Нет, не знаешь. Если вы не укажите GROUP BY
предложение, агрегат применяется ко всей таблице.
Единственное время, которое вы должны использовать GROUP BY
это если у вас есть столбцы, в которых не указан агрегат.