|
Access-SQL запрос (если данные содержат кавычки)
|
|||
---|---|---|---|
#18+
Суть проблемы: Есть запрос на выборку I: Min(DSum("inv";"q_DealOp";" op_week <= " & [op_week] & " and op_deal = " & [op_deal] & " and op_model =" & [op_model])) (из построителя выражений, хотя в SQL выглядит почти также) Т.к. в записи op_deal содержат названия компаний, которые, в свою очередь содержат кавычки, а-ля ООО "Вася Пупкин", то запрос просто не может быть обработан, т.к. кавчки воспринимаются SQL-ем как не эл-ты текстовой переменной, а как кавычки самого языка... В кач-ве решения пока только убивание всех кавычек, но этим самым рушится оригинальность названия компаний. Как выбрать названия с кавычками - пока не знаю. Может подскажите? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2009, 11:00 |
|
Access-SQL запрос (если данные содержат кавычки)
|
|||
---|---|---|---|
#18+
автор В кач-ве решения пока только убивание всех кавычек, но этим самым рушится оригинальность названия компаний. в качестве решения - нормально построить базу!! оригинальность названия компаний - это ее код а не название! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2009, 11:29 |
|
Access-SQL запрос (если данные содержат кавычки)
|
|||
---|---|---|---|
#18+
SuperMaximus, при работе со строковыми значениями в запросах (во время их подстановки в поля) рекомендуется использовать апострофы (') или кавычки ("). Поскольку, судя по синтаксису, Вы пишете запрос для запуска через VBA, то Вам требуются апострофы, тем более, что в названиях компаний их, скорее всего, нет. Переделайте так. op_deal = '" & [op_deal] & "' and op_model =" & [op_model]) Здесь плохо видно, но всё же, я добавил 2 апострофа. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2009, 11:34 |
|
Access-SQL запрос (если данные содержат кавычки)
|
|||
---|---|---|---|
#18+
не совсем так. как при добавлении новой компании проверить, что в БД нет компании с таким названием ? как вариант, хранить в таблице либо еще одно поле, построение на основании текущего, но из которого убраны все "не нужные" символы (кавычки, пробелы и проч.) либо хранить контрольную сумму от названия (например, CRC32) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2009, 11:35 |
|
Access-SQL запрос (если данные содержат кавычки)
|
|||
---|---|---|---|
#18+
by-pass, Код: plaintext
я считаю не правильно завязаться на названии компании ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2009, 11:40 |
|
Access-SQL запрос (если данные содержат кавычки)
|
|||
---|---|---|---|
#18+
неправильный подход при постановки задачи приводит чёрт знает к чему!!! у тебя было ООО "Вася Пупкин" заведут ООО "Вася Пупкин" и у тебя ничего не сравнится а у фирм существует полное юридическое название и сокращённое юридическое название - как сравнивать будешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2009, 11:51 |
|
Access-SQL запрос (если данные содержат кавычки)
|
|||
---|---|---|---|
#18+
Можно использовать запросы с параметрами. Здесь на форуме взял функцию, немного поправил и вот... Павда я на выборку не пробовал, только INSERT,UPDATE,DELEDE Код: 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. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2009, 12:53 |
|
Access-SQL запрос (если данные содержат кавычки)
|
|||
---|---|---|---|
#18+
Касательно правильности построения БД - разумеется ключем является код, но есть таблица с алиасами, т.е. теми, кто еще не зарегистрировался, и чье название после регистрации будет ассоциировано с общим названием и впоследствии будет храниться как код, а не текстовое значение. Так вот, - в этой конкретной задаче избежать хранения как текст просто невозможно, как не крути. С апострофами пробовал, но ругался построитель выражений, когда находил запись с кавычками. Кавычки ведь тоже бывают такими - "" и даже такими «» а в некоторых случая даже в виде апострофов ' ' ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2009, 13:17 |
|
Access-SQL запрос (если данные содержат кавычки)
|
|||
---|---|---|---|
#18+
Однозначно нужна возможность поиска дубликата (полного/неполного) названия компании + возможность поиска дубликата по ИНН. И однозначно не нужно жестко запрещать ввод дубликатов, а оставить решение на усмотрение ответственного лица. Т.е. нужно предусмотреть возможность включения/отключения уведомление о наличии дубликатов. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2009, 13:48 |
|
Access-SQL запрос (если данные содержат кавычки)
|
|||
---|---|---|---|
#18+
SuperMaximusКасательно правильности построения БД - разумеется ключем является код, но есть таблица с алиасами, т.е. теми, кто еще не зарегистрировался, и чье название после регистрации будет ассоциировано с общим названием и впоследствии будет храниться как код, а не текстовое значение. Так вот, - в этой конкретной задаче избежать хранения как текст просто невозможно, как не крути. С апострофами пробовал, но ругался построитель выражений, когда находил запись с кавычками. Кавычки ведь тоже бывают такими - "" и даже такими «» а в некоторых случая даже в виде апострофов ' ' Можно сделать запрос с полем, в котором убивиты все кавычки и сокращенные названия органицационно-правовой формы перенесены в конец. Т.е. официальное краткое наименование ООО "Петров и сыновья". Поле для поиска: Петров и сыновья, ООО. Лучше сделать в виде функции, сохранить запрос и использовать его везде, где есть наименование организации. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2009, 13:52 |
|
Access-SQL запрос (если данные содержат кавычки)
|
|||
---|---|---|---|
#18+
Нет, к сожалению, такого рода парсинг не приемлим. Нужно чтобы отбирались записи, которые содеражт кавычки. То есть ООО "Петров и сыновья" должны быть в результирующем запросе как ООО "Петров и сыновья" и никак иначе. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2009, 14:43 |
|
Access-SQL запрос (если данные содержат кавычки)
|
|||
---|---|---|---|
#18+
SuperMaximusНет, к сожалению, такого рода парсинг не приемлим. Нужно чтобы отбирались записи, которые содеражт кавычки. То есть ООО "Петров и сыновья" должны быть в результирующем запросе как ООО "Петров и сыновья" и никак иначе. Безусловно, нужно оставить оригинальное название в неприкоснованности. Я просто предложил также добавить и обработанное таким образом наименование, чтобы "индивидуализирующая", идентифицирующая часть названия была вынесена вперед, а ОПФ - назад (отделенная запятой/пробелом и т.д.). Использовать такое поле (в сохраненном запросе) - было бы удобно и операторам и разработчику - сортировать, искать глазами. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2009, 14:51 |
|
Access-SQL запрос (если данные содержат кавычки)
|
|||
---|---|---|---|
#18+
Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2009, 14:51 |
|
Access-SQL запрос (если данные содержат кавычки)
|
|||
---|---|---|---|
#18+
SuperMaximusНет, к сожалению, такого рода парсинг не приемлим. Нужно чтобы отбирались записи, которые содеражт кавычки. То есть ООО "Петров и сыновья" должны быть в результирующем запросе как ООО "Петров и сыновья" и никак иначе. Так и будут с кавычками Код: plaintext
Правда работать будет медленно, поэтому лучше делать предварительный анализ с сохранением в спецтаблицу ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2009, 14:56 |
|
Access-SQL запрос (если данные содержат кавычки)
|
|||
---|---|---|---|
#18+
mds_world Так и будут с кавычками [src vba]Where Replace([ПолеТаблицы с Кавычками],Chr(34),"")=Replace([Шаблон с Кавычками],Chr(34),"") Правда работать будет медленно, поэтому лучше делать предварительный анализ с сохранением в спецтаблицу медленно это слабо сказана - это фактически не индексированная таблица и за это нужно отрывать .... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2009, 15:15 |
|
Access-SQL запрос (если данные содержат кавычки)
|
|||
---|---|---|---|
#18+
Кавычка - управляющий символ SQL. Что бы запрос заработал кавычки нужно "экранировать". То есть просто добавить перед каждой кавычкой символ обратного слэша '\'. Когда будете делать SELECT не забудьте кавычки "выкусить". Только вот функцию vb я вам не подскажу. В php, например, addslashes и stripslahes. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2009, 15:47 |
|
Access-SQL запрос (если данные содержат кавычки)
|
|||
---|---|---|---|
#18+
Ау, нужно использовать параметризированный запрос это выход. Может на этот раз меня услышат. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2009, 16:55 |
|
Access-SQL запрос (если данные содержат кавычки)
|
|||
---|---|---|---|
#18+
Абалдеть столько людей и никто не знает ответа на в общем-то стандартную задачу решение простое - если в скуль запросе две кавычки идут подряд то они воспринимаются не как конец запроса а как одна кавычка ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2009, 17:37 |
|
Access-SQL запрос (если данные содержат кавычки)
|
|||
---|---|---|---|
#18+
WT20090409Абалдеть столько людей и никто не знает ответа на в общем-то стандартную задачу решение простое - если в скуль запросе две кавычки идут подряд то они воспринимаются не как конец запроса а как одна кавычка +1 Они еще и факи не читают. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2009, 17:57 |
|
Access-SQL запрос (если данные содержат кавычки)
|
|||
---|---|---|---|
#18+
WT20090409, +5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2009, 19:10 |
|
Access-SQL запрос (если данные содержат кавычки)
|
|||
---|---|---|---|
#18+
Эээ... ребята, всем безусловно огромное спасибо за советы, все дельные и по теме, но SQL и Access SQL - немного разные вещи. В интерпретации аксесса вариант """ аж никак не будет воспринят так как в SQL, также как и \". Вышел из проблемной ситуации с выборкой так: Заменил кавычки собственновыдуманный символ (q) - а-ля quotes. При выводе на экран обратно заменяю (q) на " и в итоге получаю отобранные данные, но в оригинальном представлении/виде :) Еще раз спасибо всем за советы и ответы! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2009, 22:03 |
|
Access-SQL запрос (если данные содержат кавычки)
|
|||
---|---|---|---|
#18+
SuperMaximusВ интерпретации аксесса вариант """ аж никак не будет воспринят так как в SQL Вы нам рассказываете? (Кстати, """ действительно не будет. Будет "".) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2009, 22:41 |
|
Access-SQL запрос (если данные содержат кавычки)
|
|||
---|---|---|---|
#18+
WT20090409Абалдеть столько людей и никто не знает ответа на в общем-то стандартную задачу решение простое - если в скуль запросе две кавычки идут подряд то они воспринимаются не как конец запроса а как одна кавычка Странно было бы ставить опыт под сомнение. Как говорится, опыт не пропьёшь. Задача столь разнообразна, что не сводится к простому удвоению кавычек. Даже апострофы в исходных названиях есть, так о чём здесь говорить? Прав SuperMaximus, говоря об обратимой замене кавычек на заранее заданный символ. Хотя критика, бесспорно, полезна :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2009, 09:13 |
|
Access-SQL запрос (если данные содержат кавычки)
|
|||
---|---|---|---|
#18+
CoolMindДаже апострофы в исходных названиях есть, так о чём здесь говорить? И что с того, что апострофы? Если стринг взят в двойные кавычки, то кому мешают апострофы? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2009, 13:36 |
|
|
start [/forum/topic.php?fid=45&fpage=83&tid=1612729]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 160ms |
0 / 0 |