14.12.2001, 14:41 | #1 |
Moderator
|
Заполнение таблицы из кода программы
У меня есть 2 таблицы: одна заполненная, другая пустая. Необходимо заполнить одно поле пустой таблицы из заполненной. Не могли бы Вы подсказать, как это лучше сделать ?
Я пробовал так: X++: void clicked() { InventTable iTable; InventItemLocation iLocation; str s; while select iTable { s=iTable.ItemId; iLocation.insert(); iLocation.ItemId=s; iLocation.update(); print s; } super(); } Не могли бы Вы подсказать в чем дело ? Спасибо. |
|
14.12.2001, 14:58 | #2 |
Смотрящий поверх деревьев (Варварский отморозок)
|
<Зохавано мудератором>
за неуплату
__________________
It's a dirty job, but someone's got to do it. So? |
|
15.12.2001, 00:42 | #3 |
Administrator
|
Вообще говоря, Вы делаете лишнее действие, вставляя пустую запись. Перенесите insert на то место, где у Вас стоит update, а update удалите:
X++: . . . . . . while select iTable { iLocation.ItemId = iTable.ItemId; iLocation.insert(); } . . . . . . Ваша ошибка возникает в том случае, когда на таблице определен индекс, не позволяющий повторы (Allow Duplicates равно No). Вставляя пустую запись, Вы автоматически создаете такой повтор. Однако, ошибка может быть вызвана и тем, что, как уже писал PlasticinE, заполнены не Все поля записи. Опять же, если одно из незаполненных полей входило в индекс, который не позволял повторов, Вы получите ту же самую ошибку. Чтобы сократить вероятность появления таких ситуаций, в некоторых таблицах переопределен метод initValue. Этот метод обычно заполняет некоторые поля таблицы (если быть точным, то буфера), среди которых и те, которые входят в индексы, причем они заполняются так, чтобы избежать повторов. initValue рекомендуется вставлять непосредственно перед тем, как Вы начинаете заполнять поля: X++: . . . . . . while select iTable { iLocation.initValue(); iLocation.ItemId = iTable.ItemId; iLocation.insert(); } . . . . . .
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|