Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Что делать с символом ( " )  [new]
misha-x3
Member

Откуда:
Сообщений: 70
Добрый день!

Люди подскажите пожалуйста как добавить строку через Insert Into?
Сам запрос я знаю, но что делать с символом ( " )?

Добавляю эту строку в одно поле

Монитор Viewsonic VX2460H-LED 24"Wide, TN+film, White LED, 1920х1080/60 (Full HD), 16:9, 1000:1 (DC 40 000 000:1), 250 кд/м2, 2мс, 170/160, чорный, 2хHDMI, VGA, 573 x 429 x 196, 3.5, 0.272, D-sub

выдает ошибку

---------------------------
Debugger Exception Notification
---------------------------
Project MDIAPP.exe raised exception class EOleException with message 'Неправильно определен объект Parameter. Предоставлены несогласованные или неполные сведения'.
---------------------------
Break Continue Help
---------------------------

Добавляю эту строку

Монитор Viewsonic VX2460H-LED 24 Wide, TN+film, White LED, 1920х1080/60 (Full HD), 16:9, 1000:1 (DC 40 000 000:1), 250 кд/м2, 2мс, 170/160, чорный, 2хHDMI, VGA, 573 x 429 x 196, 3.5, 0.272, D-sub

все нормально

поле типа VarChar(max)

единственная разница между этими строками в первой есть знак ( " ) 24"Wide, во второй нет, 24 Wide.

база стоит на Win2003 sp2 Standart, Sql Server 2005 Standart

ПОдскажите кто знае что можно с ним сделать ( " ) чтобы добавить строку со знаком ( " )
18 дек 12, 18:27    [13650456]     Ответить | Цитировать Сообщить модератору
 Re: Что делать с символом ( " )  [new]
hallabud
Member

Откуда: Киев
Сообщений: 245
declare @table1 TABLE (field1 nvarchar(1000));
INSERT INTO @table1 VALUES ('Монитор Viewsonic VX2460H-LED 24"Wide, TN+film, White LED, 1920х1080/60 (Full HD), 16:9, 1000:1 (DC 40 000 000:1), 250 кд/м2, 2мс, 170/160, чорный, 2хHDMI, VGA, 573 x 429 x 196, 3.5, 0.272, D-sub');
select * FROM @table1;
18 дек 12, 18:35    [13650477]     Ответить | Цитировать Сообщить модератору
 Re: Что делать с символом ( " )  [new]
misha-x3
Member

Откуда:
Сообщений: 70
Я прошу прощения, может я не там создал тему.

так как я все это делаю через Delphi ADO

вот запрос для ADOQuery:

Insert Into Tovar
(Opisan)
Values ('Монітор Viewsonic VX2460H-LED 24"Wide, TN+film, White LED, 1920х1080/60 (Full HD), 16:9, 1000:1 (DC 40 000 000:1), 250 кд/м2, 2мс, 170/160, чорний, 2хHDMI, VGA, 573 x 429 x 196, 3.5, 0.272, шнур живлення,D-sub')

SQL server этот запрос обрабатывает нормально

значит глюк в ADO
18 дек 12, 19:55    [13650777]     Ответить | Цитировать Сообщить модератору
 Re: Что делать с символом ( " )  [new]
hallabud
Member

Откуда: Киев
Сообщений: 245
misha-x3,
попробуйте ее заэкранировать
18 дек 12, 20:13    [13650854]     Ответить | Цитировать Сообщить модератору
 Re: Что делать с символом ( " )  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31957
misha-x3
значит глюк в ADO
Естественно глюк в коде. Нужно во первых было задать вопрос в фопуме по дельфи, во вторых хотя бы показать код, а то на вопрос "у меня ничего не работает!" вам никто не ответит.
18 дек 12, 20:22    [13650874]     Ответить | Цитировать Сообщить модератору
 Re: Что делать с символом ( " )  [new]
misha-x3
Member

Откуда:
Сообщений: 70
hallabud
misha-x3,
попробуйте ее заэкранировать


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

Если вы знаете как это сделать, подскажите пожалуйста.
18 дек 12, 20:30    [13650887]     Ответить | Цитировать Сообщить модератору
 Re: Что делать с символом ( " )  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31957
misha-x3
Если вы знаете как это сделать, подскажите пожалуйста.
Вы хоть код покажите, а ещё лучше попросите модератора перенести в Delphi
18 дек 12, 20:31    [13650888]     Ответить | Цитировать Сообщить модератору
 Re: Что делать с символом ( " )  [new]
hallabud
Member

Откуда: Киев
Сообщений: 245
Я не знаю Дельфи. Поищите тут по форуму, вот например: ссылко
18 дек 12, 20:44    [13650927]     Ответить | Цитировать Сообщить модератору
 Re: Что делать с символом ( " )  [new]
misha-x3
Member

Откуда:
Сообщений: 70
Вол код на Delphi

    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('Insert Into Tovar');
    ADOQuery1.SQL.Add('(Opisan)');
    ADOQuery1.SQL.Add('Values (''Монітор Viewsonic VX2460H-LED 24"Wide, TN+film, White LED, 1920х1080/60 (Full HD), 16:9, 1000:1 (DC 40 000 000:1), 250 кд/м2, 2мс, 170/160, чорний, 2хHDMI, VGA, 573 x 429 x 196, 3.5, 0.272, шнур живлення,D-sub'')');
    ADOQuery1.ExecSQL;
18 дек 12, 20:50    [13650943]     Ответить | Цитировать Сообщить модератору
 Re: Что делать с символом ( " )  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31957
misha-x3
Вол код на Delphi
Вот старая тема, проблема в том, что дельфи устанавливает для коненкта параметр QUOTED_IDENTIFIER в ON :
ADO/BDE кавычки в запросе
18 дек 12, 21:30    [13651068]     Ответить | Цитировать Сообщить модератору
 Re: Что делать с символом ( " )  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
alexeyvg,

QUOTED_IDENTIFIER в данном случае не при чем.


misha-x3,

Проблема в том, что последовательности ":9" и ":1" трактуются как параметры. А т.к. ни типа, ни значений параметров не предоставляется, то и получаете вышеозначенную ошибку. Поэтому делать надо через параметризованный запрос:
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('Insert Into Tovar');
    ADOQuery1.SQL.Add('(Opisan)');
    ADOQuery1.SQL.Add('Values (:s)');

    with ADOQuery1.ParamByName('s') do
    begin
      DataType := ftString;
      Direction := pdInput;
      Value := 'Монітор Viewsonic VX2460H-LED 24"Wide, TN+film, White LED, 1920х1080/60 (Full HD), 16:9, 1000:1 (DC 40 000 000:1), 250 кд/м2, 2мс, 170/160, чорний, 2хHDMI, VGA, 573 x 429 x 196, 3.5, 0.272, шнур живлення,D-sub';
    end;

    ADOQuery1.ExecSQL;
18 дек 12, 22:07    [13651184]     Ответить | Цитировать Сообщить модератору
 Re: Что делать с символом ( " )  [new]
misha-x3
Member

Откуда:
Сообщений: 70
Всем спасибо за помощь!

invm, это именно то что я искал,
все получилось спасибо.
19 дек 12, 00:46    [13651647]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить