powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Беда таблички - заменяется ID командой Replace, Gather.
12 сообщений из 12, страница 1 из 1
Беда таблички - заменяется ID командой Replace, Gather.
    #38052748
Фотография MaestroEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть в программе Id код записи вот этот: Нx€Ѕд)џJҐMЕЊ cM4
В таблички в разные он лезет Replacом нормально, а вот в одну лезет вот так: Íx__ä)_JÃMÅ_ cM4 и естественно это уже другой код. Он как-то преобразуется в момент записи в эту таблицу. Записывая даже в ручном режиме (Replace) во всякие разные lheubt таблицы - все нормально. Проблема именно с одной табличкой. Поле переименовывал. Добавлял в другое, новое - все едино - беда именно с табличкой.

Что с табличкой не так? Куда копать?
...
Рейтинг: 0 / 0
Беда таблички - заменяется ID командой Replace, Gather.
    #38052761
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CP таблицы?
...
Рейтинг: 0 / 0
Беда таблички - заменяется ID командой Replace, Gather.
    #38052762
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaestroEvНx€Ѕд)џJҐMЕЊ cM4
Жесть.
попробуй тип поля Charaster (binary) поставить.
...
Рейтинг: 0 / 0
Беда таблички - заменяется ID командой Replace, Gather.
    #38052764
ArgonS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaestroEv,

а пробовали создать клона таблицы(желательно ручками)? Если получиться записывать все по "нормальному", то проблема с самой таблицей, если нет то с кодом.
...
Рейтинг: 0 / 0
Беда таблички - заменяется ID командой Replace, Gather.
    #38052772
Фотография MaestroEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин. Вот я.. не ожидал. Там и правда 866. Спасибо. Единственная табличка из "прошлой жизни".
...
Рейтинг: 0 / 0
Беда таблички - заменяется ID командой Replace, Gather.
    #38052774
MaestroEv,
Код записи = строковые данные....:-( Голову бы разработчику оторвать...
MaestroEvВ таблички в разные он лезет Replacом нормально, а вот в одну лезет вот так:

Кто куда лезет? :-)))

По теме... Что-то мне кажется, что тут проблема с кодировкой.... Копай в эту сторону...
...
Рейтинг: 0 / 0
Беда таблички - заменяется ID командой Replace, Gather.
    #38054203
Фотография MaestroEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да с кодировкой.. спасибо.

Строковые записи - код записи - голову оторвать..
А как иначе? Нумерик? Чтобы всегда рос? А если таблицам по 15 лет? При вводе новой записи искать дырки? На это уйдет куча ресурсов если таблиц более 100...
А если код уникален на 10 серверах.. то составной индекс?

Че-то я пока с головой останусь.. А вот тем кто использует нумерик в ID .. тем стоит задуматься. :)
...
Рейтинг: 0 / 0
Беда таблички - заменяется ID командой Replace, Gather.
    #38054229
MaestroEv
Че-то я пока с головой останусь.. А вот тем кто использует нумерик в ID .. тем стоит задуматься. :)

Насколько я помню, в DBF таблице может быть максимум 1 миллиард записей, почему Вы решили, что нумерика для этого не хватит?
...
Рейтинг: 0 / 0
Беда таблички - заменяется ID командой Replace, Gather.
    #38054252
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaestroEvСтроковые записи - код записи - голову оторвать..
А как иначе? Нумерик? Чтобы всегда рос? А если таблицам по 15 лет? При вводе новой записи искать дырки? На это уйдет куча ресурсов если таблиц более 100...
А если код уникален на 10 серверах.. то составной индекс?
Все зависит от задачи. У тебя походу GUID в строке хранится. Он тоже 16 байт. Просто для читабельности его при выводе в 16-ричный вид преобразовывают. В фоксе под него нет специального типа, вот и хранят в строке, только такие строки надо как Binary хранить, чтоб кодовые страницы не гадили и индексы правильно работали при collate "russian"
Ну и про 15 лет и дырки ты загнул. Скорее всего разработчики просто решили использовать GUID чтобы не заморачиваться с написаним самопальных счетчиков и распределением диапазонов ID-шников по разным базам.

MaestroEvЧе-то я пока с головой останусь.. А вот тем кто использует нумерик в ID .. тем стоит задуматься. :)
нумерик не советую (он как строка хранится), а вот Integer - да. причем везде где только можно.
У GUIDа один плюс - глобальная уникальность, зато есть серьезный минус - размер. Сравни или 16 байт или 4 байта Integer, который позволяет сгенерить 2 миллиарда значений, которых в 99% случаев хватит на 100 лет работы.
А 4 байта против 16 это:
1. Размер базы меньше. Посчитай сколько там ID-шников разных хранится.
2. Сравнение быстрее, т.е. операции индексирования и поиска

Я как-то переболел GUIDами в свое время, тоже сначала подумал какое замечательное супер-изобретение, а потом проводил тесты, взял базу не маленькую и заменил все поля Integer на GUID: размер вырос ощутимо, время тех же выборок выросло в разы.
...
Рейтинг: 0 / 0
Беда таблички - заменяется ID командой Replace, Gather.
    #38054257
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я конечно не корифей, поэтому лучше сослаться на классиков, например Базиян, где он писал, что поле Numeric(это у него совет, а не руководство), надо применять, где будут операции над числами, и приведёно код для получения id в символьном виде..
...
Рейтинг: 0 / 0
Беда таблички - заменяется ID командой Replace, Gather.
    #38054267
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимоходом555Насколько я помню, в DBF таблице может быть максимум 1 миллиард записей
Точнее ограничение DBF - 2 Гб на файл. В каждой записи 1 байт под пометку удаления, остальное данные.
Поэтому 1 миллиард записей - если запись из одного поля в 1 байт. Что-то осмысленное в такую запись не сохранишь, поэтому в реальные таблицы еще меньше записей влазит.
...
Рейтинг: 0 / 0
Беда таблички - заменяется ID командой Replace, Gather.
    #38054281
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1Я конечно не корифей, поэтому лучше сослаться на классиков, например Базиян, где он писал, что поле Numeric(это у него совет, а не руководство), надо применять, где будут операции над числами, и приведёно код для получения id в символьном виде..
Возможно это у него со времен FPD отложилось. Тогда не было в фоксе типа Integer. Было два варианта нумерик и строка.
нумерик - хранится как строка из цифр, т.е. N(5) - занимает 5 байт в файле.
Поэтому используя для генерации ID буквы и цифры в строке требуется меньше места. Например если использовать цифры и английские буквы то один разряд будет 62 (10 + 26 + 26) комбинации против 10-ти в нумерик.
например 4 байта в такой строке дают 62^4 = 14'776'336 значений, т.е. строка 4 байта содержит чуть больше полезной информации чем N(7)

Лично я в FPD тоже использовал строки для IDшников.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Беда таблички - заменяется ID командой Replace, Gather.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]