Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ошибка и его обработка / 25 сообщений из 26, страница 1 из 2
22.12.2009, 08:10
    #36378881
Andres N.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка и его обработка
При нажатие на кнопку должен работать такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
bir= 1 
SELECT  5 
APPEND BLANK
REPLACE mushteri_k WITH thisform.text2.Value,  zeng_eden WITH thisform.text13.Value, mushteri_a WITH thisform.text5.Value,;
mushteri_u WITH thisform.text6.Value, mushteri_z WITH  thisform.combo8.Value, qaime_n WITH  thisform.text3.Value, telefon with thisform.text4.Value,;
sif_kod WITH thisform.text34.Value, dx WITH "D", qebul_ed WITH thisform.text20.Value,  catdirilma WITH thisform.text21.Value,;
alan_a WITH thisform.text8.Value,  alan_u WITH thisform.text9.Value, alan_t WITH thisform.text1.Value, alan_r WITH thisform.combo6.Value, alan_z WITH thisform.combo4.Value,;
kod_qeyd WITH val(thisform.combo5.Value), qeyd WITH thisform.text7.value, say_mektub WITH thisform.text12.value, zerf_qiy WITH thisform.text10.value, baqlamalar WITH thisform.text14.value,;
um_ceki WITH thisform.text15.value, xidm_novu WITH thisform.combo1.value, qiymet WITH thisform.text22.value, el_xid_n WITH thisform.text23.value,  daxtel WITH thisform.text27.value;
xus_qiy WITH thisform.text17.value, guzeshtm WITH thisform.text77.value, guzeshtf WITH thisform.text18.value, cemi WITH  thisform.text24.value, edv WITH thisform.text25.value, yekun WITH thisform.text26.value,;
icinde WITH  thisform.text19.value, kuryer_adq WITH thisform.text11.Value, kuryer_adc WITH thisform.text16.Value
REPLACE kuryer_kq WITH  VAL(thisform.combo2.value), kuryer_kc WITH VAL(thisform.combo2.value)
REPLACE BANK_AD WITH BANK_AD1, BANK_KOD WITH BANK_KOD1, BANK_VOEN WITH BANK_VOEN1, HES_HESABI WITH HES_HESABI1, MUX_HESABI WITH MUX_HESABI1, swift WITH swift1, voen WITH voen1

IF IMTINA="Imtina".or.qaime_n= 0 
 REPLACE cemi WITH  0 , yekun WITH  0 
endif 
bbaxish1= 0 
thisform.release()
do form baxish

И можно сказать что нормально работает. Но, иногда (очень редко) получается примерно такая ошибка и сразу же программа заканчиваеть свою работу:
"Номер записи 6 Форма или 1 из его тренов загрузка форма или сред данных несовпедения типа оператора и операнда."
Это ошибка очень редко получается (но, очень мешаеть), и неизвестно когда будеть, поэтому не могу найти причину.

Помогите пожалуйста, где моя ошибка здесь и как могу исправит это?

И ЕЩЕ 1 ВОПРОС: Как можно эта ошибку обработовать, т.е., когда эта ошибка получится какой-то сообщение давать и не выйти из программы?
Помогите пожалуйста.
...
Рейтинг: 0 / 0
22.12.2009, 09:37
    #36378987
reware
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка и его обработка
Andres N.При нажатие на кнопку должен работать такой код:
...
REPLACE mushteri_k WITH thisform.text2.Value, zeng_eden WITH thisform.text13.Value, mushteri_a WITH thisform.text5.Value,;
...
Помогите пожалуйста, где моя ошибка здесь и как могу исправит это?

И ЕЩЕ 1 ВОПРОС: Как можно эта ошибку обработовать, т.е., когда эта ошибка получится какой-то сообщение давать и не выйти из программы?
Да здесь и не нужна обработка ошибки, её и так можно найти в этом жутком REPLACE и исправить. Просто в какое-то из полей подставляется неподходящее по типу значение.
Например, в REPLACE mushteri_k WITH thisform.text2.Value поле mushteri_k - символьное, а в него пытаются занести число из thisform.text2.Value. Или наоборот. Надо проверить тип всех полей и сравнить с типами записываемых значений.
Только не убеждайте себя и всех, что все поля и передаваемые в них значения абсолютно одинакового типа.
И замените вы этот дикий REPLACE (или вообще весь подход к задаче) на что-то более компактное, чтобы потом не мучаться и искать в таком коде ошибку.
...
Рейтинг: 0 / 0
22.12.2009, 09:59
    #36379025
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка и его обработка
относительно глобальной обработки ошибок

http://sql.ru/forum/actualtopics.aspx?search=%E3%EB%EE%E1%E0%EB%FC%ED%FB%E9+%EE%E1%F0%E0%E1%EE%F2%F7%E8%EA+%EE%F8%E8%E1%EA%E8&bid=37

также в фокспро есть такое понятие, как локальная обработка ошибки.

ошибки не борят, а создают какой-то интерфейс, который
помогает проанализировать ситуацию
и быстро принять меры к решению проблемы.
...
Рейтинг: 0 / 0
22.12.2009, 10:00
    #36379026
Andres N.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка и его обработка
reware
Просто в какое-то из полей подставляется неподходящее по типу значение.


Дело в том что, эта ошибка не всегда получается, поэтому я так думал (типы же не меняется в программе)

reware
Да здесь и не нужна обработка ошибки

Это я не только для этого случае, просто хотел узнать как обработаваеть ошибку.
...
Рейтинг: 0 / 0
22.12.2009, 10:01
    #36379030
Dag
Dag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка и его обработка
rewareИ замените вы этот дикий REPLACE (или вообще весь подход к задаче) на что-то более компактное, чтобы потом не мучаться и искать в таком коде ошибку.
+1024. ControlSource для того и прмдуман.

Код: plaintext
do form baxish
Название формы не может не радовать xD

Обработку ошибки в общем случае можно засунуть в
TRY
ENDTRY
...
Рейтинг: 0 / 0
22.12.2009, 10:01
    #36379033
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка и его обработка
2 Andres N.

также совет, оформляйте свой код некоторым образом(способом),
который помогает проще сопровождать код

Код: plaintext
1.
2.
3.
replace  ttt  with ppp ;
         ,  kkk with ggggggg ;
         ,  ....
...
Рейтинг: 0 / 0
22.12.2009, 10:08
    #36379044
Andres N.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка и его обработка
прошелмимо
Код: plaintext
1.
2.
3.
replace  ttt  with ppp ;
         ,  kkk with ggggggg ;
         ,  ....


Спасибо, за совет.
...
Рейтинг: 0 / 0
22.12.2009, 10:13
    #36379058
Andres N.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка и его обработка
reware
Только не убеждайте себя и всех, что все поля и передаваемые в них значения абсолютно одинакового типа.


Я не убеждаю этого, только мне не понятно тогда почему это ошибка каждый раз не получается?
...
Рейтинг: 0 / 0
22.12.2009, 10:15
    #36379065
GermanGM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка и его обработка
Andres N.,
replace честно отрабатывает вплоть до момента возникновения ошибки "Data type mismatch". Наверное стоит посмотреть "по горячим следам", на каком поле он остановился
...
Рейтинг: 0 / 0
22.12.2009, 10:21
    #36379084
ошибка и его обработка
Andres N.reware
Только не убеждайте себя и всех, что все поля и передаваемые в них значения абсолютно одинакового типа.


Я не убеждаю этого, только мне не понятно тогда почему это ошибка каждый раз не получается?

Такое может быть, например, когда юзер введёт цифру там, где раньше вводил символ, или наоброт.
...
Рейтинг: 0 / 0
22.12.2009, 10:28
    #36379108
Andres N.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка и его обработка
Я сейчас проверил что когда эта ошибка получается не записивается ( не работает) следующие replace, т.e, эти поле пусто бываеть, остальные нет:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
REPLACE  mushteri_k WITH thisform.text2.Value, ;
                zeng_eden WITH thisform.text13.Value,;
                mushteri_a WITH thisform.text5.Value,;

REPLACE BANK_AD WITH BANK_AD1, ;
               BANK_KOD WITH BANK_KOD1,;
               BANK_VOEN WITH BANK_VOEN1,;
               HES_HESABI WITH HES_HESABI1, ;
               MUX_HESABI WITH MUX_HESABI1,;
               swift WITH swift1,;
               voen WITH voen1

Это как-то может помоч мне? Можно до replace проверить это и если есть несовподение дать сообщение об этом ?
...
Рейтинг: 0 / 0
22.12.2009, 10:31
    #36379120
Andres N.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка и его обработка
Шестипалов
Такое может быть, например, когда юзер введёт цифру там, где раньше вводил символ, или наоброт.

Да, этого может быть. Тогда, что можно делать в этом случае?
...
Рейтинг: 0 / 0
22.12.2009, 10:35
    #36379129
ошибка и его обработка
Andres N.Да, этого может быть. Тогда, что можно делать в этом случае?
Проверять корректность ввода данных. Либо перед реплейсом, либо в методе Valid.

А вообще, Вам уже посоветовали использовать свойство ControlSource.
...
Рейтинг: 0 / 0
22.12.2009, 10:39
    #36379138
Andres N.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка и его обработка
ШестипаловПроверять корректность ввода данных. Либо перед реплейсом, либо в методе Valid.

Помогите пожалуйста, как это делаются? Если можно на примерах пожалуйста.
...
Рейтинг: 0 / 0
22.12.2009, 11:24
    #36379288
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка и его обработка
авторПомогите пожалуйста, как это делаются? Если можно на примерах пожалуйста.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
local lnValue
lnValue = thisform.text1.value

if varty(lnValue) <> "N"
   messageb("Пользователь - ты был не прав!")
   retu .f.
else
   insert into ttt    (ppp) ;
                values (lnValue)
endif

...
Рейтинг: 0 / 0
24.12.2009, 07:54
    #36383610
Andres N.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка и его обработка
Мне надо проверить 3 поле (mushteri_k, zeng_eden, mushteri_a) сразу.
Я делаю вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
IF TYPE('baza.mushteri_k')<>TYPE('thisform.text27.Value').or.TYPE('baza.zeng_eden')<> TYPE('thisform.text13.Value').or.TYPE('baza.mushteri_a')<>TYPE('thisform.text5.Value')
	MESSAGEbox('Пользователь - ты был не прав!')
	thisform.text27.SetFocus()
else
	SELECT  5 
               REPLACE .............
                              .............
	do form baxish
endif
Так правильно будеть? Еще раз хочу сказать это проблема не каждый раз получается, поэтому трудно мне уловить это. После этого изминение пока не вышло. Но, нельзя пока ничего сказать.
...
Рейтинг: 0 / 0
24.12.2009, 09:10
    #36383690
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка и его обработка
авторТак правильно будеть?

нет.

извините, но стиль Вашей разработки - это насилие над фокспро и собой (тобишь садомазо.)

во-первых: тайп стараемся применять реже - есть ф-я vartype()

во-вторых: можно разработать так форму и проинициализировать контролы,
что в них никогда не будет неверного типа.
если вам хочется что-то вводить - ну создать курсор пустой
и поля его уже присвоить контролсоурсам контролов

в-третьих:
Код: plaintext
TYPE('baza.mushteri_k')<>TYPE('thisform.text27.Value')

Вы явно не знаете тип 'baza.mushteri_k'? или это мутирующее поле в какой-то таблице,
которое меняет постоянно свой тип и т.д.
па-руцки пишется так, ну если уж хочется заняться садомазо:
Код: plaintext
1.
2.
  
if vartype(thisform.text27.Value)<>"C" or ....
...
Рейтинг: 0 / 0
25.12.2009, 07:59
    #36385795
Andres N.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка и его обработка
Я совсем недавно занимаюс с фокспро, например vartype я незнал.
...
Рейтинг: 0 / 0
25.12.2009, 08:12
    #36385803
Andres N.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка и его обработка
прошелмимоВы явно не знаете тип 'baza.mushteri_k'?

Знаю. Тогда, наверно так будеть правильно. (Или опять что-то не так?)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
m_k1=thisform.text2.Value
z_e1=thisform.text13.Value
m_a1=thisform.text5.Value
if varty(m_k1) <> "N".or.varty(z_e1)<>"C".or.varty(m_a1)="C"
	MESSAGEbox('Пользователь - ты был не прав!')
	thisform.text27.SetFocus()
else
	SELECT  5 
               REPLACE .............
                              .............
	do form baxish
endif
...
Рейтинг: 0 / 0
25.12.2009, 09:08
    #36385855
ошибка и его обработка
Andres N.,

поведайте миру, какая религия вам запрещает использовать свойство ControlSource?
...
Рейтинг: 0 / 0
25.12.2009, 09:34
    #36385896
Andres N.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка и его обработка
ШестипаловAndres N.,

поведайте миру, какая религия вам запрещает использовать свойство ControlSource?

Наверно, неправилный метод, но я использую
Код: plaintext
TABLEUPDATE(.T.,.T.,"baza")
,
для добавление записи в таблицу (до нажатие кнопку записи не должно добавлятся в таблицу). Поэтому использую REPLACE
...
Рейтинг: 0 / 0
25.12.2009, 10:01
    #36385930
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка и его обработка
никто не мешает откатить изменения в случае отмены необходимости сохраняться

либо

scatter memvar
затем переменные памяти привязать к контролам

либо
select * from ... into cursor ...
appe blank
поредактировать во временном курсоре
и затем уже из отредактированного
перелить в основной
insert into
select * from
и уже изменения в основном провалить в основную табличку
...
Рейтинг: 0 / 0
25.12.2009, 10:47
    #36386021
Andres N.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка и его обработка
прошелмимо, спасибо за совет. Попробую это сделать. Но, хочу еще раз спрашивать в моем случае это ошибка еще раз может получится? Просто мне очень интересно это узнать и честно говоря если ошибка не получится хочу оставить как есть.
...
Рейтинг: 0 / 0
26.12.2009, 09:14
    #36387711
Andres N.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка и его обработка
прошелмимоникто не мешает откатить изменения в случае отмены необходимости сохраняться

Я незнал что это возможно.
Это как? Обясните пожалуйста, на примерах если не трудно.
...
Рейтинг: 0 / 0
28.12.2009, 09:04
    #36389206
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка и его обработка
2 Andres N.,

обратите внимание на пункт меню:
"Редактирование св-в курсорадаптеров"

в данном примере показано каким образом редактировать список
и каким образом привязывать контролы к источникам,
сохранять или выполнять отмену(не сохранять....)


вычленять ничего не буду и каких-то простых примеров рисовать не стану,
даю "в куче" пример разработки каких-то ... посредством приемов ООП
и сипользования классов курсорадаптеров.
в данном приложении в целом показан способ построения проектов,
посредством которого создаются универсальные настраиваемые сущности

первая часть марлезонского балета
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ошибка и его обработка / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]