首页 > 解决方案 > 根据 IIF 语句的结果插入

问题描述

我想要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");

[Forms]![Login]![User_Name] 和 [Forms]![Login]![Password] 来自要求您输入用户名和密码的表单。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”,字段从“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"));

新线程主题:我做了什么突然使代码运行的更改?它从未抛出“找不到表/字段”错误,所以我不明白为什么更改目标字段/名称会起作用。

标签: sqlms-accessms-access-2016

解决方案


您不能尝试使用 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");

推荐阅读