Powershell使用WHERE子句插入MS Access

时间:2019-07-08 10:52:34

标签: sql powershell ms-access

尝试根据使用WHERE子句输入Powershell形式的值将值插入MS Access DB。我收到一个简单的错误,但仍在努力解决(“ SQL语句末尾缺少分号(;)”

这是我的基本代码;

$query = "INSERT INTO SignIns ([DateTimeOUT], [SignedOut]) VALUES ('$($info.F1)','$($info.F2)') FROM $Info WHERE SignIns.Surname = '$($Info.F3)'" 
$cmd = $conn.CreateCommand()
$cmd.CommandText = $query
$result = $cmd.ExecuteNonQuery()
$conn.Close()

我已经修改了在我认为可以解决的所有位置添加分号的方法,但是没有运气,仍然返回相同的错误(在SQL语句末尾缺少分号);

    $query = "INSERT INTO SignIns ([DateTimeOUT], [SignedOut]) VALUES ('$($info.F1)','$($info.F2)') FROM $Info WHERE SignIns.Surname = '$($Info.F3);';"; 
    $cmd = $conn.CreateCommand()
    $cmd.CommandText = $query;
    $result = $cmd.ExecuteNonQuery();
    $conn.Close()

(作为参考,我在WHERE子句的末尾,在$ Query变量的末尾添加了分号,并尝试在$ cmd.commandtext变量中执行时追加到$ query的末尾,以及$ result变量的末尾。

我希望该语句正常执行并使用给定值进行更新。在Access DB本身中进行测试很困难,因为我无法从数据库中引用我的PS表单。任何帮助表示赞赏,

谢谢。

1 个答案:

答案 0 :(得分:0)

更新:现在,将查询修改为UPDATE可以让我按照简单的逻辑用WHERE语句“插入”值。

$conn.Open()
$query = "UPDATE SignIns SET DateTimeOUT = '$($info.F1)' WHERE SignIns.Surname = '$($Info.F3)'";
$cmd = $conn.CreateCommand()
$cmd.CommandText = $query;
$result = $cmd.ExecuteNonQuery();

$query = "UPDATE SignIns SET SignedOut = '$($info.F2)' WHERE SignIns.Surname = '$($Info.F3)'";
$cmd = $conn.CreateCommand()
$cmd.CommandText = $query;
$result = $cmd.ExecuteNonQuery();
$conn.Close()

当向表中输入新值时,这不是我通常使用的方法,但结果相同。.我认为没有任何含义。可能会将更新作为“从NULL更新到VALUE”,而不是将INSERT从源更新到DESINTATION(在其中)