SQL-запрос выбора поврежден - PullRequest
1 голос
/ 03 июля 2019

Я столкнулся с очень необычной проблемой (по крайней мере, для меня), и я понятия не имею, как ее решить.

По сути, я сделал очень простой запрос выбора, чтобы найти наших клиентов в таблице (dbo_t_Person) и вернуть их записи. Мне нужно, чтобы они были доступны для поиска, даже если у нас есть только адрес электронной почты или номер телефона для некоторых клиентов. Поэтому я написал критерии, чтобы либо игнорировать поле, если данные не были введены, либо выполнить поиск аналога (через «Мне нравится»), если в любое данное поле были введены только частичные данные. См. SQL ниже, извинения за то, как это повторяется.

Это все хорошо, работает отлично и достаточно быстро для нашего использования.

Тем не менее.

Я могу выполнить запрос столько раз, сколько захочу, с введенными новыми данными, и он работает нормально, но если я закрою запрос и снова открою его, SQL выйдет из строя, и ему не хватит памяти и сбой доступа, это сбой просто открыть SQL, а также запустить его. Под haywire я подразумеваю, что, если мне удастся утешить и снова открыть SQL, строки SQL внезапно бесконечно копируются на страницу.

Это происходит каждый раз, когда я переписываю SQL с нуля. Как, черт возьми, я могу остановить это?

Вот рабочий чистый код:

SELECT dbo_t_Person.PersonID
    ,dbo_t_Person.FullName
    ,dbo_t_Person.Address1
    ,dbo_t_Person.Address2
    ,dbo_t_Person.City
    ,dbo_t_Person.Zip
    ,dbo_t_Person.STATE
    ,dbo_t_Person.Country
    ,dbo_t_Person.Mobile
    ,dbo_t_Person.Phone
    ,dbo_t_Person.Email
FROM dbo_t_Person
WHERE (
        (
            (dbo_t_Person.PersonID) = [Forms]![from MICHAEL TEST WORKING]![OwnerIDEntry]
            OR [Forms]![from MICHAEL TEST WORKING]![OwnerIDEntry] IS NULL
            )
        AND (
            (dbo_t_Person.FullName) LIKE "*" & [Forms]![from MICHAEL TEST WORKING]![NameEntry] & "*"
            OR [Forms]![from MICHAEL TEST WORKING]![NameEntry] IS NULL
            )
        )


И так далее для остальных полей ввода

Однако, если мне удастся снова открыть SQL-запрос, он появится тысячами строк

Or [Forms]![from MICHAEL TEST WORKING]![NameEntry] Is Null

для всех полей ввода бесконечно повторяется.

Что-то непрерывно копирует код, как мне его остановить?

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

Рассмотрим скорректированное предложение WHERE с NZ() для обработки, если элементы управления пусты или нет.

WHERE dbo_t_Person.PersonID = NZ([Forms]![from MICHAEL TEST WORKING]![OwnerIDEntry], 
                                 dbo_t_Person.PersonID)
  AND dbo_t_Person.FullName = LIKE "*" & NZ([Forms]![from MICHAEL TEST WORKING]![NameEntry],
                                            dbo_t_Person.FullName) & "*"
0 голосов
/ 03 июля 2019

Попробуйте изменить критерии, чтобы они были более эффективными и чистыми, например:

IIF(ISNULL([Forms]![from MICHAEL TEST WORKING]![OwnerIDEntry]),TRUE,PersonID=[Forms]![from MICHAEL TEST WORKING]![OwnerIDEntry])

Поскольку вы имеете дело только с одной таблицей, вы также можете отказаться от dbo_t_Person. отовсюду, например так:

SELECT PersonID,FullName,Address1,Address2,City,Zip,STATE,Country,Mobile,Phone,Email
FROM dbo_t_Person

Возможно, упрощенная версия SQL не позволит Access повредить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...