powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / DBTYPE_NUMERIC крушение мозга
15 сообщений из 15, страница 1 из 1
DBTYPE_NUMERIC крушение мозга
    #34596543
vanoman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, добрый ALL!

Прошу, помощи в размышлениях.

Исходные данные:
MFC, CDynamicParameterAccessor

Задача:
Пользуя OLE DB нужно вывести в CListView содержимое набора записей.

Проблема:
Скорее, непонимание. Любая БД поддерживает тип данных NUMERIC.
Я получаю значение из этого поля по void* CDynamicParameterAccessor::GetVaue()
в структуру
Typedef struct tagDB_NUMERIC {
BYTE precision;
BYTE scale;
BYTE sign;
BYTE val[16];
} DB_NUMERIC;

Здесь меня интересует представление числа в BYTE val[16];
Как понял оно следующее
Пример:
- 256 (десятичная система)
1,0,...,0 (значения элементов массива)
- 257
1,1,0,...,0
и т.д.

Возникают вопросы:
1. Как это представление запихать в переменную для последующей работы? (int, double)
Лично у меня в голове рисуются циклы прохода по ячейкам массива с умножением 256 на значение в ячейке массива, с поправкой на позицию ячейки в массиве, с последующим суммированием результата.
Но мне представляется, что должен быть иной, более красивый метод преобразования.

2. Исходя из размера массива максимально возможное число представляется в виде всех ячеек заполненных значением 256. Собственно. Я не понимаю КАК с таким числом можно работать? Мне не потребуется выполнять с ним арифметические операции, банальный вывод на экран, представив его в десятичной форме. Но КАК это можно сделать???

Мне интересно мнение людей работавших с OLE DB и разбиравших указанный вопрос.
Как по Вашему - верны-ли мои мысли?
Как корректно преобразовать значение в DB_NUMERIC в строку?

Спасибо
...
Рейтинг: 0 / 0
DBTYPE_NUMERIC крушение мозга
    #34596569
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vanomanЛюбая БД поддерживает тип данных NUMERIC.


Смелое заявление

vanomanКак корректно преобразовать значение в DB_NUMERIC в строку?


Преобразованием на стороне СУБД например
...
Рейтинг: 0 / 0
DBTYPE_NUMERIC крушение мозга
    #34596610
vanoman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Преобразованием на стороне СУБД например

Угу и нафиг вообще нужен C++ когда можно всё делать в СУБД?

Gluk (Kazan)Смелое заявление
Конечно это существенная поправка.
Вернее было сказать любая СУБД, данные из которой можно получить при помощи OLE DB Гипотетически Может поддерживать тип NUMERIC.

По делу общаться интереснее
...
Рейтинг: 0 / 0
DBTYPE_NUMERIC крушение мозга
    #34596681
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не выеживайся, я тебе ответил по делу. Инструменты хорошо применять к месту и ко времени, а не пытаться удалять гланды через задний проход.

Для Oracle имеются OLE DB драйверы, но NUMERIC в ТВОЕМ понимании он НЕ ПОДДЕРЖИВАЕТ, так что свои гипотетические предположения можешь засунуть себе в то место, через которое ты удаляешь гланды.
...
Рейтинг: 0 / 0
DBTYPE_NUMERIC крушение мозга
    #34596724
vanoman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Инструменты хорошо применять к месту и ко времени...
Согласен.

Ещё в для Оракла можно использовать OCI,OCCI... в котром всё красивее и лучше.
Машины пользуют бензин.
А самолёты летают по небу.
...
Мне же нужно разобраться с этой структурой.
Нечего сказать по вопросу: будь добр - не говори вообще.

Спасибо
...
Рейтинг: 0 / 0
DBTYPE_NUMERIC крушение мозга
    #34596781
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vanomanМне же нужно разобраться с этой структурой.


Разбирайся, в чем проблема ???

vanomanНечего сказать по вопросу: будь добр - не говори вообще.


Давай не будем давать указания, что кому когда и где говорить ?

vanoman
Спасибо
...
Рейтинг: 0 / 0
DBTYPE_NUMERIC крушение мозга
    #34596845
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ты не понял сути ответа, расшифрую:

Для выполнения преобразований следует использовать штатные средства, а не пытаться хачить внутренние структуры. Если библиотека не предоставляет вменяемых средств для таких преобразований, стоит подумать о замене ее на что нибудь более другое (OCI там или OCCI, у них с преобразованиями все ок).

В проттивном случае, все ПРОБЛЕМА напоминает проблему всем известного КОТА которому тупо нечего делать
...
Рейтинг: 0 / 0
DBTYPE_NUMERIC крушение мозга
    #34597203
vanoman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Если ты не понял сути ответа, расшифрую:
Для выполнения преобразований следует использовать штатные средства, а не пытаться хачить внутренние структуры. Если библиотека не предоставляет вменяемых средств для таких преобразований, стоит подумать о замене ее на что нибудь более другое (OCI там или OCCI, у них с преобразованиями все ок).


Да какие тут внутренние структуры? Самая что ни на есть распространённая библиотека - OLE DB.
В ентом MSDN прописаны все возможные типы данных что она может вернуть.

Вот есть этот конкретный тип.
Для начала есть конкретный вопрос :"Как перефигачить в строку?"
Потом, по мере не соображения, возможно появятся другие вопросы...

Неужели никто этого до меня не делал?
Неужели никто не сталкивался с проблемой в поле типа NUMERIC лежит очень большое число и с ним надо работать?
Неужели никто не разбирал число из этой структуры когда все элементы BYTE val[16]; взведены в 256?

А что касается Кота, то как дальше писать код если такая низовая проблема, как получение значения из поля не решена?

У меня самый распространённый сервак MS SQL. Неужели весь мир работает с ним иначе не через OLE? КАК?
...
Рейтинг: 0 / 0
DBTYPE_NUMERIC крушение мозга
    #34597221
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чё-то нашёл msdnIDataConvert::DataConvert
Converts the data from the source type to the destination type.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
HRESULT DataConvert (
   DBTYPE          wSrcType,
   DBTYPE          wDstType,
   DBLENGTH        cbSrcLength,
   DBLENGTH *      pcbDstLength,
   void *          pSrc,
   void *          pDst,
   DBLENGTH        cbDstMaxLength,
   DBSTATUS        dbsSrcStatus,
   DBSTATUS *      pdbsStatus,
   BYTE            bPrecision,
   BYTE            bScale,
   DBDATACONVERT   dwFlags);
...
Рейтинг: 0 / 0
DBTYPE_NUMERIC крушение мозга
    #34597248
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vanomanУ меня самый распространённый сервак MS SQL. Неужели весь мир работает с ним иначе не через OLE? КАК?да это самый сосущий сервак, с ним никто не работает, вот и не знает никто, как с ним работать.
...
Рейтинг: 0 / 0
DBTYPE_NUMERIC крушение мозга
    #34597278
vanoman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoчё-то нашёл
Эх ёёёё... Идея! Как ты это искал? :-) Ушёл читать :-)

Спасибо! Доложу по результату.
p.s. только бы на найти шаблонный класс :-)

maXmo vanomanУ меня самый распространённый сервак MS SQL. Неужели весь мир работает с ним иначе не через OLE? КАК?да это самый сосущий сервак, с ним никто не работает, вот и не знает никто, как с ним работать.

:-)
...
Рейтинг: 0 / 0
DBTYPE_NUMERIC крушение мозга
    #34597306
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
открыл оле дб референс, там всё на видном месте лежит.
...
Рейтинг: 0 / 0
DBTYPE_NUMERIC крушение мозга
    #34597310
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo vanomanУ меня самый распространённый сервак MS SQL. Неужели весь мир работает с ним иначе не через OLE? КАК?да это самый сосущий сервак, с ним никто не работает, вот и не знает никто, как с ним работать.

Сервак нормальный, OLE DB - сосучий.
Когда был аналогичный выбор, остановились на ODBC. Щастливы
...
Рейтинг: 0 / 0
DBTYPE_NUMERIC крушение мозга
    #34599039
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vanoman
У меня самый распространённый сервак MS SQL. Неужели весь мир работает с ним иначе не через OLE? КАК?

Весь мир работает через ADO. вы бы еще через сырые сокеты пытались с ним работать, тоже учень увлекательное занятие.
...
Рейтинг: 0 / 0
DBTYPE_NUMERIC крушение мозга
    #34600785
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lepsik vanoman
У меня самый распространённый сервак MS SQL. Неужели весь мир работает с ним иначе не через OLE? КАК?

Весь мир работает через ADO. вы бы еще через сырые сокеты пытались с ним работать, тоже учень увлекательное занятие.

ADO не более чем надстройка над OLE DB. Жизнь прикладнику облегчает, но ПРОБЛЕМ OLE DB не решает, к сожалению
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / DBTYPE_NUMERIC крушение мозга
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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