|
|
|
тригер
|
|||
|---|---|---|---|
|
#18+
всем добрый день проблемка, вешаю тригер на удаление если нельзя удалять, пробую в процедуре обработки рекалл, не работает, а если с фальшью выхожу - системное сообщение тригер файлед реверт... как бы отменять удаление не напрягая пользователя системными сообщениями на английском языке? С уважением FFF ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2007, 09:15 |
|
||
|
тригер
|
|||
|---|---|---|---|
|
#18+
FFF1всем добрый день проблемка, вешаю тригер на удаление если нельзя удалять, пробую в процедуре обработки рекалл, не работает, а если с фальшью выхожу - системное сообщение тригер файлед реверт... как бы отменять удаление не напрягая пользователя системными сообщениями на английском языке? С уважением FFF Используй буферизацию. Т.е. удаление делай в буфере, по TableUpdate() сброс буфера. В случае отказа эта функция просто вернет .F. ничего не сообщая. По AERROR() уточняешь причину отказа и можешь выдать свое сообщение пользователю Код: plaintext 1. 2. 3. 4. 5. 6. 7. Для сведения Если триггер был создан автоматически при помощи Referential Integrity, то в случае ошибки триггера формируется глобальный массив gaErrors(n,12) содержащий уточнения причины отказа триггера. Дело в том, что AERROR() просто вернет код отказа триггера, но не уточнит какого именно (по какой таблице) и почему. Это все будет записано в глобальном массиве gaErrors ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2007, 12:03 |
|
||
|
тригер
|
|||
|---|---|---|---|
|
#18+
извиняюсь, а нельзяли както перехватывать реакцию таблицы на .f. тригера, чтобы не система писала revert а я по руски сообщил и сам сделал реверт.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2007, 13:55 |
|
||
|
тригер
|
|||
|---|---|---|---|
|
#18+
FFF1извиняюсь, а нельзяли както перехватывать реакцию таблицы на .f. тригера, чтобы не система писала revert а я по руски сообщил и сам сделал реверт.. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2007, 14:04 |
|
||
|
тригер
|
|||
|---|---|---|---|
|
#18+
Я работаю с Oracle и VFP БД не любят операции удаления я ее заменяю операцией update Но для этого при построении всех таблиц добавляю два поля unicod С(10) и out C(1) которые по умолчанию устанавливаю unicod = sys(2015) out = [1] в свойствах таблицы. Когда мне необходимо удалить запись я устанавливаю out = [0] все поля (кроме unicod) очищаю. В дальнейшем эту запись испльзую для новой записи. При этом - Кнопка Удаление : *!* SET STEP ON IF ctunicod <> [ ] update tabvid SET vidp = 0,; opis = [],; poz = [],; out = [0]; WHERE tabvid.unicod = ctunicod WAIT [Проведено вилучення] WINDOW AT 20,20 TIMEOUT 2 ENDIF ntvidp = 51 ctvidp = [] ctopis = [] ctznachv = [] ctunicod = [ ] ThisForm.text1.Refresh ThisForm.text2.Refresh ThisForm.text3.Refresh thisform.Grid1.setfocus *!* ThisForm.Release *!* DO FORM Forms\fredind RETURN Кнопка ЗАПИСЬ : *!* SET STEP ON IF ctunicod <> [ ] BEGIN TRANSACTION update tabvid SET vidp = ntvidp,; opis = ALLTRIM(ctopis),; poz = ALLTRIM(ctznachv); WHERE tabvid.unicod = ctunicod WAIT [Проведено коригування] WINDOW AT 20,20 TIMEOUT 2 *** Внесення змін в довідник табелю update tabln SET znachv = ALLTRIM(ctznachv); WHERE tabln.vidp = ntvidp END TRANSACTION WAIT [В зв'язку з проведеною зміною в довіднику типів відпусток проведено коригування довідника табелю] WINDOW AT 20,20 TIMEOUT 2 ELSE RELEASE atabvid SELECT unicod FROM tabvid WHERE out = [0]; INTO ARRAY atabvid IF TYPE([atabvid]) # && Если массив существует update tabvid SET vidp = ntvidp,; opis = ctopis,; poz = ctznachv,; out = [1]; WHERE tabvid.Out = [0] AND tabvid.Unicod = atabvid(1) Else INSERT INTO tabvid (vidp,opis,poz); VALUES (ntvidp,ALLTRIM(ctopis),ALLTRIM(ctznachv)) EndIf WAIT [Проведено запис] WINDOW AT 20,20 TIMEOUT 2 ENDIF ntvidp = 51 ctvidp = [ ] ctopis = [] ctznachv = [] ctunicod = [ ] ThisForm.text1.Refresh ThisForm.text2.Refresh ThisForm.text3.Refresh thisform.Grid1.setfocus *!* ThisForm.Release *!* DO FORM Forms\fredind RETURN Если понравилось - Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2007, 14:52 |
|
||
|
тригер
|
|||
|---|---|---|---|
|
#18+
Я работаю с Oracle и VFP БД не любят операции удаления я ее заменяю операцией update Хм-м-м... Не имеет отношение к FoxPro, но откуда такие сведения про нелюбовь к удалениям (особенно в Oracle) и о том, что лучше так - В дальнейшем эту запись испльзую для новой записи. PS может, это все таки больше относится к dbf ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2007, 16:19 |
|
||
|
тригер
|
|||
|---|---|---|---|
|
#18+
ребята, я тоже часто работаю с оракл и мсскл, здесь как раз другой случай - именно база вфр однопользовательская прога т.е. я не думаю о сетевых конфликтах и прочее нужно просто на уровне базы отработать удаление чтобы помечая на удаление в гриде запись пользователь не ловил системные сообщения фокса о тригерах (файлед) и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2007, 16:55 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=209&tid=1589734]: |
0ms |
get settings: |
5ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
49ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 317ms |

| 0 / 0 |
