|
|
|
Новое поле Sum тип Money. Доступ через ODBC не работет (+)
|
|||
|---|---|---|---|
|
#18+
Доброго всем дня! Прошу помочь советом. Опердень RsBank работает под Pervasive. В новой версии появилось новое поле Sum тип Money. Доступ через ODBC не работет. По умолчанию тип ставит Numeric 20, 4 Перепробовал все поля. В базе знаний от разработчика есть такие слова. Ответ: Ниже приводятся примеры преобразования полей, образующих поле Money к одному вещественному полю. Задача состоит в том, что три поля, два из которых имеют тип длинное целое, а одно - целое, надо преобразовать в длинное вещественное. В C++ это можно сделать с помощью объединения: #include <stdio.h> union { struct { long a; long b; int c; } s; long double LDMON; } u; void main(void) { // 5100.00 u.s.a =0L; u.s.b = -117047296L; u.s.c =16401; printf("%Lf", u.LDMON); } На Delphi (Pascal) : Function LDMon_Extended( Int1,Int2 : Integer; SmlInt : SmallInt ) : Extended; Var LDMon : record LI1,LI2 : Integer; { или LongInt } SI : SmallInt; { или Word } end; begin LDMon.LI1 := Int1; LDMon.LI2 := Int2; LDMon.SI := SmlInt; move(LDMon,Result,SizeOf(Result){ =10 }); {копирует запись LDMon в результат функции} end; Как это решить на фоксе. С уважением, Сергей. Решение проблемы прошло так: новое поле Sum тип Money, по всей видимости не пропускает FoxPro, а не Pervasive. Если писать так: CREATE SQL VIEWs rem_postdoc_rub Remote Connect RsBankNet Share AS ; SELECT ; Postdoc_rub.Date_Document,; Postdoc_rub.Date_Value,; '810' AS Code_Currency,; Postdoc_rub.Kind_Carry,; Postdoc_rub.Kind_Oper,; Postdoc_rub.Numb_Document AS Num_Doc,; Postdoc_rub.UserField4,; Postdoc_rub.Real_Payer,; Postdoc_rub.Payer,; Postdoc_rub.Real_Receiver,; Postdoc_rub.Receiver,; Postdoc_rub.Ground,; Postdoc_rub.Sum,; Postdoc_rub.ApplicationKey,; Postdoc_rub.Result_Carry ; FROM "Postdoc_dbt" Postdoc_rub ; WHERE Postdoc_rub.Result_Carry <> 23 ; ORDER BY Postdoc_rub.Date_Document, Postdoc_rub.Real_Payer, Postdoc_rub.Real_Receiver то поле Sum не проходит, если писать так: CREATE SQL VIEWs rem_postdoc_rub Remote Connect RsBankNet Share AS ; SELECT * ; FROM "Postdoc_dbt" Postdoc_rub ; WHERE Postdoc_rub.Result_Carry <> 23 ; ORDER BY Postdoc_rub.Date_Document, Postdoc_rub.Real_Payer, Postdoc_rub.Real_Receiver то представление создается. В других таблицах поле с суммами такого же типа, но если оно называется по другому, не Sum, то представление создается. Сегодня еще одна проблема всплыла: есть таблица Client, в ней появилось 2 поля тип String, длина 321 и одно поле тип String, длина 296. При построении представления из проекта Fox им ставит тип Logical, представление не работает. Убираю 2 поля длиной 321, представление работает. Ставлю полю с длиной 296 другие типы, символьные, представление работает. Пробовал с полями длиной 321 применять функции SUBSTR, LEFT, у них в Pervasive синтаксис такой же как в фоксе, представление не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2007, 15:11 |
|
||
|
Новое поле Sum тип Money. Доступ через ODBC не работет (+)
|
|||
|---|---|---|---|
|
#18+
SergeiZhukДоброго всем дня! Прошу помочь советом. то представление создается. В других таблицах поле с суммами такого же типа, но если оно называется по другому, не Sum, то представление создается. Здесь я фиг знает попробуй алиасы для начала: CREATE SQL VIEWs rem_postdoc_rub Remote Connect RsBankNet Share AS ; SELECT ; Postdoc_rub.Date_Document,; Postdoc_rub.Date_Value,; '810' AS Code_Currency,; Postdoc_rub.Kind_Carry,; Postdoc_rub.Kind_Oper,; Postdoc_rub.Numb_Document AS Num_Doc,; Postdoc_rub.UserField4,; Postdoc_rub.Real_Payer,; Postdoc_rub.Payer,; Postdoc_rub.Real_Receiver,; Postdoc_rub.Receiver,; Postdoc_rub.Ground,; Postdoc_rub.Sum AS Summa,; Postdoc_rub.ApplicationKey,; Postdoc_rub.Result_Carry ; FROM "Postdoc_dbt" Postdoc_rub ; WHERE Postdoc_rub.Result_Carry <> 23 ; ORDER BY Postdoc_rub.Date_Document, Postdoc_rub.Real_Payer, Postdoc_rub.Real_Receiver DBSetProp('rem_postdoc_rub.summa', 'Field', 'UpdateName', "Postdoc_dbt.Sum") Если так не сканает, то надо будет преобразовывать данные на уровне SELECT во что-нибудь удобоваримое, а затем уже здесь снова преобразовывать во что-нибудь удобоваримое. SergeiZhuk Сегодня еще одна проблема всплыла: есть таблица Client, в ней появилось 2 поля тип String, длина 321 и одно поле тип String, длина 296. При построении представления из проекта Fox им ставит тип Logical, представление не работает. Убираю 2 поля длиной 321, представление работает. Ставлю полю с длиной 296 другие типы, символьные, представление работает. Пробовал с полями длиной 321 применять функции SUBSTR, LEFT, у них в Pervasive синтаксис такой же как в фоксе, представление не работает. Здесь вполне логично. Драйвер ODBC для слишком больших полей выдает настройку размерности по умолчанию. По умолчанию часто идет логический. Поэтому лучше проперти вьюхи выставлять руками: DBSetProp(ThisView+'.MyField', 'Field', 'DataType', "C(250)") DBSetProp(ThisView+'.MyField', 'Field', 'DataType', "M") Если пофиг, что часть поля не влазит, можно оставить чар в 250 символов, если не пофиг, нужно чтобы влезло все 321, тогда надо использовать Memo ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2007, 08:30 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=187&tid=1588850]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 362ms |

| 0 / 0 |
