powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Access-SQL запрос (если данные содержат кавычки)
25 сообщений из 28, страница 1 из 2
Access-SQL запрос (если данные содержат кавычки)
    #35957816
SuperMaximus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суть проблемы:

Есть запрос на выборку
I: Min(DSum("inv";"q_DealOp";" op_week <= " & [op_week] & " and op_deal = " & [op_deal] & " and op_model =" & [op_model]))

(из построителя выражений, хотя в SQL выглядит почти также)

Т.к. в записи op_deal содержат названия компаний, которые, в свою очередь содержат кавычки, а-ля ООО "Вася Пупкин", то запрос просто не может быть обработан, т.к. кавчки воспринимаются SQL-ем как не эл-ты текстовой переменной, а как кавычки самого языка...
В кач-ве решения пока только убивание всех кавычек, но этим самым рушится оригинальность названия компаний. Как выбрать названия с кавычками - пока не знаю. Может подскажите?
Спасибо!
...
Рейтинг: 0 / 0
Access-SQL запрос (если данные содержат кавычки)
    #35957904
_хех
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор
В кач-ве решения пока только убивание всех кавычек, но этим самым рушится оригинальность названия компаний.

в качестве решения - нормально построить базу!! оригинальность названия компаний - это ее код а не название!
...
Рейтинг: 0 / 0
Access-SQL запрос (если данные содержат кавычки)
    #35957929
Фотография CoolMind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SuperMaximus,
при работе со строковыми значениями в запросах (во время их подстановки в поля) рекомендуется использовать апострофы (') или кавычки ("). Поскольку, судя по синтаксису, Вы пишете запрос для запуска через VBA, то Вам требуются апострофы, тем более, что в названиях компаний их, скорее всего, нет.
Переделайте так.
op_deal = '" & [op_deal] & "' and op_model =" & [op_model])
Здесь плохо видно, но всё же, я добавил 2 апострофа.
...
Рейтинг: 0 / 0
Access-SQL запрос (если данные содержат кавычки)
    #35957933
Фотография by-pass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не совсем так.
как при добавлении новой компании проверить, что в БД нет компании с таким названием ?
как вариант, хранить в таблице либо еще одно поле, построение на основании текущего, но из которого убраны все "не нужные" символы (кавычки, пробелы и проч.)
либо хранить контрольную сумму от названия (например, CRC32)
...
Рейтинг: 0 / 0
Access-SQL запрос (если данные содержат кавычки)
    #35957950
_хех
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
by-pass,
Код: plaintext
как при добавлении новой компании проверить, что в БД нет компании с таким названием ?
а как быть с компаниями из разных городов?
я считаю не правильно завязаться на названии компании
...
Рейтинг: 0 / 0
Access-SQL запрос (если данные содержат кавычки)
    #35958007
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
неправильный подход при постановки задачи приводит чёрт знает к чему!!!
у тебя было
ООО "Вася Пупкин"

заведут ООО "Вася Пупкин"
и у тебя ничего не сравнится

а у фирм существует полное юридическое название и сокращённое юридическое название - как сравнивать будешь?
...
Рейтинг: 0 / 0
Access-SQL запрос (если данные содержат кавычки)
    #35958207
MasterZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно использовать запросы с параметрами.
Здесь на форуме взял функцию, немного поправил и вот...
Павда я на выборку не пробовал, только 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.
Public Function ExecuteSQL(ByVal SQL As String, _
                            Optional ByRef aCon As ADODB.Connection = Nothing, _
                            Optional ByVal Params As Variant = Null) As Variant

'функция для выполниения запросов типа INSERT,UPDATE,DELEDE
'приемущество функции - экранируются символы в  значениях типа "д'Артаньян", "ООО ""Василек"""
'Params - передается массив параметров, важно чтобы было соответствие переданных и в запросе
'также важен порядок следования параметров
'можно запускать и динамические запросы и сохраненные
'executesql("insert into people (f_name) values(?)",con,"параметр1")
'executesql("exec add_person",con,Array("параметр1","параметр2","парамет3"))
'результат функуции - количетство обработанных строк
'в случае неудачи возвращает NULL
On Error GoTo Except
    If SQL = "" Then
        ExecuteSQL = Null
        Exit Function
    End If
    Dim RecAffected
    Dim cmd As New ADODB.Command
    If aCon Is Nothing Then
        cmd.ActiveConnection = CurrentProject.Connection
    Else
        cmd.ActiveConnection = aCon
    End If
    cmd.CommandType = adCmdText
    cmd.CommandText = SQL

    If IsNull(Params) Then
        cmd.Execute RecAffected
    Else
        cmd.Execute RecAffected, Params, adCmdText
    End If
    
    ExecuteSQL = RecAffected
    
Exit_Here:
    Set cmd = Nothing
    Exit Function

Except:
    ExecuteSQL = Null
    Select Case Err.Number

        Case Else
            MsgBox "Произошла ошибка " & Err.Number & vbNewLine & _
                Err.Description, vbInformation
        'Debug.Print Err.Number; Err.Description
    
    End Select
    Resume Exit_Here

End Function
...
Рейтинг: 0 / 0
Access-SQL запрос (если данные содержат кавычки)
    #35958262
SuperMaximus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Касательно правильности построения БД - разумеется ключем является код, но есть таблица с алиасами, т.е. теми, кто еще не зарегистрировался, и чье название после регистрации будет ассоциировано с общим названием и впоследствии будет храниться как код, а не текстовое значение.

Так вот, - в этой конкретной задаче избежать хранения как текст просто невозможно, как не крути.
С апострофами пробовал, но ругался построитель выражений, когда находил запись с кавычками.
Кавычки ведь тоже бывают
такими - ""
и даже такими «»
а в некоторых случая даже в виде апострофов ' '
...
Рейтинг: 0 / 0
Access-SQL запрос (если данные содержат кавычки)
    #35958349
Однозначно нужна возможность поиска дубликата (полного/неполного) названия компании + возможность поиска дубликата по ИНН. И однозначно не нужно жестко запрещать ввод дубликатов, а оставить решение на усмотрение ответственного лица. Т.е. нужно предусмотреть возможность включения/отключения уведомление о наличии дубликатов.
...
Рейтинг: 0 / 0
Access-SQL запрос (если данные содержат кавычки)
    #35958366
========
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SuperMaximusКасательно правильности построения БД - разумеется ключем является код, но есть таблица с алиасами, т.е. теми, кто еще не зарегистрировался, и чье название после регистрации будет ассоциировано с общим названием и впоследствии будет храниться как код, а не текстовое значение.

Так вот, - в этой конкретной задаче избежать хранения как текст просто невозможно, как не крути.
С апострофами пробовал, но ругался построитель выражений, когда находил запись с кавычками.
Кавычки ведь тоже бывают
такими - ""
и даже такими «»
а в некоторых случая даже в виде апострофов ' '
Можно сделать запрос с полем, в котором убивиты все кавычки и сокращенные названия органицационно-правовой формы перенесены в конец. Т.е. официальное краткое наименование ООО "Петров и сыновья". Поле для поиска: Петров и сыновья, ООО. Лучше сделать в виде функции, сохранить запрос и использовать его везде, где есть наименование организации.
...
Рейтинг: 0 / 0
Access-SQL запрос (если данные содержат кавычки)
    #35958495
SuperMaximus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, к сожалению, такого рода парсинг не приемлим.
Нужно чтобы отбирались записи, которые содеражт кавычки.
То есть ООО "Петров и сыновья" должны быть в результирующем запросе как ООО "Петров и сыновья" и никак иначе.
...
Рейтинг: 0 / 0
Access-SQL запрос (если данные содержат кавычки)
    #35958521
========
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SuperMaximusНет, к сожалению, такого рода парсинг не приемлим.
Нужно чтобы отбирались записи, которые содеражт кавычки.
То есть ООО "Петров и сыновья" должны быть в результирующем запросе как ООО "Петров и сыновья" и никак иначе.
Безусловно, нужно оставить оригинальное название в неприкоснованности. Я просто предложил также добавить и обработанное таким образом наименование, чтобы "индивидуализирующая", идентифицирующая часть названия была вынесена вперед, а ОПФ - назад (отделенная запятой/пробелом и т.д.). Использовать такое поле (в сохраненном запросе) - было бы удобно и операторам и разработчику - сортировать, искать глазами.
...
Рейтинг: 0 / 0
Access-SQL запрос (если данные содержат кавычки)
    #35958525
а так?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
Min(DSum("inv";"q_DealOp";" op_week <= " & [op_week] & " and op_deal = " & Replace([op_deal]; """"; """""") & " and op_model =" & [op_model]))
...
Рейтинг: 0 / 0
Access-SQL запрос (если данные содержат кавычки)
    #35958539
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SuperMaximusНет, к сожалению, такого рода парсинг не приемлим.
Нужно чтобы отбирались записи, которые содеражт кавычки.
То есть ООО "Петров и сыновья" должны быть в результирующем запросе как ООО "Петров и сыновья" и никак иначе.
Так и будут с кавычками
Код: plaintext
Where Replace([ПолеТаблицы с Кавычками],Chr( 34 ),"")=Replace([Шаблон с Кавычками],Chr( 34 ),"")

Правда работать будет медленно, поэтому лучше делать предварительный анализ с сохранением в спецтаблицу
...
Рейтинг: 0 / 0
Access-SQL запрос (если данные содержат кавычки)
    #35958597
_хех
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mds_world
Так и будут с кавычками
[src vba]Where Replace([ПолеТаблицы с Кавычками],Chr(34),"")=Replace([Шаблон с Кавычками],Chr(34),"")
Правда работать будет медленно, поэтому лучше делать предварительный анализ с сохранением в спецтаблицу
медленно это слабо сказана - это фактически не индексированная таблица и за это нужно отрывать ....
...
Рейтинг: 0 / 0
Access-SQL запрос (если данные содержат кавычки)
    #35958700
A8086
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кавычка - управляющий символ SQL. Что бы запрос заработал кавычки нужно "экранировать". То есть просто добавить перед каждой кавычкой символ обратного слэша '\'. Когда будете делать SELECT не забудьте кавычки "выкусить".

Только вот функцию vb я вам не подскажу. В php, например, addslashes и stripslahes.
...
Рейтинг: 0 / 0
Access-SQL запрос (если данные содержат кавычки)
    #35958969
MasterZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ау, нужно использовать параметризированный запрос это выход. Может на этот раз меня услышат.
...
Рейтинг: 0 / 0
Access-SQL запрос (если данные содержат кавычки)
    #35959146
WT20090409
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Абалдеть
столько людей и никто не знает ответа на в общем-то стандартную задачу
решение простое - если в скуль запросе две кавычки идут подряд то они воспринимаются не как конец запроса а как одна кавычка
...
Рейтинг: 0 / 0
Access-SQL запрос (если данные содержат кавычки)
    #35959235
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
WT20090409Абалдеть
столько людей и никто не знает ответа на в общем-то стандартную задачу
решение простое - если в скуль запросе две кавычки идут подряд то они воспринимаются не как конец запроса а как одна кавычка
+1
Они еще и факи не читают.
...
Рейтинг: 0 / 0
Access-SQL запрос (если данные содержат кавычки)
    #35959409
=-=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
=-=
Гость
WT20090409, +5
...
Рейтинг: 0 / 0
Access-SQL запрос (если данные содержат кавычки)
    #35959581
SuperMaximus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Эээ... ребята, всем безусловно огромное спасибо за советы, все дельные и по теме, но SQL и Access SQL - немного разные вещи. В интерпретации аксесса вариант """ аж никак не будет воспринят так как в SQL, также как и \".

Вышел из проблемной ситуации с выборкой так:
Заменил кавычки собственновыдуманный символ (q) - а-ля quotes.
При выводе на экран обратно заменяю (q) на " и в итоге получаю отобранные данные, но в оригинальном представлении/виде :)

Еще раз спасибо всем за советы и ответы! :)
...
Рейтинг: 0 / 0
Access-SQL запрос (если данные содержат кавычки)
    #35959616
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SuperMaximusВ интерпретации аксесса вариант """ аж никак не будет воспринят так как в SQL
Вы нам рассказываете?

(Кстати, """ действительно не будет. Будет "".)
...
Рейтинг: 0 / 0
Access-SQL запрос (если данные содержат кавычки)
    #35959954
Фотография CoolMind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WT20090409Абалдеть
столько людей и никто не знает ответа на в общем-то стандартную задачу
решение простое - если в скуль запросе две кавычки идут подряд то они воспринимаются не как конец запроса а как одна кавычка
Странно было бы ставить опыт под сомнение. Как говорится, опыт не пропьёшь.
Задача столь разнообразна, что не сводится к простому удвоению кавычек. Даже апострофы в исходных названиях есть, так о чём здесь говорить?
Прав SuperMaximus, говоря об обратимой замене кавычек на заранее заданный символ.
Хотя критика, бесспорно, полезна :)
...
Рейтинг: 0 / 0
Access-SQL запрос (если данные содержат кавычки)
    #35960826
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
CoolMindДаже апострофы в исходных названиях есть, так о чём здесь говорить?
И что с того, что апострофы? Если стринг взят в двойные кавычки, то кому мешают апострофы?
...
Рейтинг: 0 / 0
Access-SQL запрос (если данные содержат кавычки)
    #35961682
Фотография CoolMind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,
с этим не поспоришь :) Ну раз остановились на этом способе, пробуйте с двойными кавычками.
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Access-SQL запрос (если данные содержат кавычки)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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