#sql #vba #ms-access
#sql #vba #ms-доступ
Вопрос:
Я сделал заявление SQL для фильтрации проектов, и у меня возникли проблемы с фильтрацией только активных проектов. Он работает с некоторыми данными, но на несколько строк это не влияет.
Когда я пытаюсь отфильтровать весь активный проект, я использовал a varchar(1)
в качестве логического значения true/false 1=завершено 0=активно
SQL:
SELECT dbo_tblTrialTest.ID, dbo_tblTrialTest.PartNumber, dbo_tblTrialTest.CreationDate, dbo_tblTrialTest.Init, dbo_tblTrialTest.CompletionInit, dbo_tblTrialTest.CustomerName, dbo_tblTrialTest.CompletionDate, dbo_tblTrialTest.Description, dbo_tblTrialTest.ActiveAsString FROM dbo_tblTrialTest WHERE (((dbo_tblTrialTest.ActiveAsString) = TRIM("0"))) AND ((dbo_tblTrialTest.ID) LIKE '*' amp; [Forms]![frmTrialTestOverview]![tfFilter] amp; '*') OR (((dbo_tblTrialTest.PartNumber) LIKE '*' amp; [Forms]![frmTrialTestOverview]![tfFilter] amp; '*')) OR (((dbo_tblTrialTest.CustomerName) LIKE '*' amp; [Forms]![frmTrialTestOverview]![tfFilter] amp; '*'));
Вывод из этого запроса:
Таким образом, только некоторые строки не зависят от ActiveAsString
того, в какие строки вводятся данные? Я действительно не могу понять, почему это так.
Ответ №1:
Обрезать его нет смысла "0"
. Может быть, это нужно для поля, однако:
Trim(dbo_tblTrialTest.ActiveAsString)="0"
Но используйте битовое поле для значений True/False.
Кроме того, попробуйте эту логику:
WHERE dbo_tblTrialTest.ActiveAsString = "0" AND (dbo_tblTrialTest.ID LIKE '*' amp; [Forms]![frmTrialTestOverview]![tfFilter] amp; '*' OR dbo_tblTrialTest.PartNumber LIKE '*' amp; [Forms]![frmTrialTestOverview]![tfFilter] amp; '*' OR dbo_tblTrialTest.CustomerName LIKE '*' amp; [Forms]![frmTrialTestOverview]![tfFilter] amp; '*');
Комментарии:
1. Спасибо, чувак, за то, что ты сделал заявление о том, где работаешь. На самом деле это имеет смысл, но я постараюсь немного изменить его, считается ли это лучшей практикой? Я просто погуглил, и некоторые люди сказали, что вы можете использовать varchar/char в качестве оператора true/false.
2. вы можете использовать varchar/char в качестве оператора true/false … вы могли бы, но текст никогда не будет первым выбором для хранения числовых или логических значений.