Я хочу дать конечному пользователю возможность запрашивать базу данных MySQL динамически. Я предоставил им два текстовых поля для ввода их критериев поиска и после этого нажмите кнопку для запуска запроса. Первое текстовое поле позволяет им вводить целое число для поиска поля LoanID. Второй текстовый блок позволяет им вводить целое число для поиска в поле BookID. Запрос работает нормально, когда BOTH критерии были введены, однако, если конечный пользователь хочет только выполнить поиск, скажем, в BookID, я не получаю никаких результатов в запросе. Есть ли способ, с помощью которого я могу обрабатывать не-записи (null), чтобы запрос работал даже с одним введенным критерием?Как обрабатывать нулевые значения в простом динамическом SQL-запросе
Я использую ADOquery с MySQL DB, где типы данных для полей LoanID и BookID являются целыми. Таблица представляет собой типичную таблицу кредитов библиотеки, в которой показаны [LoanID], [LoanDate], [BorrowerID], [BookID]. Вот SQL до сих пор ... по рекомендации.
adoquery1.SQL.Clear;
adoquery1.SQL.Add('SELECT LoanID, LoanDate, BorrowerSurname,Loan.BookID, BookTitle FROM Loan,Book,Borrower');
adoquery1.SQL.Add('WHERE Borrower.BorrowerID = Loan.BorrowerID AND');
adoquery1.SQL.Add('Loan.BookID = Book.BookID AND');
adoquery1.SQL.Add('LoanID = :LoanID OR :loanID IS NULL AND ');
adoquery1.SQL.Add('Loan.BookID = :BookID OR :BookID IS NULL');
adoquery1.Parameters.ParamByName('LoanID').Value:= edit1.Text;
adoquery1.Parameters.ParamByName('BookID').Value:= edit2.Text;
adoquery1.open;
Я попытался изменить SQL, как вы рекомендовали - см. Оригинальное сообщение. Получение сообщения: «Объект параметров неверно определен. Предоставлена несогласованная или неполная информация». – user3396486
Вам нужны пробелы после AND и до ГДЕ? Я не знаю, как работает ваша функция SQL.Add(). В любом случае, вы должны иметь возможность выработать детали из моего образца. –