Вставить в на основе результатов IIF Устава - PullRequest
0 голосов
/ 04 мая 2018

Я хочу INSERT результаты

SELECT G.Results
FROM (SELECT IIf([Forms]![Login]![User_Name]=[C_Customers].[user_name]                                       
             And                                                
                [Forms]![Login]![Password]=[C_Customers].[Password]
                ,"Login Successful"
                ,"Login Failed") AS Results 
      FROM C_Customers)  AS G
      WHERE ((G.Results)="Login Successful");

[Формы]! [Логин]! [Имя_пользователя] и [Формы]! [Логин]! [Пароль] взяты из формы, которая запрашивает ваше имя пользователя и пароль. Инструкция IFF сравнивает ваш пользовательский ввод с этими полями и находит совпадение в таблице. Этот запрос выполнен успешно. Я хочу INSERT результаты в поле LOGIN_RESULTS. Я пытаюсь это:

INSERT INTO Login_results (login)
SELECT G.Results
FROM (SELECT IIf([Forms]![Login]![User_Name]=[C_Customers].[user_name]                                       
             And                                                
             [Forms]![Login]![Password]=[C_Customers].[Password],"Login Successful","Login Failed") AS Results FROM C_Customers)  AS G
WHERE ((G.Results)="Login Successful");

Однако данные никогда не появляются в таблице. Login_Results пусто с одним полем, Login.

EDIT: Это было случайно. Единственное, что я изменил, - это имя таблицы, измененное с 'Login_Results' - 'Login_Status' и поле от 'Results' до 'Status', потому что мне понравилось больше. Внезапно это теперь добавляет. Зачем? Я не знаю.

Вот код, который теперь запускается по какой-то причине.

Insert into Login_Status (Status)
SELECT G.Results
FROM (SELECT IIf([Forms]![Login]![User_Name]=C_Customers.user_name             
                  And                                             
                [Forms]![Login]![Password]=C_Customers.Password
                ,"Login Successful"
                ,"Login Failed") AS Results 
       FROM C_Customers)  AS G
WHERE (((G.Results)="Login Successful")) OR (((G.Results)="Loggin Failed"));

Тема новой темы: что я изменил, чтобы внезапно запустить код? Он никогда не выдавал ошибку «Не удалось найти таблицу / поле», поэтому я не понимаю, почему изменилось целевое поле / имя.

1 Ответ

0 голосов
/ 05 мая 2018

Вы не можете попробовать использовать EVAL для множественных сравнений в IIf function

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

Я также думаю, что в предложении WHERE есть опечатка для (G.Results)="Loggin Failed" - это должно быть Login Failed?

Это может исказить ваши результаты

В любом случае вы можете попробовать этот пример, используя EVAL

INSERT INTO Login_Status (Status)
SELECT G.Results
FROM 
    (SELECT 
        IIf(EVAL(([Forms]![Login]![User_Name]=C_Customers.user_name) AND ([Forms]![Login]![Password]=C_Customers.Password)),
                "Login Successful", "Login Failed")
                AS Results 
       FROM C_Customers)  AS G
WHERE (G.Results="Login Successful") OR (G.Results="Login Failed");
...