|  26.12.2005, 12:25 | #1 | 
| Участник | 
			
			Делаю примерно так: Код: MyGUID := CREATEGUID;
MESSAGE(MyGUID);
Ok := EVALUATE(VarBINARY, MyGUID);
IF Ok = TRUE THEN
  MESSAGE('%1', VarBINARY)
ELSE
  MESSAGE('False');а вообще надо в поле внешней БД (прилинкована табличка через view) поместить значение из CREATEGUID в виде BINARY(16) Помогите, плз, кто чем может... 
				__________________ YEP! тел. (905) 561-94-00 | 
|  | 
|  26.12.2005, 12:33 | #2 | 
| Участник | 
			
			А какой тип у переменной VarBINARY?
		 | 
|  | 
|  26.12.2005, 12:36 | #3 | 
| Участник | 
			
			Binary конечно же т.е. в идеале нужно просто помещать в поля типа Binary значения новых гуидов и еще целочисленные значения приведенные к этому типу (в триггере OnInsert()) 
				__________________ YEP! тел. (905) 561-94-00 | 
|  | 
|  26.12.2005, 12:38 | #4 | 
| Moderator | 
			
			Этот код должен работать, если с типами ничего не намудрили. Тип должен быть не бинари, а вариант | 
|  | 
|  26.12.2005, 13:03 | #5 | 
| Участник | 
			
			Еще хелп говорит, что в текст нормально эвалюэйтится GUID ...
		 | 
|  | 
|  26.12.2005, 13:06 | #6 | 
| Moderator | 
			
			Текст не надо, все нормально эвалюэйтится через вариант: BINARY(16) <- GUID Ok := EVALUATE(VarVariant, MyGUID); Ok := Ok AND EVALUATE(VarBinary,VarVariant); | 
|  | 
|  26.12.2005, 13:17 | #7 | 
| Участник | Цитата: У меня SQL тип Binary(16) - также описываю поле в Table (иначе ругается на несоответсвие типов) Далее получаю GUID новый и... дальше что? как его поместить в базу? З.Ы. Попробовал через временную переменную типа Variant тоже не получилось... Она становится таки GUID-ом... Цитата: Код: MyGUID := CREATEGUID; Ok := EVALUATE(VarVariant, MyGUID); Ok := Ok AND EVALUATE(VarBINARY, VarVariant); MESSAGE(FORMAT(Ok)); 
				__________________ YEP! тел. (905) 561-94-00 | 
|  | 
|  26.12.2005, 13:28 | #8 | 
| Участник | 
			
			в прикрепленном файле картинка... после кода: Код: OnInsert() EVALUATE(VarVariant, CREATEGUID); EVALUATE(ID, VarVariant); 
				__________________ YEP! тел. (905) 561-94-00 | 
|  | 
|  26.12.2005, 13:41 | #9 | 
| Moderator | 
			
			Я кажется понял в чем проблема. Стандартные средства Navision не позволяют нормально работать с типом BINARY.  Предлагаю ручной вариант конвертации | 
|  | 
|  26.12.2005, 13:47 | #10 | 
| Участник | 
			
			эх... я бы с удовольствием, да что-то не получается...  а можно отказаться от инсерта в триггере? тогда можно было бы просто через ОДБЦ инсертнуть... 
				__________________ YEP! тел. (905) 561-94-00 | 
|  | 
|  26.12.2005, 13:50 | #11 | 
| Moderator | 
			
			А в чем сложность? txtGUID := DELCHR(MyGUID,'=','{}-'); FOR intI:=1 TO 16 DO BEGIN varBinary[intI] := Hex2Dec(txtGUID[intI*2-1]+txtGUID[intI*2]); END; осталось конвертор из HEX в DEC написать | 
|  | 
|  26.12.2005, 14:04 | #12 | 
| Moderator | Код: функция Hex2Dec(Str:Text[30]):Integer IF Str[1]>='A' THEN BEGIN StrTemp:=CONVERTSTR(Str,'ABCDEF','012345'); EVALUATE(iTemp,FORMAT(StrTemp[1])); iTemp := iTemp+10; END ELSE EVALUATE(iTemp,FORMAT(Str[1])); Result := iTemp*16; IF Str[2]>='A' THEN BEGIN StrTemp := CONVERTSTR(Str,'ABCDEF','012345'); EVALUATE(iTemp,FORMAT(StrTemp[2])); iTemp+=10; END ELSE EVALUATE(iTemp,FORMAT(Str[2])); Result+=iTemp; EXIT(Result); | 
|  |