powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка запроса Dcount
11 сообщений из 11, страница 1 из 1
Ошибка запроса Dcount
    #39834230
quickstar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Задача проверить если ли дубли в базе по наименованию.
Использую.
DCount("name_company", "tbl_consumer", "[tbl_consumer]![name_company]=""" & Me.name_company & """")

Но при вводе в поле Me.name_company фразы с кавычками(например ООО "Дом"), access выдает ошибку.

Вопрос 1: как устранить ошибку при использовании кавычек?
Вопрос 2: есть ли иной способ проверки дублей?
...
Рейтинг: 0 / 0
Ошибка запроса Dcount
    #39834257
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Удвойте кавычки, если есть:
Код: vbnet
1.
DCount("name_company", "tbl_consumer", "[tbl_consumer]![name_company]=""" & Replace(Me.name_company, """", """""") & """")


Способ номальный. Можно еще запрос с параметром сделать, тогда ничего маскировать не нужно будет.
...
Рейтинг: 0 / 0
Ошибка запроса Dcount
    #39834262
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
quickstar,
Код: vbnet
1.
DCount("name_company", "tbl_consumer", "replace([tbl_consumer]![name_company],chr(34),"")='" & replace(Me.name_company,chr(34),"")  & "'")
...
Рейтинг: 0 / 0
Ошибка запроса Dcount
    #39834266
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
quickstar, очевидно ж
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
dim str$
str= ООО "Дом"
str=replace( str,""","'")
' если же нужно оставить кавычки то уже посложнее
' нужно посматривать каждый элемент и превращать 2 кавычки в одну - Гетц аж модуль класса создавал
dim i&
for i=Len(str) to 1 step-1, поскольку заменяем прямо в тексте идем назад
  if mid(str,i,1)=Chr(34) then ' не помню какой код у этого символа вроде Chr(34)
    mid(str,i,1)=Chr(34) & Chr(34) ' прикольная такая функция
  end if
next


избегать дублей нужно при вводе - потом сложно их выковыривать - на них могут и должны уже висеть связи.
Код: vbnet
1.
if DCount("[ID_Check]", "tbl_consumer", "[name_company]=""" & str & """")>1 then...
...
Рейтинг: 0 / 0
Ошибка запроса Dcount
    #39834267
quickstarВопрос 1: как устранить ошибку при использовании кавычек? Продублировать кавычки. Например Replace(Me.name_company,"""","""""") или Replace(Me.name_company, Chr(34), Chr(34) & Chr(34))
quickstarВопрос 2: есть ли иной способ проверки дублей? Это зависит от того, на каком этапе выполняется проверка.
Если при добавлении нового значения в справочник - уникальный индекс, возможно составной.
Или на Form_BeforeUpdate поиск нового значения в RecordsetClone формы-справочника (там тоже надо дублировать кавычки).

Если при создании документа с выбором в поле со списком (ПС) значения из справочника, то при указании отсутствующего значения в ПС обрабатывать событие NotInList для добавления в справочник.

Если для поиска дублей - запрос с группировкой по полю и Count(*) > 1 вернет все повторяющиеся значения в поле.
...
Рейтинг: 0 / 0
Ошибка запроса Dcount
    #39834306
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все упирается в основные правила "базостроения"-не помню какая нормальная форма определяет(доступным языком) что в поле должна содержаться минимальная единица информации-то бишь ооо "дом" это поле содержащее инфу о типе собственности и наименовании и должно быть 2 поля: тип-ООО и наименование-дом
(при более сложных процедурах обходить это будет значительно сложнее,а если будет 2 поля код упростится)
...
Рейтинг: 0 / 0
Ошибка запроса Dcount
    #39834866
quickstar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MrShin, использую
Код: vbnet
1.
2.
3.
If DCount("name_company", "tbl_consumer", "[tbl_consumer]![name_company]=""" & Replace(Me.name_company, """", """""") & """") > 0 Then
     MsgBox ("Компания с таким названием уже есть в базе данных. Введите ИНН компании, чтобы проверить не является ли эта компания дубликатом.")
End If



Результат: дубликаты ищет успешно, но если в поле введено цифровое значение.
Если же введено ООО "Дом", то дубликат в БД не находит. Подскажите почему так?
...
Рейтинг: 0 / 0
Ошибка запроса Dcount
    #39834872
quickstar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku, при
Код: vbnet
1.
DCount("name_company", "tbl_consumer", "replace([tbl_consumer]![name_company],chr(34),"")='" & replace(Me.name_company,chr(34),"")  & "'")


Выходит ошибка.
...
Рейтинг: 0 / 0
Ошибка запроса Dcount
    #39834933
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
quickstar,
Вариант попроще:
Можно не избавляться от кавычек а отбирать по названию:name_company like"*дом*"
...
Рейтинг: 0 / 0
Ошибка запроса Dcount
    #39834941
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вдогонку:name_company like"*" & [введите название] & "*"
...
Рейтинг: 0 / 0
Ошибка запроса Dcount
    #39835027
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
quickstar, можно подойти и с другой стороны, т.е. в искомых данных в памяти избавляться от кавычек, служебных знаков, междометий, й,ь,ъ,я,э,ю,ы и пр. и делать поиск уже без них.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка запроса Dcount
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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