Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.06;
Скачать: CL | DM;

Вниз

номера документов   Найти похожие ветки 

 
Jeka   (2003-01-20 13:41) [0]

Здраствуйте мастера!
Как сделать чтоб при добавлении новой записи в таблицу(документ НП) ставился номер напр.НП-1002, НП-1003 и т.д.НП- это накладная на перемещение, имеется еще другие таблици напр. (документ НО)-накладная на отпуск. В свою очередь эти номера отображаются в общей таблици Документы.


 
passm ©   (2003-01-20 13:59) [1]

Jeka (20.01.03 13:41)> Заведи таблицу
CREATE TABLE OPERATION
ID INTEGER,
NAME VARCHAR(32),
SHORT_NAME VARCHAR(2)
И в таблице документы поставь ссылку на OPERATION, и уникальное (DOC_NUM INTEGER, OPERATION INTEGER).
Т. о. имеешь уникальный номер для каждого типа документов (DOC_NUM) и суффикс номера документа (DOCUMENT.OPERATION -> OPERATION.ID -> OPERATION.SHORT_NAME)
Номер документа можешь хранить или получать запросом:
SELECT OP.SHORT_NAME || "-" || CHAR(DC.DOC_NUM) AS DOC_NUM_STR
FROM DOCUMENT DC
INNER JOIN OPERATION OP ON (DC.OPERATION = OP.ID)
В заключение добавлю, что в DOCUMENT можешь добавить сквозное уникальное поле (итоговый номер документа тоже может сгодиться) для более очевидной ссылочности.
ЗЫ: Надеюсь, что объяснил внятно :)


 
Jeka   (2003-01-20 14:10) [2]

спасибо за ответ
а как можно сделать без sql
проста я хотел бы чтоб эта программа без sql работала
она для диплома слишком усложнять неохота писменный материал для нее почти готов, собственно по нему и делается да и одногрупники зашкнят. Ихнии работы итак несравнить с той которую я выбрал.


 
stone ©   (2003-01-20 14:16) [3]

Создай вычисляемое строковое поле в таблице и в OnCalcFields напиши:

MyCalcField.Value := "НП-" + MyNomer.AsString;


 
ufff ©   (2003-01-20 14:17) [4]

создай вычисляемое поле,
в OnCalcFields - в соответствии с типом документа генерируй визуальный номер....


 
Lord Warlock ©   (2003-01-20 14:21) [5]

Создай динамический StrLst: TStringList и заполняй его необходимыми префиксами при старте программы.

Когда добавляешь документ (наверняка это делается конпкой или еще как), в зависимости от вида документа в глобальную переменную целого типа (например Ind) присваивай индекс нужной строки в StringList-e на событие OnNewRecord таблицы делай примерно следующее:

Dataset["DokNum"]:=StrLst[Ind]+ТвояФункцияПолученияПорядковогоНомера

Это на случай если документы разных типов хранятся в одной таблице.
Если они лежат каждый в своей таблице, на OnNewRecord соответствующих таблиц прописывай фиксированные префиксы


 
passm ©   (2003-01-20 14:23) [6]

Jeka (20.01.03 14:10)> Завести сквозное поле с номером документа и заполнять его программно (потом легче будет прописывать ссылки из содержания документов (если они будут)). Но все равно при добавлении нового документа будет необходимо найти документ с максимальным номером. А это, IMHO, лучше выполнить через SQL.


 
BorisUK ©   (2003-01-20 14:28) [7]

Еще лучше общий генератор иметь, а при добавления повешать тригер и в нем уже делать то что написал
> passm © (20.01.03 13:59)

А на счет того что усложнять или нет это как говорится желание хозяина. Другое дело искать легких путей, другое - стараться все сделать правильно и как лучше.



 
Jeka   (2003-01-20 14:31) [8]

огромное спасибо всем все ваши советы приму во внемание


 
passm ©   (2003-01-20 14:49) [9]

BorisUK © (20.01.03 14:28)> Триггер - это слишком для Paradox"а :)



Страницы: 1 вся ветка

Текущий архив: 2003.02.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.025 c
14-15852
Ihor Osov'yak
2003-01-17 21:08
2003.02.06
Структура NTFS


3-15525
Виталий Панасенко
2003-01-21 13:50
2003.02.06
АДО и FoxPro for DOS


1-15567
BOA_KAA
2003-01-27 11:00
2003.02.06
Настройки


14-15928
Ketmar
2003-01-21 16:39
2003.02.06
чем бы таким очень маленьким и халявным просматривать .ps?


1-15756
Lilo
2003-01-28 11:41
2003.02.06
Скажите, а как определит цвет, который находится под курсором