Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) спец символы и как их добавить минуя парсер в базу! (число прочтений - 4231 )
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
спец символы и как их добавить минуя парсер в базу!
15. Декабря 2008 :: 09:05
Печать  
Есть запрос на добавление строки с данными.
но проблема в спец символах, парсер пытается их с парсить что не есть правильно, а мне нужна именно такая строка в базе, поэтому хотелось бы узнать можно ли как-нить обойти КРОМЕ ОКОНЧАТЕЛЬНОЙ ЗАМЕНЫ ЭТИХ СИМВОЛОВ НА ДРУГОЕ.

INSERT INTO [Adm]..[1cLogs] (date,[user],EventCategory,Event,EvType,object,ObjDescr,comment)
VALUES ({ts '2008-12-07 10:05:26'},'    3D   ','Grbgs','GrbgRuntimeErr','5','U                      ','','ФЕ.ActiveWorkbook.SaveAs(ИмяФайла); : {\\DRAGON\FLAND1\EXTFORMS\ЗАКАЗКОНТРАГЕНТА.ERT(1268)}: Microsoft Office Excel: Ошибка доступа к документу 'r5.xls', допускающему доступ только для чтения.')

вот то, что жирным должно все лечь как есть в базу Печаль
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: спец символы и как их добавить минуя парсер в базу!
Ответ #1 - 15. Декабря 2008 :: 09:34
Печать  
А почему ты на парсер грешишь??
У тебя ж ошибка вываливается на: ФЕ.ActiveWorkbook.SaveAs(ИмяФайла) + в описании ошибки нормально написано: допускающему доступ только для чтения
  
Наверх
 
IP записан
 
Alex_Bob
Full Member
***
Отсутствует



Сообщений: 136
Местоположение: Липецк
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: спец символы и как их добавить минуя парсер в базу!
Ответ #2 - 15. Декабря 2008 :: 09:45
Печать  
Так как парсер это программа на C++, то она пытается анализировать строки по правилам c++, а там обратный слэш надо удваивать.
  

Необходимо время, чтобы восстановить хаос. (с) Дж. Буш (младший)
Наверх
 
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: спец символы и как их добавить минуя парсер в базу!
Ответ #3 - 15. Декабря 2008 :: 09:45
Печать  
JohnyDeath писал(а) 15. Декабря 2008 :: 09:34:
А почему ты на парсер грешишь??
У тебя ж ошибка вываливается на: ФЕ.ActiveWorkbook.SaveAs(ИмяФайла) + в описании ошибки нормально написано: допускающему доступ только для чтения

это не ошибка, это строка которая должна записаться в базу Подмигивание
а ошибка вот какая Улыбка
State 42000, native 170, message [Microsoft][ODBC SQL Server Driver][SQL Server]Line 2: Incorrect syntax near 'r5'.
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: спец символы и как их добавить минуя парсер в базу!
Ответ #4 - 15. Декабря 2008 :: 09:49
Печать  
Alex_Bob писал(а) 15. Декабря 2008 :: 09:45:
Так как парсер это программа на C++, то она пытается анализировать строки по правилам c++, а там обратный слэш надо удваивать.


правила должны быть T-SQL, а не с++ на сколько я понимаю
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
Alex_Bob
Full Member
***
Отсутствует



Сообщений: 136
Местоположение: Липецк
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: спец символы и как их добавить минуя парсер в базу!
Ответ #5 - 15. Декабря 2008 :: 09:51
Печать  
Перед апострофом внутри строки из апострофов обратные слэши надо ставить. Ошибка не парсера, а драйвера MS SQL
  

Необходимо время, чтобы восстановить хаос. (с) Дж. Буш (младший)
Наверх
 
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: спец символы и как их добавить минуя парсер в базу!
Ответ #6 - 15. Декабря 2008 :: 10:10
Печать  
Alex_Bob писал(а) 15. Декабря 2008 :: 09:51:
Перед апострофом внутри строки из апострофов обратные слэши надо ставить. Ошибка не парсера, а драйвера MS SQL


на счет кто виноват скуль или парсер, тут спорить не буду может и так.
на счет слэшей попробовал они теперь стоят и толку нет Печаль
State 42000, native 170, message [Microsoft][ODBC SQL Server Driver][SQL Server]Line 2: Incorrect syntax near 'r5'.

Код
Выбрать все
INSERT INTO [Adm]..[1cLogs] (date,[user],EventCategory,Event,EvType,object,ObjDescr,comment)
VALUES ({ts '2008-12-07 10:05:26'},'    3D   ','Grbgs','GrbgRuntimeErr','5','U                      ','','ФЕ.ActiveWorkbook.SaveAs(ИмяФайла); : {\\\\DRAGON\\FLAND1\\EXTFORMS\\ЗАКАЗКОНТРАГЕНТА.ERT(1268)}: Microsoft Office Excel: Ошибка доступа к документу \'r5.xls\', допускающему доступ только для чтения.')
 

  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
Alex_Bob
Full Member
***
Отсутствует



Сообщений: 136
Местоположение: Липецк
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: спец символы и как их добавить минуя парсер в базу!
Ответ #7 - 15. Декабря 2008 :: 10:54
Печать  
Насчет апострофов я наврал. Вот из MSDN:
Цитата:
Если одинарная кавычка (') является частью строки-литерала, то ее необходимо записать через две одинарных кавычки (").
  

Необходимо время, чтобы восстановить хаос. (с) Дж. Буш (младший)
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: спец символы и как их добавить минуя парсер в базу!
Ответ #8 - 15. Декабря 2008 :: 15:32
Печать  
pavlo писал(а) 15. Декабря 2008 :: 10:10:
Alex_Bob писал(а) 15. Декабря 2008 :: 09:51:
Перед апострофом внутри строки из апострофов обратные слэши надо ставить. Ошибка не парсера, а драйвера MS SQL


на счет кто виноват скуль или парсер, тут спорить не буду может и так.
на счет слэшей попробовал они теперь стоят и толку нет Печаль
State 42000, native 170, message [Microsoft][ODBC SQL Server Driver][SQL Server]Line 2: Incorrect syntax near 'r5'.

Код
Выбрать все
INSERT INTO [Adm]..[1cLogs] (date,[user],EventCategory,Event,EvType,object,ObjDescr,comment)
VALUES ({ts '2008-12-07 10:05:26'},'    3D   ','Grbgs','GrbgRuntimeErr','5','U                      ','','ФЕ.ActiveWorkbook.SaveAs(ИмяФайла); : {\\\\DRAGON\\FLAND1\\EXTFORMS\\ЗАКАЗКОНТРАГЕНТА.ERT(1268)}: Microsoft Office Excel: Ошибка доступа к документу \'r5.xls\', допускающему доступ только для чтения.')
 


Один раз столкнулся, что парсер 1С++ считает любое упоминание символа ":" (двоеточие) как указание на текстовый параметр. В связи с чем пришлось писать функцию ВыделитьТексты, которая все текстовые строки выдергивает из запроса и задает их в виде параметров. В данном случае подозрения у меня вызывает строка "10:05:26" - попробуй целиком эту дату передать в виде параметра
Код
Выбрать все
INSERT INTO [Adm]..[1cLogs] (date,[user],EventCategory,Event,EvType,object,ObjDescr,comment)
VALUES ({ts :Парам},'    3D   ','Grbgs','GrbgRuntimeErr','5','U			    ','',' и
УстановитьТекстовыйПараметр("Парам","'2008-12-07 10:05:26'"); 

  
Наверх
ICQ  
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: спец символы и как их добавить минуя парсер в базу!
Ответ #9 - 15. Декабря 2008 :: 16:21
Печать  
Ага, было такое
У контрагента в наименовании был апостроф и когда печатались этикетки была ошибка вставки данных
Решилось переименованием, трабла как пральна сказали не в парсере
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: спец символы и как их добавить минуя парсер в базу!
Ответ #10 - 16. Декабря 2008 :: 04:08
Печать  
Alex_Bob писал(а) 15. Декабря 2008 :: 10:54:
Насчет апострофов я наврал. Вот из MSDN:
Цитата:
Если одинарная кавычка (') является частью строки-литерала, то ее необходимо записать через две одинарных кавычки (").


Хм, спасибо, видать ты прав
достаточно было поставить их по 2 и все, никакие слэши и т.д. тоже не вылазят ввиде ошибок, а поставил только на аппострофы, видать только в них и была проблема Улыбка
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: спец символы и как их добавить минуя парсер в базу!
Ответ #11 - 16. Декабря 2008 :: 04:10
Печать  
Salimbek писал(а) 15. Декабря 2008 :: 15:32:
Один раз столкнулся, что парсер 1С++ считает любое упоминание символа ":" (двоеточие) как указание на текстовый параметр. В связи с чем пришлось писать функцию ВыделитьТексты, которая все текстовые строки выдергивает из запроса и задает их в виде параметров. В данном случае подозрения у меня вызывает строка "10:05:26" - попробуй целиком эту дату передать в виде параметра


Нет, я с ":" столкнулся, но поэтому аппострофы убрал из литерал и все ок, так что это точно работает, проверено.
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать