Страница 1 из 2
PUT не путкает. Почему?
Добавлено: 08 Июнь 2007, 9:51
optron
Clarion 5.5 EE
Есть вот такой кусок кода:
KNI:INVNO=PRI:Kod
get(Kniga,KNI:KeyINVNO)
if ~error()
KNI:Kolvo=KNI:Kolvo-Kolvo
KNI:Sum=KNI:Sum-Summ
put(Kniga)
Message('Error - '&errorcode()&'|')
else
Message('Запись не найдена'&'|','Ошибка!',ICON:Exclamation)
.
к put - у доходит, мессейджем проверяю в этот момент KNI:Kolvo = 0. В базе остается KNI:Kolvo=1. errorcode() после PUT =0.
В чем может быть проблема?
Добавлено: 08 Июнь 2007, 11:23
ShilakAV
а ты после put поставь - if errorcode() then message(error()).
мож дублирование ключей...
Добавлено: 08 Июнь 2007, 12:51
optron
Так ить errorcode() 0 кажет. Следовательно нет ошибки то ...
За... уже. 2-й день сижу над какой то фигней и всё без толку.
Добавлено: 08 Июнь 2007, 15:09
StillZero
дело не в PUT
см. в другую сторону
сделай мелкую приладу чистую и напиши там этот код...
думаю он будет работать
Добавлено: 08 Июнь 2007, 15:41
Игорь Столяров
Или попробуй заблокировать файл на момент выполнения
операции. Для TPS, наверно проще всего:
Logout(MyFile,1)
If ErrorCode() then Stop('Logout ?!').
....
PUT(MyFile)
Commit
If ErrorCode() then Stop('Commit ?!').
Добавлено: 08 Июнь 2007, 16:02
optron
Бесполезно. и с Logout не работает. Вообще интересно - если в файле Kniga непустое стринговое поле KNI:Otdel, то не работает. А вот если KNI:Otdel пустое (='' ), то всё отрабатывает. А причем тут вообще это поле - непонятно. Причем перед GET - ом делаю clear(KNI:Record), всё равно не работает.
Добавлено: 08 Июнь 2007, 17:26
Игорь Столяров
1. А проверь описание структуры таблицы ... Может быть там просто есть наложение полей (OVER) ?
2. Попробуй удалить физический файл, создать его заново и попробовать работу кода. У меня были проблемы с записью (и тоже без ошибок) при частичном разрушении ключа ...
Добавлено: 09 Июнь 2007, 10:00
optron
Игорь Столяров писал(а):1. А проверь описание структуры таблицы ... Может быть там просто есть наложение полей (OVER) ?
Наложение полей - это как? Можно поподробнее
Создал вообще новый файл. Внес туда всего одну запись. Всё равно не работает.
Добавлено: 09 Июнь 2007, 12:38
Yufil
optron писал(а):Игорь Столяров писал(а):1. А проверь описание структуры таблицы ... Может быть там просто есть наложение полей (OVER) ?
Наложение полей - это как? Можно поподробнее
Создал вообще новый файл. Внес туда всего одну запись. Всё равно не работает.
Структуру БД- в студию!
Добавлено: 09 Июнь 2007, 14:05
optron
Yufil писал(а):
Структуру БД- в студию!
Kniga FILE,DRIVER('TOPSPEED'),PRE(KNI),CREATE,BINDABLE,THREAD
KeyOtdel KEY(KNI:Otdel),DUP,NOCASE,OPT
KeyPodr KEY(KNI:KodPodr),DUP,NOCASE,OPT
KodDia_Key KEY(KNI:KodDia),DUP,NOCASE,OPT
KeyINVNO KEY(KNI:INVNO),NOCASE,OPT
KeyAvtor KEY(KNI:Avtor),DUP,NOCASE
KeyNazv KEY(KNI:Nazv),DUP,NOCASE
Record RECORD,PRE()
Num ULONG
INVNO ULONG
Avtor STRING(30)
Nazv STRING(100)
Otdel STRING(40)
KodPodr USHORT
Fam_Pol STRING(20)
PoluchVP STRING(40)
FIOVP STRING(20)
Data_p DATE
Cena DECIMAL(9,2)
Kolvo LONG
Sum REAL
Debet STRING(20)
Kredit STRING(20)
PrizBIS STRING(1)
Dat_Spis DATE
Dat_vp DATE
KodDia USHORT
Нету по ходу OVER - ов тут никаких.
Добавлено: 09 Июнь 2007, 14:57
ShilakAV
я бы на твоем месте не стал в с5.5 использовать названия полей типа Dat_Spis и Dat_sp в одной таблице. Как то помню глюков с этим наловил немерянно. Именно в 5.5 такое творилось. Посмотри во вьевере как названия этих полей выглядят - убедишься...
Добавлено: 09 Июнь 2007, 15:14
optron
ShilakAV писал(а):я бы на твоем месте не стал в с5.5 использовать названия полей типа Dat_Spis и Dat_sp в одной таблице. Как то помню глюков с этим наловил немерянно. Именно в 5.5 такое творилось. Посмотри во вьевере как названия этих полей выглядят - убедишься...
А в чем проблема - в нижнем слеше?
Добавлено: 09 Июнь 2007, 15:58
ShilakAV
А в чем проблема - в нижнем слеше?
ну...
но я ради эксперимента создал такой файл и проверил твой кусок кода - все работает. А ты пробовал как StillZero рекомендовал?
Добавлено: 09 Июнь 2007, 16:02
optron
ShilakAV писал(а):А в чем проблема - в нижнем слеше?
ну...
но я ради эксперимента создал такой файл и проверил твой кусок кода - все работает. А ты пробовал как StillZero рекомендовал?
В том то и дело. Полный код эмбедза там с if -ами. Так вот такой код там встречается в ... 3-х местах. В 2-х отрабатывает прекрасно, в этом месте ну хоть тресни ничего не помогает. Уже голова чешется. Полный нервоз или невроз. Можно конечно плюнуть на всё и отключить кое - что, но тут уже дело принципа - или я его, или он меня.
Добавлено: 09 Июнь 2007, 16:37
ShilakAV
Честно говоря, никогда не встречал такого, чтобы если put не дал ошибку, то не произвел бы запись в файл

. Может ты не тот файл смотришь?
