|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
выполнить действие если оно = тому или другому условию
Подскажите пожалуйста, как сделать следующее: (база акес) при добавлении записи, в одно поле ручками забивается дата к примеру (01.01.2008) то во второе поле автоматом должен забивается номер приказа (№ 1), добавляется еще одна запись дата таже (01.01.2008) то номер приказа будет такой (№ 1/1) и если добавить еще запись с тойже датой (01.01.2008) то приказ (№ 1/2). Добавляется еще одна запись дата уже большая (05.01.2008) то приказ (№ 2). И еще одно условие при наступлении нового года нумерация приказов должна начинатся с начала (№ 1)
|
#2
|
|||
|
|||
ну самое простое - вести табличку в которой для каждой даты будет храниться номер последнего приказа.
1.ручками забиваем дату 2. тут можно по разному (кнопкой, на потерю фокуса, на изменение) анализируем что было введено, если дата верная, то смотрим в табличку есть ли запись с такой датой, если есть то номер приказа берем оттуда и увлеичиваем в табличке на 1, если нет создаем запись и ставим в нее номер 2, а в эдит пишем 1 PS каков вопрос - таков ответ правильный вопрос содержит в себе 90% ответа |
#3
|
||||
|
||||
Цитата:
xchrom (лучше на кнопку), а как это в коде реализовать??? |
#4
|
|||
|
|||
В BeforePost можно сделать запрос в БД, получить последний номер, прибавть к нему единичку и "положит" в соответсвующее поле. Кроме того, надо будет сделать индекс по дате.
Второй вариант - написать процку, которая по переданной дате вернет следующий номер. Это оптимальный вариант. Фактически, в этом случае твой код не будет зависить от того, как ты реально получаешь номер следующего договора. Это может быть какой-либо счетчик (отдельная таблица типа "Год-счетчик"), это может быть запрос а-ля первый вариант, ну или любой другой вариант, который ты придумаешь. |
#5
|
|||
|
|||
хм... ну например получение номера следующего документа на определенную дату можно оформить такой функцией
Код:
// функция получения следующего номера документа за определенную дату function TForm1.GetNewNum(dt: integer): string; begin //seq - табличка в БД с двумя полями, описание полей ниже if not seq.Locate('dat',dt,[]) then //ищем дату такую в табличке begin //если не нашли, добавляем запись и номер ставим 2, возвращаем 1 seq.Insert; seq.FieldByName('dat').AsInteger := dt;//тип целое. ключевое. дата приказа в виде целого числа seq.FieldByName('nxt').AsInteger := 2;//тип целое. номер следующего приказа за дату seq.Post; Result := '1'; Exit; end else begin //если нашли дату, т.е. были документы на эту дату Result := seq.fieldbyname('nxt').AsString;//берем номер seq.Edit; // и увеличиваем в табличке на 1 seq.FieldByName('nxt').AsInteger := seq.FieldByName('nxt').AsInteger +1; seq.Post; end; end; PS это не решение твоей задачи, а так наводка на мысли, делать все за тебя мне скучно правильный вопрос содержит в себе 90% ответа |
#6
|
|||
|
|||
глюк, надо удалить
правильный вопрос содержит в себе 90% ответа |