01.04.2005, 18:37 | #1 |
Участник
|
Подскажите чего надо сделать
На таблице я создал метод InventSerialNum, который возвращает будущее значение поля, вставляемой записи. При перекрытии метода initValue мне надо вставить запись, но
проблемы в том: 1) в методе initValue я не могу вызвать InventSerialNum, т.к. компилятор говорит что функция не была определина. 2) в InventSerialNum используется значение поля ItemId создаваемой записи => я не могу вызвать InventSerialNum пока не создам запись => надо вызывать когда уже есть ItemId |
|
01.04.2005, 18:41 | #2 |
Модератор
|
Re: Подскажите чего надо сделать
Цитата:
Изначально опубликовано Red Stranger
При перекрытии метода initValue мне надо вставить запись.... С Уважением, Георгий. |
|
01.04.2005, 18:46 | #3 |
Участник
|
Напиши, что конкретно тебе надо сделать!
По-моему, то что ты хочешь надо делать в insert на таблице!?!? |
|
02.04.2005, 13:07 | #4 |
Участник
|
Re: Подскажите чего надо сделать
Цитата:
Изначально опубликовано Red Stranger
т.к. компилятор говорит что... У парня две проблемы: 1. логическая - как и в какой момент взять значение 2. как скомпилировать сейчас главный вопрос - про компилятор. Red Stranger, вы создали метод, но еще не записали его. Поэтому компилятор не может скомилировать другие методы, которые вызывают ваш новый метод. Что делать: 1. в вашем новом методе закоментируйте все строчки 2. откомпилируйте его 3. затем откопилируйте метод initValue 4. раскомментируйте строчки в InventSerialNum С формальностями покончили. Теперь по поводу смысловой части. Вы делаете неправильно. Слушайте что вам посоветовали. Разберитесь с нумераторами. |
|
04.04.2005, 10:29 | #5 |
Участник
|
3. В таблицу «Серийные номера» (InventSerial) добавить поля «Заводской серийный номер» (20 символов) и «ОС» (RAssetId). Добавленные поля разместить на соответствующей форме (InventSerial), при этом поле «ОС» не должно редактироваться вручную.
4. Создать механизм автоматической нумерации серийных номеров. Нумерация определяется по следующему принципу: первые 7 символов – код номенклатуры (первые 7 символов кода), оставшиеся 13 – автоматическая нумерация системой: a. В таблицу InventSerialможно добавить поле MaxSerialNum для хранения максимального номера (без учета 7 символов кода номенклатуры). b. Создать метод таблицы InventSerialNum, заполняюший значение поля InventSerialId, исходя из требований п.4., использовать поле InventTable.MaxSerialNum. Проверить созданный номер на уникальность. При необходимости увеличить значение поля MaxSerialNum, повторить процедуру. Это необходимо, поскольку изменения будут подгружаться в существующую базу. c. При записи новой строки в таблицу InventSerialId: i. Если номер не уникальный, отменить запись, выдать сообщение, присвоить новый номер. ii. Увеличить значение MaxSerialNum. Увеличение значение поля должно производится в одной транзакции с записью строки. d. Метод, созданный в п. (b), должен отрабатывать: i. При создании новой строки (если номенклатура заранее известна – см. примечание 2) ii. При выборе номенклатуры. |
|
04.04.2005, 10:55 | #6 |
Модератор
|
Хм. я бы так с кандачка не рубил....
А почему не хотите использовать аналитику "серийный номер"? Избегайте программирования там, где его можно избежать. С Уважением, Георгий. |
|
|
|