|
|
|
Можно ли в ADO вызове для MsSQL передать ' так, чтобы она не дублировалась?
|
|||
|---|---|---|---|
|
#18+
Можно ли в ADO вызове для MsSQL передать ' - единичную кавычку так, чтобы она не дублировалась? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 15:38:31 |
|
||
|
Можно ли в ADO вызове для MsSQL передать ' так, чтобы она не дублировалась?
|
|||
|---|---|---|---|
|
#18+
yunikiМожно ли в ADO вызове для MsSQL передать ' - единичную кавычку так, чтобы она не дублировалась? А где она дублируется? Можно передавать через ASC / CHR ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 15:57:35 |
|
||
|
Можно ли в ADO вызове для MsSQL передать ' так, чтобы она не дублировалась?
|
|||
|---|---|---|---|
|
#18+
Она дублируется, если такое значение илет В параметрах ADODB.COMMAND.Parameters(i)="'" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 16:07:51 |
|
||
|
Можно ли в ADO вызове для MsSQL передать ' так, чтобы она не дублировалась?
|
|||
|---|---|---|---|
|
#18+
А более полный вариант можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 16:12:15 |
|
||
|
Можно ли в ADO вызове для MsSQL передать ' так, чтобы она не дублировалась?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 16:53:51 |
|
||
|
Можно ли в ADO вызове для MsSQL передать ' так, чтобы она не дублировалась?
|
|||
|---|---|---|---|
|
#18+
ADO все правильно сделал. Вы передаете строку из одной кавычки. По правилам SQL строка заключается в кавычки, а для ковычки внутри строки нужно поставить подряд две. Итого - четыре. А в чем проблема ? Следить за кавычками нужно в ситуациях типа: О'Брайен = 'О''Брайен' Какой смысл имеет одна изолированная кавычка ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 16:58:05 |
|
||
|
Можно ли в ADO вызове для MsSQL передать ' так, чтобы она не дублировалась?
|
|||
|---|---|---|---|
|
#18+
Ну вообще то профайле показывает в человекочитаемом и пригодном для повторного использования виде виде. В данном случае Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 17:04:02 |
|
||
|
Можно ли в ADO вызове для MsSQL передать ' так, чтобы она не дублировалась?
|
|||
|---|---|---|---|
|
#18+
Да вообще-то конечно одна кавычка приведена для примера. Процедура, которой передается параметр использует внутри себя exec ( ' select * from t1 where ' +Par) а Par на T-SQL это: Дата='1-1-2004' Для верной работы в exec внутри процедуры надо, чтобы Par= ' Дата=''1-1-2004''' (две кавычки внутри) но когда в vb в Parameters передаю " Дата=''1-1-2004'' " (здесь в двойных кавычках строки VB стоит вокруг 1-1-2004 по паре одиночных кавычек ) идет синтак ошибка, когда " Дата='1-1-2004' " , все прокатывает при этом профайлер показывает exec nyMutex 'Set', 'ut_qry7View', 'Дата=''1-1-2004''', @P1 output - т.е. с двумя кавычками внутри на каждую одну. при всем этом если эту ХП запускать из QA c параметром 'Дата=''13-11-2004'' ' (внутри две кавычки) - все OK. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 18:41:53 |
|
||
|
Можно ли в ADO вызове для MsSQL передать ' так, чтобы она не дублировалась?
|
|||
|---|---|---|---|
|
#18+
Храните даты в поле типа datetime и предавайте их как yyyymmdd - проблем не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 18:48:55 |
|
||
|
Можно ли в ADO вызове для MsSQL передать ' так, чтобы она не дублировалась?
|
|||
|---|---|---|---|
|
#18+
Забей на профайлер, он показывает немного не в том виде, в котором параметры передаются Код: plaintext 1. бедному профайлеру нужно для визуализации собрать EXEC который сервер даже не получал(RPC использовался). Так как в TSQL строки заключаются в арострофы, профайлер при ПОКАЗЕ трассы удвоил апостроф ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 18:54:18 |
|
||
|
Можно ли в ADO вызове для MsSQL передать ' так, чтобы она не дублировалась?
|
|||
|---|---|---|---|
|
#18+
Да нет профайлер ничего не удвоил ! В процедуру-то строка именно такая - с удвоенными кавычками и передается и верно процедура отрабатывает . А удваивает это уже цепочка OLEDB - ADO при использовании провайдера для MsSQL . Короче ответ на первый вопрос : НЕТ. Нельзя. Помощь он (OLEDB - ADO ) такую оказывает, т.к. не без оснований полагает , что внутри T-SQL строки не может быть одного апострофы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 19:10:55 |
|
||
|
Можно ли в ADO вызове для MsSQL передать ' так, чтобы она не дублировалась?
|
|||
|---|---|---|---|
|
#18+
Повторяю по буквам процедура Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. 4. 5. 6. 7. Профайлер RPC Staring exec test12 'a''b' Где удвоение? Изображена строка с ОДНИМ апострофом. P.S. надо же, msgbox показывает 3, а не 4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 19:38:06 |
|
||
|
Можно ли в ADO вызове для MsSQL передать ' так, чтобы она не дублировалась?
|
|||
|---|---|---|---|
|
#18+
2 yuniki Я на вас дивлюсь Как профайлером работать вы знаете, а по синтаксису строк совсем у вас плохо :( (этому вроже еще в школе учат) Какая вам разница, что профайлер показывает Вам надо смотреть что реально с данными происходит т.е. пишите в базу свой апостроф через ХП затем вытаскиваете данные из базы на клиента и смотрите, сколько апострофов!!! PS: повторю предшественников: VBA - стринга заключается в кавычки ("), следовательно апостроф внутри строки задается одинарный MSSQL - стринга заключается в апострофы ('), следовательно для представления апострофа в константе типа стринг следует его удвоить!!! (см. MSDN), но при этом если эту константу засунуть в переменную и посмотреть ее длину, то все будет ОК (т.е. правильно) Верно и обратное: В VBA для задания кавычек в стринге (константе) их надо удваивать, а MSSQL ставить один штука!!! PPS: УЧИТЕ МАТ. ЧАСТЬ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 09:33:25 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32887924&tid=1668990]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
47ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 319ms |

| 0 / 0 |
