【问题标题】:Using the Insert into SQL in MS Access database在 MS Access 数据库中使用 Insert into SQL
【发布时间】:2019-11-29 22:57:59
【问题描述】:

当在我的 MS Access 数据库中选中一个(复选框)列时,我试图将多个列从一个表复制到另一个表(两个表中的列名相同)。我知道我可以使用Insert Into SQL 查询,但它似乎不起作用。

当我尝试运行它时,我得到了

INSERT INTO 语句中的语法错误

这是我写的:

INSERT INTO Fauna_ATT (Burn ID, Burn Name, Value Effected, Pre Burn Action Details, During Burn Action Details, Post Burn Action Details) 
    SELECT Burn ID, Burn Name, Value Effected, Pre Burn Action Details, During Burn Action Details, Post Burn Action Details 
    FROM EPFP 
    WHERE ATT="TRUE";

Fauna_ATT 是我的表 我要放置列

Burn ID, Burn Name, Value Effected, Pre Burn Actions, During Burn Actions and Post Burn Actions 是我要复制的列

EPFP 是我的表,我希望列来自,我只希望在我的ATT(复选框列)被勾选时复制列。

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    将您的列名括在“[]”中

    INSERT INTO Fauna_ATT ([Burn ID], [Burn Name], [Value Effected], [Pre Burn Action Details], [During Burn Action Details], [Post Burn Action Details]) 
    SELECT [Burn ID], [Burn Name], [Value Effected], [Pre Burn Action Details], [During Burn Action Details], [Post Burn Action Details]
    FROM EPFP 
    WHERE ATT=1;
    

    可以在here找到有关何时将列名括在括号中的详细信息

    【讨论】:

    • 谢谢。它现在提出“条件表达式中的数据类型不匹配”
    • 好吧,你需要检查你的表列数据类型。除非你分享你的创建表脚本,否则我无能为力
    • 复选框值是布尔值,而不是字符串。 WHERE 子句应为 WHERE ATT = TrueWHERE ATT = -1
    • @MadisonRead,rene 是对的,ATT 应该是布尔值而不是字符串,我更新了答案
    【解决方案2】:
        OleDbConnection conn;
        OleDbCommand cmd;
        OleDbDataReader dr;
    
    
       private void connectDb()
       {
                conn = new OleDbConnection(@"Your Connection String");
                conn.Open();//initialization of your connection
       }
    
       private void performCommandOne()
       {
    
             String command1 = "INSERT INTO Fauna_ATT values(@Burn_ID, @Burn_Name, 
             @Value_Effected, 
             @Pre_Burn_Action_Details, @During_Burn_Action_Details, 
             @Post_Burn_Action_Details)";
    
              /*insert statement and the name of your coloumns in your 
              database must be no space */
    
            /*this code dislays like this.
            if you perform the insert processs..*/
            /*connection of your database must be initialize first*/
            this.connectDb();
            cmd = new OleDbCommand(command1,conn);
            cmd.Parameters.AddWithValue("@Burn_ID", "Fields for Burn_ID");
            cmd.Parameters.AddWithValue("@Burn_Name", "Fields for Burn_Name");
            cmd.Parameters.AddWithValue("@Value_Effected", "Fields for Value_Effected");
            cmd.Parameters.AddWithValue("@Pre_Burn_Action_Details", "Fields for Pre_Burn_Action_Details");
            cmd.Parameters.AddWithValue("@During_Burn_Action_Details", "Fields for During_Burn_Action_Details");
            cmd.Parameters.AddWithValue("@Post_Burn_Action_Details", "Post_Burn_Action_Details");
            cmd.ExecutedNonQuery();
            conn.Close();
    
       }
    
    
       private void performCommandTwo()
       {
    
                String commandTwo = "SELECT Burn_ID, Burn_Name, Value_Effected, 
                Pre_Burn_Action_Details, 
                During_Burn_Action_Details, Post_Burn_Action_Details 
                FROM EPFP 
                WHERE ATT='TRUE'";
    
                this.connectDb();
                cmd = new OleDbCommand(commandTwo,conn);
                cmd.Parameters.AddWithValue("@ATT", "fOR aTT FIELDS");
                dr = cmd.ExcecuteReader();
    
                if(dr.Read())
                {
                     //Found the value
                }else
                {
                     //values is not exist..
                }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-09
      相关资源
      最近更新 更多