powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MSSQL 2000 + VC 6.0 = Debug assertion failed
4 сообщений из 4, страница 1 из 1
MSSQL 2000 + VC 6.0 = Debug assertion failed
    #32063784
free
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я создаю MFC проект с использованием ODBC
ODBC настроил. Все компилится.
Но при запуске программы появляется красная табличка
Debug Assertion Failed
File: Dbcore.cpp
Line: 2979
...
Рейтинг: 0 / 0
MSSQL 2000 + VC 6.0 = Debug assertion failed
    #32063834
Фотография Chicago
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вырезка из файла Dbcore.cpp
(см. каталог ...\Microsoft Visual Studio\VC98\MFC\SRC, если нет такого, срочно доустановите исходные тексты MFC).

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
void CRecordset::InitRecord()
{
	// fields to bind
	if (m_nFields !=  0 )
	{
		m_nFieldsBound = BindFieldsToColumns();
		// m_nFields doesn't reflect number of
		// RFX_ output column calls in Do[Bulk]FieldExchange
 2979 :		ASSERT((int)m_nFields == m_nFieldsBound);


Условие в ASSERT у вас ложно, вот отладчик и ругается. Если по-русски, то у вас количество полей в наборе данных, получаемом от сервера не соответствует количеству полей, которые вы указали для связывания в ClassWizard, когда строили потомка класса CRecordset.
...
Рейтинг: 0 / 0
MSSQL 2000 + VC 6.0 = Debug assertion failed
    #32063950
free
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огоромное спасибо за ответ!
Но у меня возник еще вопрос - а где в визарде устанавливается это число? Сначала я строил прогу с добавлением базы при создании проекта, потом пробовал создавать ее просто, а рекордсет добавлять уже визардом, но нигде не видел чтоб это устанавливалось
...
Рейтинг: 0 / 0
MSSQL 2000 + VC 6.0 = Debug assertion failed
    #32063990
Фотография Chicago
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так оно должно само устанавливаться. Открывается ClassWizard на вкладке Member Variables. В списке Class name выбирается класс-потомок от CRecordset. В списке вы увидите список полей из набора данных и имена соответствующих им переменных-членов класса-потомка. Добавляете поле оно увеличивается, удаляете уменьшается.

Гипотеза следующая: со времени генерации класса изменилась схема данных БД, поменялись имена полей или может быть некоторые поля были удалены. Может быть просто источник данных ODBC перестал быть доступен. А может быть вы просто при вызове метода Open в программе подсовываете несовместимый с определением класса набор данных в lpszSQL, отличный от того, что указан в методе GetDefaultSql(). Я бы попробовал для начала перегенерировать определение класса кнопкой Update Columns на той же вкладке Member Variables и посмотреть, доступны ли интересующие вас данные, не возникает ли ошибок подключения и пр.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MSSQL 2000 + VC 6.0 = Debug assertion failed
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]