Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.02.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.01 c
1-15599
@andrew
2003-01-28 11:22
2003.02.06
А как закрыть форму с нужным ModalResult?


7-15961
aleksander
2002-11-21 11:11
2003.02.06
Уникалный идентификатор HDD


1-15553
jen_bond
2003-01-28 00:35
2003.02.06
файл с расширнием .SHP


1-15607
Ihtiandr
2003-01-29 11:18
2003.02.06
Combobox


1-15557
Jaxtor
2003-01-28 15:09
2003.02.06
Функция выравнивания в ComboBox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский