Запрос с использованием ввода из формы с флажком - PullRequest
0 голосов
/ 14 февраля 2019

Спасибо всем заранее, за ваше время и внимание.

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

У меня есть около 1 150 000 записей, и я должен иметь возможность поиска по следующим критериям: Номер детали (txtPK), Шаг (txtStep), процент пропущенного (txtPer) и узкое место?(ChkARD);ARD находится в базе данных как «Y» или «N».

Этот код работал, чтобы показать либо только Y, либо только N:

IIf([Forms]![Skips_Form]![chkARD],"Y", "N")

Однако, когда я попытался адаптировать его кпокажите «*» вместо «N», вместо всех записей он возвращает не все записи.

IIf([Forms]![Skips_Form]![chkARD],"Y", "*")

Мое желание - показывать только записи с «Y», когда флажок установлен, и показывать всезаписи, когда это не проверено.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Полный рабочий код SQL Спасибо Ли Мак

SELECT Data.POS, Data.PK, Data.[Step], Data.[ARD?], Skips.Skips, Skips.Total, 
Skips.[Skips %], Data.[OPERATION DESCRIPTION], Data.CHARGE_NUMBER, Data.[MDM_PN],
Data.[PlanVer], Data.[PlanRev], Data.[Task_Desc], Data.[Prod Version]

FROM Data INNER JOIN Skips ON Data.POS = Skips.POS

WHERE 
(((Data.POS) Like "*" & [Forms]![Skips_Form]![txtPK] & "*") 
AND ((Data.[Step]) Like "*" & [Forms]![Skips_Form]![txtStep] & "*") 
AND ((Data.[ARD?]) Like IIf([Forms]![Skips_Form]![chkARD],"Y","*")) 
AND ((Skips.[Skips %])>=[Forms]![Skips_Form]![txtPer])) 

OR 
(((Data.POS) Like "*" & [Forms]![Skips_Form]![txtPK] & "*") 
AND ((Data.[Step]) Like "*" & [Forms]![Skips_Form]![txtStep] & "*") 
AND ((Data.[ARD?]) Like IIf([Forms]![Skips_Form]![chkARD],"Y","*")))

ORDER BY Skips.[Skips %];
0 голосов
/ 14 февраля 2019

Предположительно, вы используете эти операторы iif в предложении where вашего запроса в сочетании с оператором = - что-то вроде:

select *
from YourTable
where ARD = IIf([Forms]![Skips_Form]![chkARD],"Y", "*")

Если это действительно так,затем, когда возвращается аргумент else оператора iif, оператор SQL становится:

select *
from YourTable
where ARD = "*"

Следовательно, он будет возвращать записи, для которых поле ARD имеетбуквальное значение "*".

Вместо этого следует либо использовать оператор like, который позволит подстановочным знакам, таким как звездочка, соответствовать любому значению, например:

select *
from YourTable
where ARD like IIf([Forms]![Skips_Form]![chkARD],"Y", "*")

или, используйте простую логическую логику, например:

select *
from YourTable
where (not [Forms]![Skips_Form]![chkARD]) or ARD="Y"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...