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

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

Andrey: Pasha пишет: В Harbour это так. А в xHarbour в функции hb_dbfUpdateStampFields время пишется и в HB_FT_TIMESTAMP, и в HB_FT_MODTIME Понял я в чем дело. У меня базы работают одновременно и с терминалкой (хХарбор) и на МиниГуи (Харбор). Значит это мне терминалка пишет всякую фигню в базу. От терминалки юзера не хотят отказываться, придётся пока это поле "@" пока не трогать. Поставил в начале базы новые типы полей и все вьювера перестали работать. Нечего юзерам лазить по базам.

Haz: Andrey пишет: От терминалки юзера не хотят отказываться, придётся пока это поле "@" пока не трогать. Перекомпилируй под харбур и все, можешь трогать. Все же в харбур более адекватная работа с этими полями.

Andrey: Haz пишет: Перекомпилируй под харбур и все, можешь трогать. Все же в харбур более адекватная работа с этими полями. Да уже не хочется заморачиваться с терминалкой. Заканчиваю перевод проекта на МиниГуи, а старый проект хочу сворачивать.


Andrey: AADD( aDbf , {"DT_ADD" ,"T", 8, 0 } ) // RDD-TimeStamp дата+время+миллисекунды Пишу в поле для теста :[pre2] t1 := hb_DateTime() t2 := hb_NtoT( hb_TtoN( t1 ) - nI * 100 ) ? "t1=",t1, "t2=",t2, Valtype(t2) (TEMPDBF)->DT_ADD := t2 // дату+время вставки записи[/pre2] В отладке так: [pre2] t1= 2018-09-27 22:37:03.755 t2= 2018-06-19 22:37:03.755 T t1= 2018-09-27 22:37:03.774 t2= 2018-03-11 22:37:03.774 T t1= 2018-09-27 22:37:03.792 t2= 2017-12-01 22:37:03.792 T t1= 2018-09-27 22:37:03.81 t2= 2017-08-23 22:37:03.81 T t1= 2018-09-27 22:37:03.828 t2= 2017-05-15 22:37:03.828 T [/pre2] В базе в поле DT_ADD:[pre2] 27.09.2018 22:37:03.774 27.09.2018 22:37:03.792 27.09.2018 22:37:03.810 27.09.2018 22:37:03.828 [/pre2] Чудеса ?

SergKis: Andrey пишет Чудеса ? Не знаю, но догадываюсь как ты их творишь.[pre2] t1 := hb_DateTime() t2 := hb_NtoT( hb_TtoN( t1 ) - nI * 100 ) (TEMPDBF)->DT_DEL := t1 (TEMPDBF)->DT_REST := t2 dbSkip(0) ? "t1=",t1, "t2=",t2, 'DT_DEL=',(TEMPDBF)->DT_DEL,'DT_REST',(TEMPDBF)->DT_REST результат t1= 2018-09-28 05:41:42.659 t2= 2018-06-20 05:41:42.659 DT_DEL= 2018-09-28 05:41:42.659 DT_REST= 2018-06-20 05:41:42.659 t1= 2018-09-28 05:41:42.675 t2= 2018-03-12 05:41:42.675 DT_DEL= 2018-09-28 05:41:42.675 DT_REST= 2018-03-12 05:41:42.675 t1= 2018-09-28 05:41:42.675 t2= 2017-12-02 05:41:42.675 DT_DEL= 2018-09-28 05:41:42.675 DT_REST= 2017-12-02 05:41:42.675 t1= 2018-09-28 05:41:42.675 t2= 2017-08-24 05:41:42.675 DT_DEL= 2018-09-28 05:41:42.675 DT_REST= 2017-08-24 05:41:42.675 t1= 2018-09-28 05:41:42.691 t2= 2017-05-16 05:41:42.691 DT_DEL= 2018-09-28 05:41:42.691 DT_REST= 2017-05-16 05:41:42.691 ... [/pre2]

Pasha: Andrey пишет: Чудеса ? А в чем прикол, кроме нехватки одной строки ? Или это шарада типа "Найди 10 различий" ?

SergKis: Pasha пишет А в чем прикол, кроме нехватки одной строки ? Или это шарада типа "Найди 10 различий" ? Просто Андрей, как всегда, просмотрел, что после его команд, стоит (TEMPDBF)->DT_ADD := (TEMPDBF)->TS которая переносит значение из поля '=' ( TS ) в поле DT_ADD. у меня есть вариант prg файла

SergKis: PS А хотел он заполнить DT_ADD более ранними значениями TimeStamp

Pasha: Да там странный код какой-то. От даты зачем-то отнимается большое количество дней (если nI - целое, а там фиг его знает). Это можно сделать проще: Вместо: hb_NtoT( hb_TtoN( t1 ) - nI * 100 ) можно сделать просто: t1 - nI * 100 поскольку тип TimeStamp - это просто double, где целая часть - дата, а дробная - время. Ну и наверное что-то еще перепутано с переменными, поскольку DT_ADD получает значение t1.

SergKis: Pasha пишет Ну и наверное что-то еще перепутано с переменными, поскольку DT_ADD получает значение t1 Путаницы нет, идет добавление записей в тест. таблицу ("мусорные" значения) с полями +,=,^ t1 := hb_DateTime(), в поле DT_ADD пишет t2, а следом идет запись в DT_ADD из поля TS (тип =, rdd заполнение ) т.е. значение t1 и rdd одинаковые, что логично

Pasha: В коде этого же нет, а я увы не телепат. Если так, то все понятно, все логично

Andrey: SergKis пишет: Просто Андрей, как всегда, просмотрел, что после его команд, стоит (TEMPDBF)->DT_ADD := (TEMPDBF)->TS которая переносит значение из поля '=' ( TS ) в поле DT_ADD. Как всегда Спасибо !

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 открыть через ADS или локальный клиент ADS ? Сразу возникает вопрос зачем ? А чтобы другой программист мог при логиниться к базе и выбрать нужные записи.

Pasha: Открываем advantage.chm (у меня нашелся для ads 11), ищем раздел DBF Field Types and Specifications там упоминается поля типа AutoInc, TimeStamp RowVer, ModTime похоже нет. Может в более поздних версиях и есть, надо смотреть.

Dima: http://devzone.advantagedatabase.com/dz/webhelp/Advantage12/index.html?master_dbf_field_types_and_specifications.htm

Haz: Эти поля в полном составе есть только в нативном формате ADS , т.е в ADT А чтобы другой программист мог при логиниться к базе и выбрать нужные записи. другой программист может логиниться и выбирать через DBDCDX , и если нужно , то результат писать в свой ADS . Вобщем проблемы не вижу при работе в харбуре. Если речь идет о доступе из другого языка программирования к расширенным типам полей DBF, то у меня сомнения что это вообще возможно.

Andrey: Haz пишет: другой программист может логиниться и выбирать через DBDCDX , и если нужно , то результат писать в свой ADS . Вобщем проблемы не вижу Другой программист на Дельфи работает. Вот и хочет получить доступ к моей базе через Дельфи.

Haz: Andrey пишет: Другой программист на Дельфи работает. Вот и хочет получить доступ к моей базе через Дельфи. Скорее всего пусть забудет об этой идее , вопрос не в ADS а в том что RDD в дельфи скорее всего таких типов не знает в DBF

Haz: Андрей , если бы твоя база была в ADT , то все получилось бы. Если базы не на теробайты, то проще сделать конвертор DBF->ADT а к ADT дельфист легко цепанется через свой ADS

Pasha: Насколько я помню, для Delphi используется клиент от Extend Systems, или кто там его купил-перекупил, наследник TDataSet Так что сами разработчики поддержку своих же типов данных должны были сделать. Другой вопрос, что не все типы данных поддерживает сам Ads



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