Форум » [x]Harbour » Новые типы переменных ? » Ответить

Новые типы переменных ?

Andrey: Подскажите пожалуйста, а с какого времени существуют новые типы данных в базах Харбор/хХарбор ? + AutoInc 4 Auto increment = ModTime 8 Last modified date & time of this record ^ RowVers 8 Row version number; modification count of this record @ DayTime 8 Date & Time I Integer 1, 2, 3, 4 or 8 Signed Integer ( Width : )" },; T Time 4 or 8 Only time (if width is 4 ) or Date & Time (if width is 8 ) (?) V Variant 3, 4, 6 or more Variable type Field Y Currency 8 64 bit integer with implied 4 decimal B Double 8 Floating point / 64 bit binary Не заметил разницы между этими типами (или не понял): + AutoInc 4 Auto increment ^ RowVers 8 Row version number; modification count of this record Кто может разъяснить их применение ? Какой максимальный размер импорта файла для типов: M Memo P Picture B Blob V VarField Не смог записать ни в одно поле файл размером 3198 Мб через утилиту DBedit. Ошибка - [more] Application Internal Error - c:\clipbin\dbedit.exe Terminated at: 2013.05.06 13:00:49 Неисправимая ошибка 9006: hb_xgrab не может распределить память Called from MEMOREAD(0) Called from _FREAD(0) in \ts\clip50.lib\_EDITMEM.prg Called from USER(0) in \ts\clip50.lib\_EDITMEM.prg Called from (b)EDITMEMO(0) in \ts\clip50.lib\_EDITMEM.prg Called from TEXTEDIT(0) in \ts\clip50.lib\_TEXT.prg Called from EDITMEMO(0) in \ts\clip50.lib\_EDITMEM.prg Called from EDITVARFIELD(1600) in source\dbedit.prg Called from (b)GETCOL(1573) in source\dbedit.prg Called from GETBROWSE(0) in \ts\clip50.lib\_editbro.prg Called from EDITBROWSE(0) in \ts\clip50.lib\_editbro.prg Called from DBMENU(0) in \ts\clip50.lib\_dbmenu.prg Called from MAIN(821) in source\dbedit.prg [/more] Может что не так делаю ?

Ответов - 158, стр: 1 2 3 4 5 6 7 8 All

Dima: Andrey пишет: DBS_COUNTER flag - как его использовать ? Инфа на подумать... [pre2] 2012-06-18 17:33 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) * harbour/include/dbinfo.ch * harbour/src/rdd/dbf1.c + added new dbFieldInfo() actions: DBS_COUNTER - get/set autoincrement field counter DBS_STEP - get/set autoincrement field step * reset autoincrement and row version fields in ZAP operation [/pre2]

Dima: Видать так dbFieldInfo( DBS_COUNTER, FieldPos( <cFieldName> ) )

Петр: Dima пишет: Видать так dbFieldInfo( DBS_COUNTER, FieldPos( <cFieldName> ) ) В этом случае мы получим текущее значение счетчика для поля <cFieldName> А так мы можем его изменить oldCounterValue := dbFieldInfo( DBS_COUNTER, FieldPos( <cFieldName> ), newCounterValue ) dbCreate( "tableWithAI", { { "AI", "I:+", 8, 0 } } ) USE tableWithAI NEW dbFieldInfo( DBS_COUNTER, FieldPos( "AI" ), 10 ) dbFieldInfo( DBS_STEP, FieldPos( "AI" ), 2 ) FOR i := 1 TO 3 APPEND BLANK NEXT i FOR i := 1 TO 3 dbGoto(i) ? FIELD->AI NEXT i dbGoto(2) FIELD->AI := 11 FOR i := 1 TO 3 dbGoto(i) ? FIELD->AI NEXT i USE И еще по типам данных полей БД 2015-02-08 13:19 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) * src/rdd/workarea.c + added support for field flags in dbCreate()/dbStruct(). Flags can be passed in string with field type after ":", i.e. "C:U" means Unicode character field. The following flags are recognized: "N" - column can store null values "B" - binary column "+" - column is autoincrementing "Z" - column is compressed "E" - column is encrypted "U" - column stores Unicode strings


Andrey: Петр пишет: И еще по типам данных полей БД "Z" - column is compressed "E" - column is encrypted Это что за интересный тип полей ? Т.е. можно туда допустим текстовый файл передать, он будет храниться в архивном виде ? Какая длина поля максимальная по этому типу ? А другой тип для чего ? Всё интересней и интересней...

Петр: Andrey пишет: Это что за интересный тип полей ? Это не тип полей, это свойства полей, т.н. "field flags" - i.e. "C:Z" или "M:Z" или "B:Z" Т.е. поле символьное сжатое или мемо сжатое или.. Andrey пишет: Какая длина поля максимальная по этому типу ? см. выше Andrey пишет: А другой тип для чего ? опять-таки не тип, а поле символьное зашифрованое или мемо зашифрованое или.. Andrey пишет: Т.е. можно туда допустим текстовый файл передать, он будет храниться в архивном виде ? Храниться будет в том виде, в котором поместите. До сих пор за все манипуляции с полями dbf файла отвечает программист. Автоматически ничего не будет ни сжиматься, на шифроваться. По крайней мере сейчас, дальше все могет быть. Так что или ждите или пишите usrrdd, используйте hb_gzipio - "полуфабрикатов" в harbour предостаточно.

Andrey: Петр пишет: dbCreate( "tableWithAI", { { "AI", "I:+", 8, 0 } } ) Добавил такое поле в базу. При создании базы счётчик есть. После этого при добавлении записей - поле по нулям. Т.е. нет приращения в поле. Пробовал в утилите Павла - dbedit.exe

Dima: Andrey пишет: Пробовал в утилите Павла - dbedit.exe Пробовать надо не в утилите Она не понимает формат поля "I:+" Проверил работает , смотри пример выше , Петр давал. Но Harbour должен быть не старее чем февраль 2015 , иначе ни куя не сработает. Кроме того не известно каким Harbour собран Dbedit

Andrey: Dima пишет: Но Harbour должен быть не старее чем февраль 2015 Собирал на новом МиниГуи, там Харбор свежее. А хХарбор поддерживает эти типы полей ?

Dima: Andrey пишет: Собирал на новом МиниГуи, там Харбор свежее. Значит там работает

Andrey: Dima пишет: А глянь пример C:\MiniGUI\SAMPLES\Advanced\RibbonBar\ Спасибо Дима ! То что нужно. Там вверху стоит FIELD NOMBRE,DIRECCION,LOCALIDAD,PAIS,CODPOST,;

Dima: Andrey А темку я перенес по ходу http://clipper.borda.ru/?1-4-0-00001153-000-0-0-1473335505

Andrey: Всем привет. Сделал года два назад своё поле IMZ типа: @ DayTime 8 Date & Time Сергей ранее писал про него, что туда нужно самому писать. Ничего в него не писал никогда, сейчас собрался его подключить и вижу, что некоторые записи уже исправлены: Как такое могло случиться ? Блин, как в кино: не виновата я, он сам пришёл....

Dima: Andrey пишет: Как такое могло случиться ? Сам и записал , но забыл как обычно

Andrey: Dima пишет: Сам и записал , но забыл как обычно Да обыскал все свои исходники - нет у меня записи нигде в поле IMZ. Может ли такое случить (самопроизвольно) если базы копировались из одной в другою ?

Pasha: В поле @ aka TimeStamp dbfcdx автоматически записывает время последнего изменения текущей записи.

Andrey: Уф... Теперь стало понятней. А какое поле можно сделать для своего редактирования для типа поля TimeStamp ?

SergKis: ChangLog.txt. 2009-11-25 19:10 ; Current field type mappings are: C; Character,n HB_FT_STRING,n ADS_STRING N; Numeric,n,d HB_FT_LONG,n,d ADS_NUMERIC D; Date,n HB_FT_DATE,3 or 4 or 8 ADS_COMPACTDATE; ADS_DATE ShortDate HB_FT_DATE,3 ADS_COMPACTDATE L; Logical HB_FT_LOGICAL,1 ADS_LOGICAL M; Memo,n HB_FT_MEMO,4 or 9 or 8 ADS_MEMO B; Double,,d HB_FT_DOUBLE,8,d ADS_DOUBLE I; Integer,n HB_FT_INTEGER, 2 or 4 or 8 ADS_SHORTINT; ADS_INTEGER; ADS_LONGLONG ShortInt HB_FT_INTEGER,2 ADS_SHORTINT Longlong HB_FT_INTEGER,8 ADS_LONGLONG P; Image HB_FT_IMAGE,9 or 10 ADS_IMAGE W; Binary HB_FT_BLOB,4 or 9 or 10 ADS_BINARY Y; Money HB_FT_CURRENCY,8,4 ADS_MONEY Z; CurDouble,,d HB_FT_CURDOUBLE,8,d ADS_CURDOUBLE T,4; Time HB_FT_TIME,4 ADS_TIME @; T,8; TimeStamp HB_FT_TIMESTAMP,8 ADS_TIMESTAMP +; AutoInc HB_FT_AUTOINC,4 ADS_AUTOINC ^; RowVersion HB_FT_ROWVER,8 ADS_ROWVERSION =; ModTime HB_FT_MODTIME,8 ADS_MODTIME Raw,n HB_FT_STRING,n (+HB_FF_BINARY) ADS_RAW Q; VarChar,n HB_FT_VARLENGTH,n ADS_VARCHAR; ADS_VARCHAR_FOX VarBinary,n HB_FT_VARLENGTH,n (+HB_FF_BINARY) ADS_VARBINARY_FOX; ADS_RAW CICharacter,n HB_FT_STRING,n ADS_CISTRING

Sergy: Pasha пишет: В поле @ aka TimeStamp dbfcdx автоматически записывает время последнего изменения текущей записи. Уверен, что Harbour сам никогда ничего не пишет в поле типа "@" (FT_TIMESTAMP). Потому что для этого предназначено поле типа "=" (FT_MODTIME). Andrey пишет: А какое поле можно сделать для своего редактирования для типа поля TimeStamp ? Уточню - что указанное поведение полей "@" и "=" относится к Harbour. Как с этим в xH - не в курсе.

SergKis: Sergy для xhb ставим RddInfo( RDDI_TABLETYPE, DB_DBF_VFP ) и тоже ок. letodb 1-ой версии (2х поточная) сервер собирался на xhb, это использует, на клиент не передаются такие поя, но с триггером на сервере ок.

Pasha: Sergy пишет: Уверен, что Harbour сам никогда ничего не пишет в поле типа "@" (FT_TIMESTAMP). Потому что для этого предназначено поле типа "=" (FT_MODTIME). В Harbour это так. А в xHarbour в функции hb_dbfUpdateStampFields время пишется и в HB_FT_TIMESTAMP, и в HB_FT_MODTIME



полная версия страницы