powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / ods DBNUMERIC
6 сообщений из 6, страница 1 из 1
ods DBNUMERIC
    #32501190
Uridian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот так описан этот тип в srv.h :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
#define MAXNUMERICLEN	 16 
typedef struct dbnumeric	
{	// Format for SRVNUMERIC,SRVNUMERICN,SRVDECIMAL,SRVDECIMALN
	BYTE precision;
	BYTE scale;
	BYTE sign;
	BYTE val[MAXNUMERICLEN];
} DBNUMERIC;
typedef DBNUMERIC DBDECIMAL;


Вопрос : что из себя представляет поле val и как его заполнять?
...
Рейтинг: 0 / 0
ods DBNUMERIC
    #32501760
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эта... С выучи сначала, перед тем как такие вопросы задавать :)

WINDEF.htypedef unsigned char BYTE;

строки
#define MAXNUMERICLEN 16
и
BYTE val[MAXNUMERICLEN];
говорят о том, что val это:
unsigned char val[16];

дальше надо объяснять? :)
...
Рейтинг: 0 / 0
ods DBNUMERIC
    #32501796
Uridian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообче то знал бы С не задавал а отвечал.
Сам колдую на Дельфях, и в srv.pas тот же кусок выглядит так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
const MAXNUMERICLEN	=  16 ;	
type dbnumeric = record	
	precision : Byte;	
	scale : Byte;	
	sign : Byte;	
	val : array [ 0 ..Pred(MAXNUMERICLEN)] of Byte;
end;
DBDECIMAL = DBNUMERIC;	

исходник на сях привел для того, чтобы не запутать отвечающих.
То есть первая часть вопроса и правда некорректна - поле val представляет из себя массив байт - это и мне понятно. А вот как его заполнять, если изначально есть нумерическое значение, например 12345.6789, в символьной, конечно, форме?
И с этого места дальше надо объяснять .
Мои варианты:
1. Все цифровые символы скопировать в поле val как есть;
2. закодировать половинками байтов, т.е. из 12 получится 012h; из 56 - 056h;
3. перевести в правильное целое число равное исходному, умноженному на 10^scale и заполнить им val.
Во всех случаях заполнять надо начиная с последнего или первого байта поля val ? В прямом или обратном порядке ?
...
Рейтинг: 0 / 0
ods DBNUMERIC
    #32501809
Uridian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наверно, пояснения нужны.
Вопрос задавался в раздел SQL для тех, кто стряпал расширенные хранимые процедуры для MSSQL, но был перемещен почему-то в сишный раздел форума.
Мне нужно разъяснить не что такое С и как в нем что. Это не обще-сишный вопрос, а вполне конкретный SQL-ный.
...
Рейтинг: 0 / 0
ods DBNUMERIC
    #32502722
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, ясно.

Дело в том, как потом этот массив будет использоваться.

если автор12345.6789, в символьной, конечно, форме
то
strcpy((char*)val,"12345.6789");
если 12345.6789 - это параметр,
то
f = 12345.6789
sprintf((char*)val,"%f",f);

иначе, если не так, то всё зависит от формата, который хочет SQL
...
Рейтинг: 0 / 0
ods DBNUMERIC
    #32503724
Uridian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всё зависит от формата, который хочет SQL
Вот об этом-то и хотелось узнать. Неужели скулисты не заглядывают в сишный форум? Для остальных поясняю: ods - Open Data Services - API для написания расширенных сохраненных процедур под MSSQL .
Господин модератор, может все-таки вернете вопрос на "историчесую родину" - в форум по SQL?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / ods DBNUMERIC
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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