powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / RAISERROR+VFP
18 сообщений из 18, страница 1 из 1
RAISERROR+VFP
    #32045397
johnA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема.
Сервер SQL2000, клиент VFP7, доступ через ODBC.
В триггере есть строка
IF (УСЛОВИЕ=ЛОЖЬ)
BEGIN
RAISERROR('ОШИБКА',16,1)
ROLLBACK
RETURN
END
В QA ошибка возвращается.
На VFP после команды tableupdate(), я так понимаю
должно быть сообщение об ошибке (условие=ложь), но
его нет и результат на клиенте неверный, пока не сделаешь
requery(). Что неправильно? Помогите.
...
Рейтинг: 0 / 0
RAISERROR+VFP
    #32045435
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, собственно, я тебе уже ответил, но могу потвторитиь и здесь:

В VFP последовательность действий примерно следующая

IF TableUpdate()=.F.
=AERROR(laError)
* Здесь анализируешь полученный массив laError
* и в одном из его элементов находишь текст
* прописанный тобой в RAISERROR()
ENDIF
...
Рейтинг: 0 / 0
RAISERROR+VFP
    #32045439
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, ВладимирМ - один из самых крутых VFP программеров в "Российском VFP Клубе". Так что рекомендую прислушиваться к его советам.

Без дураков.
...
Рейтинг: 0 / 0
RAISERROR+VFP
    #32045493
johnA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема в том, что у меня
TableUpdate() возвращает .T.
Хотя на SQL 100% срабатывает raiserror
...
Рейтинг: 0 / 0
RAISERROR+VFP
    #32045540
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не ошибка SQL. Это явная проблема в VFP. Поэтому предлагаю перенести дискуссию на сайт vfpdmur. Я там описал возможные причины.
...
Рейтинг: 0 / 0
RAISERROR+VFP
    #32045677
Александр Третьяков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я пишу
RAISERROR('Ошибка, при ...', 12, 2) WITH SETERROR
и все работает,
просто надо сделать так чтобы была ошибка!!!,
цифры 12 и 2 это не просто цифры, читай доку.
...
Рейтинг: 0 / 0
RAISERROR+VFP
    #32045775
johnA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создал тестовую таблицу с полями
id_ int,
nazv char(40)
и триггер

CREATE TRIGGER TRIGGER1 ON dbo.TEST
FOR INSERT
AS
declare @nazv CHAR(40)
SELECT @NAZV=NAZV FROM INSERTED
IF @NAZV<>'OK'
BEGIN
ROLLBACK
RAISERROR('ОШИБКА',16,1)
RETURN
END

Все работает, ошибка возвращается !
Но на рабочей таблице не возвращается, буду разбираться, как дойдет сообщу причину.
...
Рейтинг: 0 / 0
RAISERROR+VFP
    #32045776
johnA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создал тестовую таблицу с полями
id_ int,
nazv char(40)
и триггер

CREATE TRIGGER TRIGGER1 ON dbo.TEST
FOR INSERT
AS
declare @nazv CHAR(40)
SELECT @NAZV=NAZV FROM INSERTED
IF @NAZV<>'OK'
BEGIN
ROLLBACK
RAISERROR('ОШИБКА',16,1)
RETURN
END

Все работает, ошибка возвращается !
Но на рабочей таблице не возвращается, буду разбираться, как дойдет сообщу причину.
...
Рейтинг: 0 / 0
RAISERROR+VFP
    #32045779
johnA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал через SQLexec (vfp) получил вот что:

Connectivity error: Unable to retrieve specific error information. Driver is probably out of resources

Я так понял драйвер не может распознать тип ошибки. Или это что-то другое?
...
Рейтинг: 0 / 0
RAISERROR+VFP
    #32045833
JohnA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оказывается если в триггере используется оператор select из таблицы для которой создан триггер, то
RAISERRor возвращает в фокс ошибку соединения.

Переделал триггер без использовования
select все заработало.
...
Рейтинг: 0 / 0
RAISERROR+VFP
    #32045845
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да... Это уже из цикла "ну вы подумайте, какая связь..."
Что ж, тоже буду иметь в виду.
...
Рейтинг: 0 / 0
RAISERROR+VFP
    #32045864
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... если в триггере используется оператор select из таблицы для которой создан триггер...

Не путай себя и других, пжлст...
К таблице inserted эта байда не имеет никакого отношения, с таким же "успехом" ты мог бы поставить SELECT из любой другой доступной таблицы перед генерацией RAISERROR ... И FOX тебе с честными глазами - показал бы ту же самую "Connectivity error:" .

Это именно то, о чем ты смутно догадывался в предыдущем сообщении ( ... драйвер не может распознать тип ошибки... ).

Если перед генерацией ошибки в батче, или в процедуре, или в триггере - есть хоть одна успешно выполненная команда SELECT (возвращающая записи на клиента) - то FOX не может опросить ODBC-драйвер повторно, для того чтобы узнать - "а что же там дальше за ошибка-то случилась?", поэтому и ругается на то, что до драйвера ему уже не добраться...

Как "победить" это и вытащить с сервера настоящий код и текст ошибки - я не нашел... (в "голом" FOX-е по крайней мере).
Хотя, если не гнушаться более "современными" средствами доступа к данным чем FOX-овые ODBC-function, а использовать что-то типа oConn = CreateObject("ADODB.Connection") и oRst = CreateObject("ADODB.Recordset") , то можно получить код и текст "твоей личной" ошибки воспользовавшись методом oRst.NextRecordset() (чтобы перейти к набору данных, который содержит ошибку) и коллекцией oConn.Errors (чтобы увидеть "сгенеренную" ошибку)...

Удачи!!
...
Рейтинг: 0 / 0
RAISERROR+VFP
    #32045926
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qu-qu
Я так понял, что в описываемой ситуации FoxPro передается более одного результата из одного пакета. На этот случай в FoxPro есть команда SQLMORERESULTS().

Хотя, я тоже не совсем понимаю смысла в выдаче более одного результата в триггере.
...
Рейтинг: 0 / 0
RAISERROR+VFP
    #32046015
johnA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо.
Будем умнее.
...
Рейтинг: 0 / 0
RAISERROR+VFP
    #32046083
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to ВладимирМ
Про SQLMORERESULTS я тоже знаю... Но это как в том анекдоте: " - Do you speak english? - Yes, а хули толку?"... :-). Я его первым делом и попробовал когда попытался вытащить код этого сгенеренного RAISERROR -а... Но он честно возвратил 2-оечку (что значить - нет больше наборов для считывания).

Так что - вопрос для "голого" FOX-а остается открытым...
...
Рейтинг: 0 / 0
RAISERROR+VFP
    #32046168
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qu-qu
Да, извиняюсь, я тут вчера экспериментировал с этим вопросом. Получилась странная вещь. Сделал такую процедурку:

CREATE PROCEDURE test AS
select 'первая строка'
select 'вторая строка'
RAISERROR('Сообщение об ошибке',16,1)

Так вот, через SQLMORERESULTS() удается вытащить результат первого SELECT, а вот тот, который идет непосредственно перед ошибкой гибнет безвозвратно вместе с сообщеним об ошибке :(

Получается какая-то накладка - сообщение об ошибке накладывается на возвращаемое значение запроса и в результате получается непонятно что.

Да, у меня SQLS7SP4+VFP6SP5. Может в VFP7 что-то в этом плане исправили?

В общем, согласен. Есть проблема.
...
Рейтинг: 0 / 0
RAISERROR+VFP
    #32046184
balbes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрые ЛЮДИ помогите ПОЖАЛЙУСТА
настоить кодовую страницу базы.

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

Что можно сделать??!!....
...
Рейтинг: 0 / 0
RAISERROR+VFP
    #32046199
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2000SP2 + VFP7 - тоже самое: RAISERROR "убивает" результаты последнего запроса
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / RAISERROR+VFP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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