:: Visual Foxpro, Foxpro for DOS
9-ка залетает
Syberex
Автор

Сообщений: 1432
Откуда: Кострома
Дата регистрации: 19.01.2004
Вот пару дней в двух классах (форма документа с кнопками ОК, Отмена)
при нажатии ОК (в методе Click() записан код сохранения)
Фокс вылетает и просит послать пост ... Dont Send ... потом Fatal Error
В vfp9err.log файле откопал, что это происходит на строке 45, а там
END TRANSACTION

Кто знает, скажите: на UT о подобных глюках не сообщалось?

PS: во всех формах примерно одинаковый код сохранения и такого раньше не наблюдалось,
а теперь вот в 2-х новых формах это происходит, но не каждый раз,
пару раз сохранит, на следующий вылет...
Может это мои классы виноваты, испортились что-ли?




------------------
Ratings: 0 negative/0 positive
Re: 9-ка залетает
Syberex
Автор

Сообщений: 1432
Откуда: Кострома
Дата регистрации: 19.01.2004
Сздал новую библиотеку классов - ничего...
Потом выяснил, что проблемы связаны со вторым видом из трех,
открываемых документом, может таблица повреждена?
Сделал для таблицы COPY TO.
Через 30 мин. проблема начала повторятся, но с первым видом...
Сделал и для первой таблицы COPY TO.

Проблема опять повторяется, но теперь ни на какой вид не показывает,
вообще номер строки при ошибке не сообщает ...
Когда открываешь снова все вроде сохранилось...
Но залетает теперь необязательно на кнопке ОК, например
при открытии документа после сохранения

Вообщем, чтобы дальше разбираться возвращаюсь в 6-ку ...




------------------
Ratings: 0 negative/0 positive
Re: 9-ка залетает
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
2Syberex

Слушай , а какой код в этих кнопках, те вылет на чем INSERT/UPDATE/DELETE или на комбинации




------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: 9-ка залетает
Syberex
Автор

Сообщений: 1432
Откуда: Кострома
Дата регистрации: 19.01.2004
Сейчас вернулся в 6-ю версию ...
Правда пришлось создать базу заново, но тут мне помог GenDBC ,
из двух видов пришлось выбросить CAST() ...
В одной форме пришлось запрос с подзапросом разбить на 2 запроса...
Оказалось, что 6-ка не замечает установленных Anchor-ов, только вот
в Resize() все уже поочищал, придется снова написать...

Выявилось, что VFP6 в команде COPY TO ARRAY предварительно не уничтожает массив,
если он был, а пишет прямо по нему (если в массиве было 3 строки, а копируем 1, то первая перепишется,
а другие 2 останутся) - из-за этого одна форма работала в 9-ке нормально, а в 6-ой
пришлось RELEASE для массива добавить ...

Кстати вот код из кнопки:
(он у меня во всех документах одинаковый, только количество видов разное,
странно - в прошлых вроде не глючил и в 9-ке ...
Но под конец стало частенько вылетать и необязательно на кнопке OK,
например при обновлении журнала или при открытии документа сразу после его сохранения )
* Отмена фильтра
SELECT DETAL1
SET FILTER TO
GO TOP
* Сохранение
BEGIN TRANSACTION
LOCAL llok1, llok2, llok3
LOCAL ARRAY la_error1[1], la_error2[1], la_error3[1]
SELECT DOC1
IF EMPTY(id)
LOCAL lc_newid
lc_newid=sp_newid('documents', 'doc')
REPLACE id WITH lc_newid
ENDIF
llok1=TABLEUPDATE(0, .T.)
AERROR(la_error1)
SELECT PF1
REPLACE id_doc WITH DOC1.id ALL
REPLACE type_pr WITH DOC1.type_pr ALL
SCAN FOR EMPTY(PF1.id)
* назначим постоянный id
lc_newid=sp_newid('doc_prod', 'opf')
REPLACE id WITH lc_newid
* пропишем в деталях постоянные связи
SELECT DETAL1
REPLACE DETAL1.id_prod WITH PF1.id FOR DETAL1.id2_prod=PF1.id2
* номер партии для новых деталей в пф
REPLACE DETAL1.npart WITH (o_tables.doc.new_npart()) ;
FOR DETAL1.id2_prod=PF1.id2 AND DETAL1.npart=0
SELECT PF1
ENDSCAN
llok2=TABLEUPDATE(1, .T.)
AERROR(la_error2)
SELECT DETAL1
REPLACE id_doc WITH DOC1.id ALL
REPLACE type_pr WITH DOC1.type_pr ALL
llok3=TABLEUPDATE(1, .T.)
AERROR(la_error3)
IF llok1=.T. AND llok2=.T. AND llok3=.T.
END TRANSACTION
THISFORM.Hide()
IF TYPE('THISFORM.Form_parent.Name')='C'
* обновление журнала
THISFORM.Form_parent.RefreshData()
ENDIF
THISFORM.Release()
ELSE
ROLLBACK
LOCAL lc_errstr
lc_errstr='Наряд на работу: ошибка в Tableupdate() '+chr(13)
FOR i=1 TO ALEN(la_error1)
lc_errstr=lc_errstr+la_error1[i]+' '
ENDFOR
lc_errstr=lc_errstr+chr(13)
FOR i=1 TO ALEN(la_error2)
lc_errstr=lc_errstr+la_error2[i]+' '
ENDFOR
lc_errstr=lc_errstr+chr(13)
FOR i=1 TO ALEN(la_error3)
lc_errstr=lc_errstr+la_error3[i]+' '
ENDFOR
DO ADD_IN_LOG IN Progs\errorlog
o_App.Message('Немогу сохранить изменения!', '!')
ENDIF




------------------
Ratings: 0 negative/0 positive
Re: 9-ка залетает
boba

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
Есть такие сообщения на UT
Вроде это связано с неправильной инсталяцией
При ней, если помните до фокса всякие добавки ставятся
Если с ними что то не так, тогда и проблемы есть типа вашей
Какие то dll ки не сохлись в версиях




------------------
не имей 100 рублей, а имей сто друзей
Ratings: 0 negative/0 positive
Re: 9-ка залетает
Syberex
Автор

Сообщений: 1432
Откуда: Кострома
Дата регистрации: 19.01.2004
2 boba
Спасибо за сообщение.

Я уже благополучно вернулся в VFP6. За полдня.
Сегодня весь день писал запрос, пытался выдрать данные из вида...
А Фокс мне все время возвращал 0 записей... только ночью
до меня дошло, что в 6-ом Фоксе SELECT не дружит с буферами...
Вот и гуляй по версиям-то ...

Относительно проблемы:
В VFP6 пока все нормал. Один раз правда он тоже залетел,
но я эту проблему списал на себя, потому как в этот момент
в дебаггере остановил выполнение, гулял по сессиям, и releas-ил объекты




------------------
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 12 akvvohinc  (Гостей: 11)

© 2000-2024 Fox Club 
Яндекс.Метрика