Форум » [x]Harbour » Как создать поле ID для рабочей базы ? » Ответить

Как создать поле ID для рабочей базы ?

Andrey: Всем привет. Потребовалось мне для своей (уже рабочей) базы сделать уникальный ID - числовое поле. В моей базе уже есть в принципе уникальный ID, состоящий только из 3 полей: Номер заявки ( N 8) - каждый месяц заявка начинается с номера 1, т.е. для первого месяца 101, для второго 102 и т.д. Номер заявки получается уникальным только в текущем году. Дата заявки (D 8) Время заявки (N 4) Как бы из этих полей получить уникальное число ? Подскажите пожалуйста как... Заранее спасибо.

Ответов - 17

AlexMyr: Andrey пишет: Как бы из этих полей получить уникальное число ? Ладно, номер заявки начинается с 1 каждый месяц, а во что дату превращаете, что номер получается уникальным только в текущем году, или дату не используете? Используйте тогда номер заявки + тип поля @(; T,8; TimeStamp HB_FT_TIMESTAMP,8)

Andrey: AlexMyr пишет: а во что дату превращаете, что номер получается уникальным только в текущем году, или дату не используете? Дату не превращаю ни во что, использую только месяц. Просто до этого не стояла задача сделать ID заявки. А вот сейчас потребовалось. AlexMyr пишет: Используйте тогда номер заявки + тип поля @(; T,8; TimeStamp HB_FT_TIMESTAMP,8) Не совсем понял как использовать ? Не желательно вводить новые поля в базу. Можно ли превратить дату в уникальное число ? cVal := LTRIM(STR(FIELD->NZA))+DTOS(FIELD->DATEZA)+PADL( LTRIM(STR(FIELD->TIMEZA)) ,4,"0") ------- Номер заявки ( N 8) + Дата заявки (D 8) + Время заявки (N 4) ? VAL(cVal) -> будет ли уникальным числом ?

SadStar55: YYYY<номер заявки>


SergKis: Andrey пишет:Не желательно вводить новые поля в базу Здорово, а у нас на законодательном уровне требуют наличие: 1. ID в течении года уникальное 2. Дату создания записи 3. Дату модификации записи 4. Дату удаления записи 5. Кто проводил операцию (User) Это основные параметры для проверяющих. Наличие ID на всех внешних распечатках.

ММК: Андрей пишет: Можно ли превратить дату в уникальное число ? Легким движением руки .... Например число дней прошедших со дня Великой Октябрьской Революции до этой даты! Можешь к этому добавить номер заявки :) P.S. Вот ,Вы как то интересовались - http://forums.fivetechsupport.com/viewtopic.php?f=3&t=25917&sid=4267b85fa549bc7c4e25a8eec73f992d и это значит ,что - On the server you are running a Harbour (+ FIveWeb) app and of course you can manage DBFs etc, as it is a Harbour app ( или MySQL ) и , как следствие , работает на iPad и т.д.

AlexMyr: SergKis пишет: 4. Дату удаления записи Это что и Pack не сделаешь, и ранее помеченную на удаление запись вновь не используешь?

Pasha: ММК пишет: Легким движением руки .... Например число дней прошедших со дня Великой Октябрьской Революции до этой даты! L2Bin(НомерЗаявки) + I2Bin(Дата-CTOD("07.11.1917")) + I2Bin(Время) В число переводить необязательно. Строка для ID сойдет

nick_mi: SadStar55 писал YYYY<номер заявки> Обеспечивает уникальность без всяких вывертов

ММК: Pasha пишет: В число переводить необязательно. Строка для ID сойдет Жедание Андрея для меня превыше всего !!!! :)))) Андрей пишет: Потребовалось мне для своей (уже рабочей) базы сделать уникальный ID - числовое поле.

SergKis: AlexMyr пишет:Оффтоп: Это что и Pack не сделаешь, и ранее помеченную на удаление запись вновь не используешь? Если есть log файл, то можно pack, если нет ... . Это никому не интересно - выдать надо всю историю изменений, если просят.

Pasha: SergKis пишет: Здорово, а у нас на законодательном уровне требуют наличие: Сурово у вас в Европе. Но у нас, как я понимаю, такое еще впереди. Наши обезьяны обязательно скопируют передовой опыт :-) Но это, как я понимаю, касается расчетов с клиентами ?

Andrey: Pasha пишет: L2Bin(НомерЗаявки) + I2Bin(Дата-CTOD("07.11.1917")) + I2Bin(Время) В число переводить необязательно. Строка для ID сойдет Нет, нужно число ! Если сделать VAL(этой строки), то число будет уникальным ?

Pasha: Нет, двоичное представление числа нельзя передавать функции val nick_mi пишет: SadStar55 писал цитата: YYYY<номер заявки> Обеспечивает уникальность без всяких вывертов Чем не вариант ? Ведь номер заявки уникален в пределах года.

Andrey: Pasha пишет: Чем не вариант ? Ведь номер заявки уникален в пределах года. Да уникален. Иногда простое не всегда увидишь и оценишь.... Спасибо БОЛЬШОЕ всем за помощь ! Буду делать тогда этот вариант...

SergKis: Pasha пишет:Но это, как я понимаю, касается расчетов с клиентами ? Документооборот, связанный с налогами и все проводки баланса .

AlexMyr: SergKis пишет: Документооборот, связанный с налогами и все проводки баланса . Как они это проверяют, можно ж доставить, исправить, ... в этих полях?

SergKis: AlexMyr пишет:Как они это проверяют, можно ж доставить, исправить, ... в этих полях? Так документы все строгой отчетности (было время их надо было покупать, потом получать список номеров на организацию). Сейчас можно в Internete через спец. сайт кучу форм руками заполнить, или автоматизированно xml-ы загрузить в систему. На импорте xml есть контроль. Есть спец.сайт по клиентам LV и ES, при заключении договора с клиентом бухг. должен проверить данные о клиенте и если их нет - клиент левый ...



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