根据IIF声明的结果插入

时间:2018-05-04 01:07:42

标签: sql ms-access ms-access-2016

我想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表的LOGIN FIELD中。我试试这个:

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

编辑: 这是随机的。我唯一改变的是改变的表的名称 ' Login_Results'到' Login_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 :(得分:0)

您无法在IIf function

中尝试使用EVAL进行多重比较

我仍然无法弄清楚你要在表中保存的内容 - 没有任何登录成功插入的客户信息。但也许你只是在尝试一个概念验证

我还认为你的(G.Results)="Loggin Failed" WHERE子句中有拼写错误 - 应该是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");