| 
			
			 | 
		#1 | 
| 
			
			 Злыдни 
		
			
	 | 
	
	
	
		
		
			
			
			Real Data Type - No of decimals
			 
			
			Как известно, для Real в Аксапта максимальное количество десятичных знаков - 16.  Однако поля в таблицах создаются как numeric(28,12) - т.е. 12 знаков после запятой. Что это - бага? Фича? Я дурак? AX 4.0 SP2
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
|
| За это сообщение автора поблагодарили: Yprit (1). | |
| 
			
			 | 
		#3 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Может это как-то связано с этим...  
		
		
		
		
		
		
		
	Цитата: 
	
		
			Например, тип real хранится не как традиционное число с плавающей точкой (IEEE Double), а как Binary Coded Decimal, что позволяет избежать типичных для формата хранения IEEE Double ошибок в точном представлении дробных чисел, так осложняющих жизнь тех разработчиков, которые пытаются реализовать денежную арифметику с помощью языка C++ или Java.
		
	 
хотя, действительно, и у меня на оракле (32,16)  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Yprit (1). | |
| 
			
			 | 
		#4 | 
| 
			
			 Злыдни 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Axapta 
		
			
	 | 
	
	|
| 
	
 | 
|
| За это сообщение автора поблагодарили: Yprit (1). | |
| 
			
			 | 
		#6 | 
| 
			
			 Злыдни 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Тип NUMERIC(28,12) записан в таблице SQLSYSTEMVARIABLES. Действительно для MSSQL так в коде и записано. См метод SQLDatabaseInit.insertSystemVariablesSqlServer(). Для Oracle в том же классе прописано NUMERIC(32,16).
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Yprit (1). | |
| 
			
			 | 
		#8 | 
| 
			
			 Злыдни 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			У меня 3.0 SP3  
		
		
		
		
		
		
		
	Класс SQLDatabaseInit X++: boolean insertSystemVariablesSqlServer()
{
    int indexValue =    #indexSupported+
                        #indexQualifier+
                        #recidsPerCompany+
                        #TransidsPerCompany;
    if (sqlSystem.dbRequestedUnicodeEnabled()>0)
        this.insertSystemVariable('(\'STR\',\'NVARCHAR(\%u)\',1,NULL)');
    else
        this.insertSystemVariable('(\'STR\',\'VARCHAR(\%u)\',1,NULL)');
    this.insertSystemVariable('(\'INT\',\'INT\',1,NULL)');
    this.insertSystemVariable('(\'REAL\',\'NUMERIC(28,12)\',1,NULL)');
    this.insertSystemVariable('(\'DATE\',\'DATETIME\',1,NULL)');
    this.insertSystemVariable('(\'ENUM\',\'INT\',1,NULL)');
    this.insertSystemVariable('(\'BLOB\',\'IMAGE\',1,NULL)');
    this.insertSystemVariable('(\'TEXT\',\'TEXT\',1,NULL)');
    this.insertSystemVariable('(\'TIMESTAMPTYPE\',\'\',1,NULL)');
    this.insertSystemVariable('(\'GETINDEX\',\'SELECT name FROM sysindexes WHERE indid>0 AND indid<255 AND id=object_id(\'\'\%s\'\') AND INDEXPROPERTY(id, name, \'\'IsStatistics\'\') = 0\',3,NULL)');
    this.insertSystemVariable('(\'RENAME\',\'EXECUTE SP_RENAME \%s,\%s\',3,NULL)');
    this.insertSystemVariable('(\'KEYWORDS\',\'PROC,SUM,LINENO,OPEN,TRANSACTION,BY,PERCENT,PROCEDURE,CURRENT_DATE,CURRENT_TIME,CURRENT_USER,DUMMY,PERMANENT,PIPE\',4,NULL)');
    this.insertSystemVariable('(\'SHADOW\',\'$\',5,NULL)');
    this.insertSystemVariable('(\'INDEXCLUSTER\', \'CLUSTERED\',5,NULL)');
    this.insertSystemVariable('(\'QUOTEPRE\',\'\',6,NULL)');
    this.insertSystemVariable('(\'QUOTEPOST\',\'_\',6,NULL)');
    this.insertSystemVariable('(\'DBNAME\',\'Microsoft SQL Server\',7,NULL)');
    this.insertSystemVariable('(\'DUPLICATEKEY\',\'+2601,+2627\',9,NULL)');
    this.insertSystemVariable('(\'DEADLOCKCODES\',\'+1205\',9,NULL)');
    this.insertSystemVariable('(\'TIMESTAMPCODES\',\'+532\',9,NULL)');
    this.insertSystemVariable('(\'DISCONNECTCODES\',\'+230,+10054\',9,NULL)');
    this.insertSystemVariable('(\'CTRLBRKCODES\',\'\',9,NULL)');
    this.insertSystemVariable('(\'SHARINGCODES\',\'\',9,NULL)');
    this.insertSystemVariable('(\'RECORDLOCKCODES\',\'\',9,NULL)');
    this.insertSystemVariable('(\'DONTRETRYCODES\',\'+100\',9,NULL)');
    this.insertSystemVariable('(\'INDEXEXISTCODES\',\'\',9,NULL)');
    this.insertSystemVariable('(\'ENDOFDATACODES\',\'+100\',9,NULL)');
    this.insertSystemVariable('(\'LOGFULLCODES\',\'+1105\',9,NULL)');
    this.insertSystemVariable('(\'SYNCHRONIZECODES\',\'+207,+208,+1913,+3701,+3702,+3703\',9,NULL)');
    this.insertSystemVariable('(\'TABLENAMELEN\',\'30\',10,NULL)');
    this.insertSystemVariable('(\'FIELDNAMELEN\',\'30\',10,NULL)');
    this.insertSystemVariable('(\'CHARSET\',\'1\', 11,NULL)');
    this.insertSystemVariable('(\'SORTMODE\',\'1\',11,NULL)');
    this.insertSystemVariable('(\'CONCURRENCY\',\'6\',11,NULL)');
    this.insertSystemVariable('(\'NULLSUPPORT\',\'3\',11,NULL)');
    this.insertSystemVariable('(\'DBID\',\'2\',12,NULL)');
    this.insertSystemVariable('(\'SYSVARID\',\''+ int2str(#currentSysVarId) +'\',12,NULL)');
    this.insertSystemVariable('(\'RESERVED\',\'0\',12,NULL)');
    this.insertSystemVariable('(\'ALTERTABLE\',\'1\',13,NULL)');
    this.insertSystemVariable('(\'GETDATA\',\'0\',13,NULL)');
    this.insertSystemVariable('(\'SQLFUNCTIONS\',\'0\',13,NULL)'); // 2000/8/10: MAX() and MIN() handled by the SQL backend
    this.insertSystemVariable('(\'INDEX\',\''+int2Str(indexValue)+'\',13,NULL)');
    this.insertSystemVariable('(\'APICALLSPINCNT\',\'0\',15,NULL)');
    this.insertSystemVariable('(\'APICALLSLEEP\',\'10\',15,NULL)');
    this.insertSystemVariable('(\'CASESENSITIVE\',\'0\',20,NULL)');
    this.insertSystemVariable('(\'ALLOWEMPTYSTRING\',\'1\',20,NULL)');
    this.insertSystemVariable('(\'COMMENTSTRING\',\'1\',20,NULL)');
    this.insertSystemVariable('(\'NAMETRUNCFIX\',\'0\',20,NULL)');
    this.insertSystemVariable(strFmt('(\'UNICODEENABLED\',\'%1\',20,NULL)',sqlSystem.dbRequestedUnicodeEnabled()));
    this.insertSystemVariable('(\'ORDERBYSELECT\',\'0\',21,NULL)');
    return TRUE;
}X++: this.insertSystemVariable('(\'REAL\',\'NUMERIC(28,12)\',1,NULL)'); | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Axapta 
		
			
	 | 
	
	
	
		
		
		
		 
			
			В 4ке вот этой части нет: 
		
		
		
		
		
		
		
	X++: if (sqlSystem.dbRequestedUnicodeEnabled()>0) this.insertSystemVariable('(\'STR\',\'NVARCHAR(\%u)\',1,NULL)'); else this.insertSystemVariable('(\'STR\',\'VARCHAR(\%u)\',1,NULL)'); this.insertSystemVariable('(\'INT\',\'INT\',1,NULL)'); this.insertSystemVariable('(\'REAL\',\'NUMERIC(28,12)\',1,NULL)'); this.insertSystemVariable('(\'DATE\',\'DATETIME\',1,NULL)'); this.insertSystemVariable('(\'ENUM\',\'INT\',1,NULL)'); this.insertSystemVariable('(\'BLOB\',\'IMAGE\',1,NULL)'); this.insertSystemVariable('(\'TEXT\',\'TEXT\',1,NULL)'); this.insertSystemVariable('(\'TIMESTAMPTYPE\',\'\',1,NULL)');  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Злыдни 
		
			
	 | 
	
	
	
		
		
		
		 
			
			мда, действительно нет ....
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| Теги | 
| баг, ax3.0, ax4.0 | 
| 
	
	 | 
	
		
  |