06.04.2005, 12:22 | #1 |
Участник
|
Как расчитать значение курсора при вызове initValue в таблице?
Доброго всем времени суток.
Я переопределил метод initValue на таблице. public void initValue() { InventSerial inventSerial; InventTable inventTable; int maximum; ; ttsbegin; select forupdate InventTable where InventTable.ItemId == inventTable.ItemId; InventTable.MaxSerialNum++; maximum = InventTable.MaxSerialNum; InventTable.update(); inventSerial.InventSerial = InventSerial.InventSerialNum(this.ItemId, int2str(maximum)); if ( (select firstonly RecId from InventSerial where InventSerial.InventSerial == this.InventSerial ).RecId == 0 ) { box::warning("Íîìåð íå óíèêàëåí","Îøèáêà","Ok"); ttsabort; } else { super(); ttscommit; } } но у переменных this и inventTable recId всегда равно 0 Подскажите как расчитать значение курсора в inventTable P.S. метод переопределен на таблице InventSerial |
|
06.04.2005, 12:30 | #2 |
Модератор
|
1) Не inventSerial.InventSerial = InventSerial.InventSerialNum(this.ItemId, int2str(maximum));
А this.InventSerial = InventSerial.InventSerialNum(this.ItemId, int2str(maximum)); 2) Если RecId == 0, значит, такого значения, удв. критериям запроса, в таблице нет. 3) Что-то, честно говоря, не так с логикой.... Я понял, в чем состоит Ваша задача, но все-таки я бы её решал не так... Крыжить аналитику, да еще вот тк напрямую... то-то здесь не так в постановке задачи. С Уважением, Георгий. |
|
06.04.2005, 12:41 | #3 |
NavAx
|
Re: Как расчитать значение курсора при вызове initValue в таблице?
Цитата:
Изначально опубликовано Red Stranger
расчитать значение курсора в inventTable 2. Что вы планировали получить в результате исполнения этого запроса: select forupdate InventTable where InventTable.ItemId == inventTable.ItemId; 3. Не стоит обновлять что либо до того, как были произведены все проверки. Я имею в виду: InventTable.update();
__________________
Isn't it nice when things just work? |
|
06.04.2005, 13:09 | #4 |
Участник
|
1) У меня метод на таблице не статик => вызывается для конкретного значения курсора => при вызове д.б. это значение
2) В таблице InventSerial надо добавиь запись, где в поле InventSerial нодо запихнуть значение рассчитаное функцией, у которой один входных параметров ItemId, котрый лежит в InventTable |
|
06.04.2005, 13:40 | #5 |
NavAx
|
Red Stranger, прошу прощения за нескромный ворос. Чем вы занимались до аксапты? Мне кажется, мы с вами разговариваем на несколько разных языках.
__________________
Isn't it nice when things just work? |
|
06.04.2005, 13:43 | #6 |
Moderator
|
В this как раз и содержится курсор, это правильно. RecId у него на момент исполнения метода initValue() равен 0, т.к. не было сохранения. Все остальные поля курсора при вызове этого метода обычно тоже пустые, т.к. именно в нем происходит инициализация полей по умолчанию. Вопрос лишь в том, откуда взять ItemId для выдачи значения, должно быть что-то типа
PHP код:
__________________
Андрей. |
|
06.04.2005, 13:49 | #7 |
NavAx
|
2 Dron AKA andy: а вы уверены, что на момент вызова initValue(), курсор ввобще существует?
__________________
Isn't it nice when things just work? |
|
06.04.2005, 15:21 | #8 |
Участник
|
Цитата:
Изначально опубликовано macklakov
Red Stranger, прошу прощения за нескромный ворос. Чем вы занимались до аксапты? Мне кажется, мы с вами разговариваем на несколько разных языках. дельфях. И до сих пор не могу привыкнуть к Аксе. Нелогичная она. =) А процитировал я вам всем то, что мне сказал мой начальник, когда я выпытывал у него xyuj да как надо делать. За ошибки я не вответе. Пока не в ответе. Всем спасибо за участие, но я уже сделал то, чего от меня хотели. |
|
06.04.2005, 16:24 | #9 |
NavAx
|
Цитата:
Изначально опубликовано Red Stranger
И до сих пор не могу привыкнуть к Аксе. Нелогичная она. Цитата:
уже сделал то, чего от меня хотели.
__________________
Isn't it nice when things just work? |
|