Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从一个MS Access数据库插入到另一个MS Access数据库_C#_Database_Ms Access_Duplicates_Insert Into - Fatal编程技术网

C# 从一个MS Access数据库插入到另一个MS Access数据库

C# 从一个MS Access数据库插入到另一个MS Access数据库,c#,database,ms-access,duplicates,insert-into,C#,Database,Ms Access,Duplicates,Insert Into,我必须将数据从MS Access数据库传送到另一个数据库。 这是使用的insert语句 cmd.CommandText = @"Insert Into [MS Access;PWD=pw;DATABASE=" + currentDBPath + @"].[Orders] Select * FROM [Orders] where OrderDate>=#" + from.ToShortDateString() + "# and OrderDate <=#" + to.T

我必须将数据从MS Access数据库传送到另一个数据库。 这是使用的insert语句

 cmd.CommandText = @"Insert Into [MS Access;PWD=pw;DATABASE=" + currentDBPath + @"].[Orders]  Select   *  FROM  [Orders]  where OrderDate>=#" + from.ToShortDateString() + "# and  OrderDate <=#" + to.ToShortDateString() + "# and  IsCustomer=Yes  ";

这句话很管用。但有人开始将数据直接输入到目标数据库和源数据库中。这会创建重复的记录。现在我想从源代码复制那些不在目标数据库表中的订单

假设Orders表有一个名为IDOrers的主键,则必须将两个表合并到一个DB中,以便比较数据。 简单的选择:在Sours数据库中有一个指向目标数据库上的[Orders]的链接,名为OrdersDest。在这种情况下,您将在目标上创建一个缺少订单的查询,名为MissingOrders:

现在,您的命令将如下所示:

cmd.CommandText = @"Insert Into [MS Access;PWD=pw;DATABASE=" + currentDBPath + @"].[Orders]  Select   *  FROM  [MissingOrders]  where OrderDate>=#" + from.ToShortDateString() + "# and  OrderDate <=#" + to.ToShortDateString() + "# and  IsCustomer=Yes ";
您还可以通过此链接表传递数据:

cmd.CommandText = @"Insert Into [OrdersDest]  Select * FROM [MissingOrders]  where OrderDate>=#" + from.ToShortDateString() + "# and  OrderDate <=#" + to.ToShortDateString() + "# and  IsCustomer=Yes  ";

我没有找到任何解决问题的方法,所以我决定删除目标数据库中的重复数据

我用下面的语句删除了数据

   Delete * from Orders where AutoOrderID   in (SELECT Orders.AutoOrderID FROM Orders Inner JOIN OrdersSource ON OrdersSource .OrderId = Orders.OrderId and OrdersSource .OrderDate=Orders.OrderDate);

有人开始直接输入数据。。。。解雇他/她吧!好小费!将转发给更高的权威抱歉,但这确实很昂贵,责任人应为此支付费用。如果这只是一个修复,则您可以临时将表导入另一个数据库,并使用MSAccess接口查找和修复重复项。如果这是一个反复出现的情况,那么您需要制定一个完整的sinchronitazion程序,正如前面所说,它是costly@faheemkhan,另一个选项是创建两个数据表DSsours和DSDESTINGE,用sours和目的地DBs中Orders表中的数据填充它们,将相关记录从DSsours传递到DSDESTINGE`,并将它们添加回目标数据库。我不明白为什么要使用Left Join。第1个查询也没有什么语法问题欢迎您:对于左连接,您希望查询包含来自sours的所有订单,因此在左连接的左侧有订单。您希望查询包含来自sours的所有订单,因此在左连接的左侧有订单,并排除目标中已存在的数据:其中OrdersDest.IDOrders为空。
   Delete * from Orders where AutoOrderID   in (SELECT Orders.AutoOrderID FROM Orders Inner JOIN OrdersSource ON OrdersSource .OrderId = Orders.OrderId and OrdersSource .OrderDate=Orders.OrderDate);