Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / AError + несколько ошибок. (может тут есть мозк) / 8 сообщений из 8, страница 1 из 1
19.06.2006, 10:48
    #33798935
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AError + несколько ошибок. (может тут есть мозк)
Дааа вообще крышняк сносит... Никогда не сталкивался с тем что сервер может вернуть не 1 ошибку на 1 запрос. Вот столкнулся. Оказывается у фокса от этого чтото клинит.

Имеем массив ошибок (у меня их 11 штук)
Делаю их сохранение для истории на сервере:
Вот такой вот цикл простенький для этого накалякал:


m.iResult=SQLEXEC(thisform.h_conn,"BULK INSERT TmpTovar FROM '"+m.cFile+"' WITH (DATAFILETYPE = 'char',CODEPAGE = 'ACP',FIELDTERMINATOR = ';',FIRSTROW = 2,MAXERRORS = 9999999);Select Count(*) as _Count From TmpTovar",'q_rezult')
IF m.iResult = -1
=AERROR(_aErr)
m.iC = ALEN(_aErr,1)
m.cErrLog = ''
FOR m.iX = 1 TO m.iC
m.cErrLog = m.cErrLog + _aErr[m.ix,2] + CHR(13)
ENDFOR

Аднака запись _aErr[m.ix,2] дает одно и то же значение ПЕРВОЙ строки _aErr[1,2]

Смотрю в дебаггере - все норма. Массив открывается (при нажатии на +) и в нем разные значения... А записи _aErr[1,2], _aErr[2,2], _aErr[3,2] возвращают одно и то же! (имею ввиду записи переменных в дебаггере)

Короче мистика блин. Или может я чего не то делаю а? Ща попробую этот массив через Insert From Array пройти.
...
Рейтинг: 0 / 0
19.06.2006, 11:06
    #33799007
Alexey-M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AError + несколько ошибок. (может тут есть мозк)
Есть у меня подозрение, что текущая БД сервера работает под установкой
SET NOCOUNT OFF, поэтому возвращается не 1 результирующий набор а как минимум 2. 1-отчет о выполнении BULK INSERT, 2 - набор запроса. 1-й никак не получишь, только из xp как строка в качестве параметра.
Потом, m.iResult = -1 - ошибка уровня соединения. Если попал сюда, значит, возможно, косяк у тебя возможно не в выполнении команд T-SQL.
thisform.h_conn = This.nHandleSession = SQLSTRINGCONNECT(...) или SQLCONNECT(...) проверял ?
И самое главное , с чего ты взял что у тебя массив _aErr будет нестандартный и будет содержать информацию о более чем 1 ошибке ? :)
Массив создан, ошибка записана. Ты пробегаешь по 1 и тому же массиву m.iC раз и берешь 1 и тоже значение
...
Рейтинг: 0 / 0
19.06.2006, 11:12
    #33799037
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AError + несколько ошибок. (может тут есть мозк)
Гы. Инннтересный Вы человек. А на код посмотреть несудьба? Где там одно и то же значение берется? :-))))

Естественно если результат запроса = -1 то была ошибка. Блин их мне и нужно залогировать. Их не 1 а 11. Они содержат ошибки строк при работе Bulk Insert.

Предложения есть?
...
Рейтинг: 0 / 0
19.06.2006, 11:26
    #33799091
Alexey-M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AError + несколько ошибок. (может тут есть мозк)
Андрей, собиретесь в конце концов. Уже не смешно.
...
Рейтинг: 0 / 0
19.06.2006, 11:31
    #33799104
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AError + несколько ошибок. (может тут есть мозк)
Пример для проб выложен здесь. Так же как и более детальное описание.

http://forum.foxclub.ru/read.php?29,210271

ЗЫ Куда собраться то нужно? :-))) Поймите правильно. Я в Вашем сообщении не увидел направления как решить задачу. Если что не обижайтесь я не хотел.
...
Рейтинг: 0 / 0
19.06.2006, 14:01
    #33799735
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AError + несколько ошибок. (может тут есть мозк)
Андрей!
После =AERROR(_aErr) у вас в _aErr кол-во строк столько, сколько ошибок произошло в пакете - тут вы правы, но при этом выбирайте не _aErr[2], а _aErr[3] - там будет подробный текст ошибки.
С уважением, Алексей
...
Рейтинг: 0 / 0
19.06.2006, 15:02
    #33799986
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AError + несколько ошибок. (может тут есть мозк)
Да, спасибо, но уже разобрались. А вообще в точку. Просто всегда брал 2 элемент массива а не 3.
...
Рейтинг: 0 / 0
19.06.2006, 15:12
    #33800035
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AError + несколько ошибок. (может тут есть мозк)
Я тоже :)
Пока не напоролся на ошибку 266 (Transaction count after EXECUTE indicates that a COMMIT or ROLLBACK TRANSACTION statement is missing) .
Ошибка не страшная и не прерывает пакет, а в клиент пролезает. А если потом возникает другая, "настоящая" ошибка, во втором элементе массива показывалась все ровно 266.
С уважением, Алексей
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / AError + несколько ошибок. (может тут есть мозк) / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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