是否可以从PowerShell更新MS Access中的行?

时间:2017-04-09 13:44:15

标签: powershell ms-access

我有以下PowerShell代码,它将新的数据行添加到MS Access数据库中(基于用户输入)并且工作正常。

Http

但是,我似乎无法更新已存在的数据库中的行。是否可以更新一行,而不是创建一个全新的行?

1 个答案:

答案 0 :(得分:5)

$recordset.AddNew()将新的空记录附加到记录集。要更新现有记录,您需要先导航到要修改的记录,然后更改该记录的值。

$recordset.Open($query, $ado, $cursor, $lock)

while ($recordset.Fields.Item('Account').Value -ne $AccName) {
  $recordset.MoveNext()
}

$recordset.Fields.Item('Serial') = $CGBSerial
...

$recordset.Update()
$recordset.Close()

但是,您无法将MoveNext()与静态光标一起使用,因此您需要将cursor type更改为adOpenForwardOnly$cursor = 0)。

或者您可以使用prepared statement

$cn = New-Object -ComObject 'ADODB.Connection'
$cn.ConnectionString = "..."
$cn.Open()

$cmd = New-Object -ComObject 'ADODB.Command'
$cmd.CommandText = 'UPDATE [Sheet1] SET Serial=?, SAExpiry=?, ... WHERE Account=?'
$cmd.Parameters.Append($cmd.CreateParameter('@p1', 200, 1, 50, $CGBSerial))
$cmd.Parameters.Append($cmd.CreateParameter('@p2', 7, 1, $null, $SAEDate))
...

$cmd.Execute()

$cn.Close()