powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / MSsql Aerror()
22 сообщений из 22, страница 1 из 1
MSsql Aerror()
    #33832101
Strong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при обработки данных (таблички) формируется команда серверу
и посылается в
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
  IF this.dbconnhandle >  0 
		* посылаю ее на сервер
		IF TYPE("cl_SQLcursor")=="C"
			nlExec = SQLExec(this.dbconnhandle,lcStringSQL,cl_SQLcursor)
		ELSE 
			nlExec = SQLExec(this.dbconnhandle,lcStringSQL)
		ENDIF 
		IF nlExec < 0 
			 AERROR(laSQLerror)
			FOR nlk1= 1  TO ALEN( laSQLerror, 1 )
				this.cerror = this.cerror + ;
								  TRANSFORM(laSQLerror( nlk1, 1  )) + CHR( 13 ) ;
								+ TRANSFORM(laSQLerror( nlk1, 2  )) + CHR( 13 ) ;
								+ TRANSFORM(laSQLerror( nlk1, 3  )) + CHR( 13 ) ;
								+ TRANSFORM(laSQLerror( nlk1, 4  )) + CHR( 13 ) ;
								+ TRANSFORM(laSQLerror( nlk1, 5  )) + CHR( 13 ) 
			ENDFOR 
		ENDIF
	ELSE 
		this.cerror="Соединение с БД еще не установлено"
	ENDIF   

в результате обработки таблички Некоторые записи вызывают ошибку,
aError
1526
Connectivity error: Unable to retrieve specific error information. Driver is probably out of resources
.NULL.
.NULL.
.NULL.

при этом сама строчка exec-а сохраняется в курсорчике для проверки,
когда ее копирую потом и выполняю в манаджмент студио все проходит.

в чем может быть дело и как получить ошибку с сервера в момент выполнения?

PS. VFP 8 + MS SQL 2005 express
...
Рейтинг: 0 / 0
MSsql Aerror()
    #33832159
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где команда сервера, в ней проблема.
...
Рейтинг: 0 / 0
MSsql Aerror()
    #33832253
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так бывает, когда сама команда lcStringSQL является выражением NULL !
Проверьте, как вы ее формируете. NULL все поглащает.
С уважением, Алексей
...
Рейтинг: 0 / 0
MSsql Aerror()
    #33832391
Strong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
 DECLARE @lsID int
 DECLARE @lsobtypeId int 
 DECLARE @ddate smalldatetime 
 DECLARE @nObRKr numeric ( 18 , 2 ) 
 DECLARE @nObRDb numeric ( 18 , 2 ) 
 DECLARE @nObVKr numeric ( 18 , 2 ) 
 DECLARE @nObVDb numeric ( 18 , 2 ) 
 DECLARE @cSchet char( 20 ) 
 DECLARE @cObType char( 15 ) 

 select @lsID =  0 
 select @lsobtypeId =  0 
 select @ddate =  CAST ('29.05.2006' AS smalldatetime ) 
 select @nObRKr =  CAST ('50000000' AS numeric ( 18 , 2 ) ) 
 select @nObRDb =  CAST ('0' AS numeric ( 18 , 2 ) ) 
 select @nObVKr =  CAST ('50000000' AS numeric ( 18 , 2 ) ) 
 select @nObVDb =  CAST ('0' AS numeric ( 18 , 2 ) ) 
 select @cSchet = '52304810400000000168'
 select @cObType = 'За день        '

 EXECUTE sp_lsob_upd
   @lsID 
   ,@lsobtypeId 
   ,@ddate 
   ,@nObRKr 
   ,@nObRDb 
   ,@nObVKr 
   ,@nObVDb 
   ,@cSchet 
   ,@cObType 
...
Рейтинг: 0 / 0
MSsql Aerror()
    #33832461
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это что ты привел, код в строке lcStringSQL ? Если да то тогда лови 9 селектов на клиенте. Нужен код формирования строки lcStringSQL
...
Рейтинг: 0 / 0
MSsql Aerror()
    #33832488
Strong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
понял ....

сделал к виду
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
EXECUTE sp_lsob_upd   ?lsID 
   ,?lsobtypeId 
   ,?ddate 
   ,?nObRKr 
   ,?nObRDb 
   ,?nObVKr 
   ,?nObVDb 
   ,?cSchet 
   ,?cObType 

aerror стал заполнятся,
спасибо

в общем думал что или вернет последнюю ошибку или в массиве,
оказалось ничего,
ведь ошибка в последней команде

______________________________________
Strong
...
Рейтинг: 0 / 0
MSsql Aerror()
    #33832514
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist...Если да то тогда лови 9 селектов на клиенте....
Выражением вида select @cObType =... FROM .... не генерит ROWSET и , соответственно, курсор на клиенте :)
С уважением, Алексей.
...
Рейтинг: 0 / 0
MSsql Aerror()
    #33832517
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и вот эти select-ы

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 select @lsID =  0 
 select @lsobtypeId =  0 
 select @ddate =  CAST ('29.05.2006' AS smalldatetime ) 
 select @nObRKr =  CAST ('50000000' AS numeric ( 18 , 2 ) ) 
 select @nObRDb =  CAST ('0' AS numeric ( 18 , 2 ) ) 
 select @nObVKr =  CAST ('50000000' AS numeric ( 18 , 2 ) ) 
 select @nObVDb =  CAST ('0' AS numeric ( 18 , 2 ) ) 
 select @cSchet = '52304810400000000168'
 select @cObType = 'За день        '

замени на set
...
Рейтинг: 0 / 0
MSsql Aerror()
    #33832550
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistНу и вот эти select-ы

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 select @lsID =  0 
 select @lsobtypeId =  0 
 select @ddate =  CAST ('29.05.2006' AS smalldatetime ) 
 select @nObRKr =  CAST ('50000000' AS numeric ( 18 , 2 ) ) 
 select @nObRDb =  CAST ('0' AS numeric ( 18 , 2 ) ) 
 select @nObVKr =  CAST ('50000000' AS numeric ( 18 , 2 ) ) 
 select @nObVDb =  CAST ('0' AS numeric ( 18 , 2 ) ) 
 select @cSchet = '52304810400000000168'
 select @cObType = 'За день        '

замени на set
И что изменится ? Это же T-SQL, а не VFP !
С уважением, Алексей.
...
Рейтинг: 0 / 0
MSsql Aerror()
    #33832583
Strong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с set -ами то же самое - настоящую ошибку не дает пишет то же что и в первом посте.
он же понимает что ошибка произошла. Почему же не может ее вернуть?



______________________________________
Strong
...
Рейтинг: 0 / 0
MSsql Aerror()
    #33832590
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот это что такое

Код: plaintext
 select @ddate =  CAST ('29.05.2006' AS smalldatetime ) 

перепиши

Код: plaintext
 select @ddate =  CAST ('20060529' AS smalldatetime ) 
...
Рейтинг: 0 / 0
MSsql Aerror()
    #33832595
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey-K PaulWist...Если да то тогда лови 9 селектов на клиенте....
Выражением вида select @cObType =... FROM .... не генерит ROWSET и , соответственно, курсор на клиенте :)
С уважением, Алексей.

Ну да , не посмотрел до "конца"
...
Рейтинг: 0 / 0
MSsql Aerror()
    #33832601
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Strongс set -ами то же самое - настоящую ошибку не дает пишет то же что и в первом посте.
он же понимает что ошибка произошла. Почему же не может ее вернуть?
______________________________________
Strong
Ну что вы нам все приводите код сервера !!!
Поставьте SET STEP перед SQLEXEC и приведите значение переменной lcStringSQL
С уважением, Алексей.
...
Рейтинг: 0 / 0
MSsql Aerror()
    #33832647
Strong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey-K
Ну что вы нам все приводите код сервера !!!
Поставьте SET STEP перед SQLEXEC и приведите значение переменной lcStringSQL
С уважением, Алексей.

это оно и есть
...
Рейтинг: 0 / 0
MSsql Aerror()
    #33832682
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это имеено то, что в переменной lcStringSQL или, что должно там быть?
С уважением, Алексей
...
Рейтинг: 0 / 0
MSsql Aerror()
    #33832700
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если так:
Код: plaintext
1.
2.
m.lcStringSQL = [sp_lsob_upd  0 ,  0 , '2006.05.29',  50000000 ,  0 ,  50000000 ,  0 , '52304810400000000168', 'За день']
nlExec = SQLExec(this.dbconnhandle, m.lcStringSQL,cl_SQLcursor)
...
Тоже ошибка выскакивает?

С уважением, Алексей
...
Рейтинг: 0 / 0
MSsql Aerror()
    #33832710
Strong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey-KЭто имеено то, что в переменной lcStringSQL или, что должно там быть?
С уважением, Алексей

да это именно то

Aleksey-KА если так:
Код: plaintext
1.
2.
m.lcStringSQL = [sp_lsob_upd  0 ,  0 , '2006.05.29',  50000000 ,  0 ,  50000000 ,  0 , '52304810400000000168', 'За день']
nlExec = SQLExec(this.dbconnhandle, m.lcStringSQL,cl_SQLcursor)
...
Тоже ошибка выскакивает?

С уважением, Алексей

в этом случае ошибка в Aerror попадает
...
Рейтинг: 0 / 0
MSsql Aerror()
    #33832714
Strong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да это именно то что в переменной
...
Рейтинг: 0 / 0
MSsql Aerror()
    #33832749
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может имеет смысл при возникновении ошибки при обработки генерить RAISERROR самому ?

С уважением, Алексей
...
Рейтинг: 0 / 0
MSsql Aerror()
    #33832808
Strong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey-KМожет имеет смысл при возникновении ошибки при обработки генерить RAISERROR самому ?

С уважением, Алексей

а смысл? ошибка есть ошибка если он ее так не берет то не возьмет и при RAISERROR
...
Рейтинг: 0 / 0
MSsql Aerror()
    #33837059
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Strong!

Поиском воспользуйся - обсуждалась как-то проблема некоректной работы VFP8 с
ODBC - как раз в плане правильной интерпретации ошибок и как раз при
исполнении батчей (т.е. не одиночной команды, а набора команд)... Видимо
придётся всё-же ограничиваться "единичными" командами...

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
MSsql Aerror()
    #33837164
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю, что стоит попробавать один из двух вариантов:
1. Каков смысл такого вызова хранимой процедуры?
Может все-таки имеет смысл вызывать ее не из Batch, а прямым вызовом через m.lcStringSQL = [sp_lsob_upd ] +...
2. Возвращайте флаг ошибки из хранимой процедуры и по его анализу генерите свою через RAISERROR:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
...
DECLARE @RET_FLAG INT
...
EXECUTE @RET_FLAG = sp_lsob_upd
   @lsID 
   ,@lsobtypeId 
...
IF @RET_FLAG <  0 
      RAISERROR ('.......')

Хотя второй вариант вызова в таком контексте я не проверял, но попробовать стоит :)
Разумеется, хранимая процедура должна возвращать по RETURN отрицательное значение, если произошла ошибка.
Кстати, а что за ошибка происходит при работе в хранимой процедуры?
С уважением, Алексей
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / MSsql Aerror()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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