Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / РАЗНЫЕ РЕЗУЛЬТАТЫ при WindowsXP and Windows98 / 11 сообщений из 11, страница 1 из 1
09.03.2005, 16:18
    #32951737
РАЗНЫЕ РЕЗУЛЬТАТЫ при WindowsXP and Windows98
Visual C++ 6.0
Распечатываю таблицу базы данных ACCESS
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Поле TN в таблице объявлено как 
Double - Двойное с плавающей точкой

Как выйти из ситуации -  при разных типах Windows разные результаты?
Так на установленном WindowsXP
Имеем   0  когда использую нижеидущую строку
m_sTabNumber.Format("%4d",m_TabNumber.m_dblVal);

на установленном  же Windows' 98 
Имеем  правильный табельный номер, например,  1802 ,  1803 ,  1804  и т.д

Если использовать нижеидущую строку
m_sTabNumber.Format("%4.0f",m_TabNumber.m_dblVal);
то на Windows’ 98   будет выведено
во всех строках значение одно и то же 
- 925595 
но при  установленном WindowsXP
имеем  правильный табельный номер, например,  1802 ,  1803 ,  1804  и т.д
СПАСИБО
...
Рейтинг: 0 / 0
10.03.2005, 06:41
    #32952427
Alex_VC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
РАЗНЫЕ РЕЗУЛЬТАТЫ при WindowsXP and Windows98
m_TabNumber - типа VARIANT (или объект класса _variant_t) ?
Если да, то посмотри на состояние флага vt (он указывает, какой тип в данный момент используется)
...
Рейтинг: 0 / 0
10.03.2005, 20:35
    #32954434
РАЗНЫЕ РЕЗУЛЬТАТЫ при WindowsXP and Windows98
Alex_VC

авторm_TabNumber - типа VARIANT (или объект класса _variant_t) ?
Если да, то посмотри на состояние флага vt (он указывает, какой тип в данный момент используется)

Мой код как показано ниже.
CString m_sTabNumber; // табельный номер – TN
CDBVariant m_TabNumber; //CDBVariant - см. выше , табельный номер – TN

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CRecordset rs(&(pDoc->m_database));
rs.Open(dbOpenDynaset,strQuery, 0 );

while( !rs.IsEOF( ) )
{
rs.GetFieldValue((short) 0 ,m_TabNumber);

m_sTabNumber.Format("%4.0f",m_TabNumber.m_dblVal);	

или

m_sTabNumber.Format("%4d",m_TabNumber.m_dblVal);
……………… 

rs.MoveNext( );
}
Если не трудно, подскажите, пожалуйста, как
Проверить то, что Вы предлагаете?
БОЛЬШОЕ СПАСИБО .
...
Рейтинг: 0 / 0
11.03.2005, 10:09
    #32954851
Alex_VC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
РАЗНЫЕ РЕЗУЛЬТАТЫ при WindowsXP and Windows98
Ну в CDBVariant есть m_dwType (вместо vt), которое указывает на используемый тип, например DBVT_LONG - будет использован тип long (член m_lVal). В MSDN все есть или Здесь
...
Рейтинг: 0 / 0
11.03.2005, 16:28
    #32956228
РАЗНЫЕ РЕЗУЛЬТАТЫ при WindowsXP and Windows98
Код: plaintext
1.
2.
Alex_VC 
большое спасибо
Ok
...
Рейтинг: 0 / 0
15.03.2005, 12:44
    #32960566
РАЗНЫЕ РЕЗУЛЬТАТЫ при WindowsXP and Windows98
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Привет, Alex_VC
В субботу  12 . 03 . 2005  попробовал на компьютере, 
где Windows’ 98  установлен
Моё ОК оказалось преждевременным.
Ниже код, использованный мной:

CRecordset rs(&(pDoc->m_database));
CDBVariant m_TabNumber;

rs.GetFieldValue((short) 0 ,m_TabNumber);
m_sTabNumber.Format("%4.0f",m_TabNumber.m_dblVal);

Согласно теории переменная класса CDBVariant
Может содержать что угодно,  поэтому  я проверяю его так:

if ( m_TabNumber.m_dblVal) 
{
m_sTabNumber.Format("%4.0f",m_TabNumber.m_dblVal); // правильно работает в 
WindowsXP но неправильно при Windows98.
}
else
{
m_sTabNumber.Format("%4d",m_TabNumber.m_dblVal); // эта строка НЕправильно  
работает  при установленном   WindowsXP, но правильно при Windows98.
}

СПАСИБО
...
Рейтинг: 0 / 0
15.03.2005, 14:52
    #32961021
Alex_VC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
РАЗНЫЕ РЕЗУЛЬТАТЫ при WindowsXP and Windows98
ПОЧЕМУЧКА 1Согласно теории переменная класса CDBVariant
Может содержать что угодно, поэтому я проверяю его так:

if ( m_TabNumber.m_dblVal)
{
m_sTabNumber.Format("%4.0f",m_TabNumber.m_dblVal); // правильно работает в
WindowsXP но неправильно при Windows98.
}
else
{
m_sTabNumber.Format("%4d",m_TabNumber.m_dblVal); // эта строка НЕправильно
работает при установленном WindowsXP, но правильно при Windows98.
}
По-моему, согласно теории, надо все-же проверить значение m_dwType, и в зависимости от его значения выбирать нужное зеначение...
...
Рейтинг: 0 / 0
16.03.2005, 20:36
    #32964553
РАЗНЫЕ РЕЗУЛЬТАТЫ при WindowsXP and Windows98
да , Alex_VC ,

ВЫ ПРАВЫ, СПАСИБО.
...
Рейтинг: 0 / 0
17.03.2005, 16:08
    #32966290
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
РАЗНЫЕ РЕЗУЛЬТАТЫ при WindowsXP and Windows98
ПОЧЕМУЧКА 1
m_sTabNumber.Format("%4d",m_TabNumber.m_dblVal);


Печатать double по формату целого числа - это конечно высокий полет.

ПОЧЕМУЧКА 1
имеем правильный табельный номер, например, 1802, 1803, 1804 и т.д


Впрочем, как и хранить табельный номер в поле типа double.

Ты дважды герой !!
...
Рейтинг: 0 / 0
17.03.2005, 16:11
    #32966305
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
РАЗНЫЕ РЕЗУЛЬТАТЫ при WindowsXP and Windows98
Ты бы не мучился бы лучше, биндил бы поля на текстовые переменные - обрабатывать же тебе не надо наверное ?
...
Рейтинг: 0 / 0
17.03.2005, 21:18
    #32967027
РАЗНЫЕ РЕЗУЛЬТАТЫ при WindowsXP and Windows98
MasterZiv

авторТы бы не мучился бы лучше, биндил бы поля на текстовые переменные - обрабатывать же тебе не надо наверное ?

Код: plaintext
1.
2.
3.
4.
5.
6.
Я хочу реализовать отчёт с предварительным
просмотром, то, как мне кажется
с отсутствием у меня опыта,
 ПОДСКАЗАННОЕ МНЕ Alex_VC
ДОСТАТОЧНО.

МОЖЕТ БЫТЬ Я ОШИБАЮСЬ

СПАСИБО ЗА НЕРАВНОДУШИЕ.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / РАЗНЫЕ РЕЗУЛЬТАТЫ при WindowsXP and Windows98 / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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