Форум » [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] Может что не так делаю ?

Ответов - 92, стр: 1 2 3 4 5 All

Andrey: Вывожу поле "=" или "@" через cValToChar((Alias())->TS) Получаю только "19.08.15" Как правильно выводить ?

SergKis: Andrey Пробуй: HB_TSTOSTR HB_TTOC HB_TTOD HB_TTON HB_TTOS HB_STOT HB_STRTOTS

Dima: Andrey HB_TSTOSTR (HB_DATETIME()) остальное не пробовал , так что пробуй , Сергей верно написал.


Andrey: Dima пишет: HB_TSTOSTR (HB_DATETIME()) То что надо !

Dima: Получил в логе (у клиента) ошибку 9006 hb_xgrab при создании индекса локально. У себя повторить тот же момент не смог. Правда у меня там косяк был типа index on str(cod,6)+skl_in TAG (zk) где zk:=TMMP+alltrim(left(sys_name,5))+"zwk" а переменная TMMP равна getenv("TEMP")+"\" но у меня не падает зараза Имя тега обрежется (проверил) если задано шибко длинное. Переделал на index on str(cod,6)+skl_in TAG tmp2 , буду наблюдать. PS DBFCDX

MIKHAIL: Попробовал добавить в БД тип поля AI + при открытии в ADS выдает ошибка, такой тип ADS не поддерживает?

Dima: MIKHAIL Глянь HELP http://devzone.advantagedatabase.com/dz/webhelp/advantage9.0/server1/dbf_field_types_and_specifications.htm Насколько я понял из сырца тип надо указать как "+"

MIKHAIL: Dima пишет: Насколько я понял из сырца тип надо указать как "+" Да, создает, но тип фалов ADSVFP, тип поля при этом определяет как числовой. У меня есть некоторые сомнения, если потом буду на Letodb переводить, будет ли он понимать эти таблицы или лучше не париться а использовать числовое поле и уникальный индекс в DBFCDX ?

Dima: MIKHAIL пишет: будет ли он понимать эти таблицы я бы проверил , но чую что должен понимать.

Haz: В ADS есть все типы полей. Догадываюсь что AI это автоинкремент В ADS поле называется AUTOINC. Все поддердиваемые типы есть в справе

Andrey: Использую в DBFCDX поле "+" AutoInc. Раньше (ещё в клипере) вёл свой AutoInc через отдельную базу. Хочу переделать. Можно ли как то изменить этот номер ? Нужно проставить свои значения в поле AutoInc.

SergKis: Andrey пишет:Можно ли как то изменить этот номер ? Поле защищено от записи. Свои значения можно получить в поле создав базу в последовательности старых значений и заполнив "дырки"

Andrey: SergKis пишет: Поле защищено от записи. В других базах это поле править можно ! Очень жалко... SergKis пишет: Свои значения можно получить в поле создав базу в последовательности старых значений и заполнив "дырки" Да дебилизм получается... У меня ID свой у некоторых заказчиках очень большой есть, типа 2315032. В своё время делал разноску по филиалам и надавал большие ID филиалам. Дырки заполнять не надо, пускай остаются. Со справочниками улиц тоже фигня получается. Лет 15 назад сделал его, переделать на новое поле получается нельзя.

SergKis: Andrey пишет: У меня ID свой у некоторых заказчиках очень большой Думаю путаешь Autoincrement (+1 с фиксацией в заголовке dbf) и логический ID записи, формируемый какими то алгоритмами.

Andrey: SergKis пишет: логический ID записи, формируемый какими то алгоритмами. Да вот захотел этот свой логический ID переделать на правильный AutoInc.

Sergy: Думаю, реально запросить у разработчиков место хранения инкрементного поля Harbour тут: https://groups.google.com/forum/#!forum/harbour-users После чего двоичным редактором поправить на нужное значение. Либо функция RDDI_*, DBI_* какая-то отвечает за это... Так же стоит обратить внимание на алгоритм работы autoinc полей в случае команды APPEND FROM: в принимающей базе эти поля продолжат наращивать свое значение последовательно, вне зависимости от значения полей источника. Это позволяет исключить ситуацию появления двух одинаковых значений.

Петр: Andrey пишет: Использую в DBFCDX поле "+" AutoInc. Раньше (ещё в клипере) вёл свой AutoInc через отдельную базу. Хочу переделать. Можно ли как то изменить этот номер ? Нужно проставить свои значения в поле AutoInc. Для новых наработок используйте "I:+", 8, например dbCreate( "tablewithai", { { "AI", "I:+", 8, 0 } } ) Тогда и поле менять сможете, и "большой ID" использовать Кстати, через ..опу, можете попробовать старые справочники импортировать.

Andrey: Петр пишет: Для новых наработок используйте "I:+", 8, Что за новый тип поля ?

Dima: Andrey пишет: Что за новый тип поля ? Петр все же описал :) До кучи [pre2] 2015-02-17 16:35 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) * src/rdd/dbf1.c + added support for autoincrement fields with counter longer then 4 bytes Warning: if someone created tables with such fields i.e. { "I:+", 8, 0 } after my modification which added support for AutoInc flags in all numeric DBF fields then he should update counters manually using DBS_COUNTER flag. New code uses 64bit counters for such field located in different part of DBFFIELD structure. [/pre2]

Andrey: А есть примеры как это делать ? DBS_COUNTER flag - как его использовать ?



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