Как сообщает субъект, у меня есть рабочий запрос к MDB непосредственно в Access, у меня есть сценарий PowerShell, который работает с другим запросом, но этот запрос не возвращает данных. Идеи?
Это работает...
$path = "C:\temp\Config.mdb"
$adOpenStatic = 3
$adLockOptimistic = 3
$cn = new-object -comobject ADODB.Connection
$rs = new-object -comobject ADODB.Recordset
$cn.Open("Provider = Microsoft.Jet.OLEDB.4.0;Data Source = $path")
$Ports = $rs.open("Select * from Options where OptionName='Eng.SerialPortMgr.PrinterPort1'",$cn,$adOpenStatic,$adLockOptimistic)
$rs.MoveFirst()
do {
$rs.Fields.Item("OptionName").value + " = " + $rs.Fields.Item("OptionData").value;
$rs.MoveNext()}
until($rs.EOF -eq $True)
$rs.Close()
$cn.Close()
$Ports
Это не так, и я не понимаю, почему. Единственная разница заключается в том, что запрос и запрос в этом скрипте ниже работают в Access ...
$path = "C:\temp\Config.mdb"
$adOpenStatic = 3
$adLockOptimistic = 3
$cn = new-object -comobject ADODB.Connection
$rs = new-object -comobject ADODB.Recordset
$cn.Open("Provider = Microsoft.Jet.OLEDB.4.0;Data Source = $path")
$Ports = $rs.open("SELECT Options.OptionName, Options.OptionData FROM Options WHERE OptionName LIKE 'Eng.SerialPortMgr.PrinterPort*'",$cn,$adOpenStatic,$adLockOptimistic)
$rs.MoveFirst()
do {
$rs.Fields.Item("OptionName").value + " = " + $rs.Fields.Item("OptionData").value;
$rs.MoveNext()}
until($rs.EOF -eq $True)
$rs.Close()
$cn.Close()
$Ports
Пробовал и то, и другое не дает результатов
поскольку вы выбираете только из одной таблицы, я бы также попытался удалить идентификаторы таблиц из вашего предложения SELECT.
Что дает $ rs.Count?
так что я повозился с этим и заставил его работать,% - это то, что ему нравится в сценарии. Не уверен, почему это не сработало, прежде чем я должен был исправить опечатку или что-то, чего я не видел. Все это часть большого сценария оболочки WPF, я, наверное, споткнулся, lol.





Это сработало ...
$path = "C:\temp\Config.mdb"
$adOpenStatic = 3
$adLockOptimistic = 3
$cn = new-object -comobject ADODB.Connection
$rs = new-object -comobject ADODB.Recordset
$cn.Open("Provider = Microsoft.Jet.OLEDB.4.0;Data Source = $path")
$SawConfigPorts = $rs.open("SELECT Options.OptionName, Options.OptionData FROM Options WHERE OptionName LIKE 'Eng.SerialPortMgr.PrinterPort%'",$cn,$adOpenStatic,$adLockOptimistic)
$rs.MoveFirst()
do {
$rs.Fields.Item("OptionName").value + " = " + $rs.Fields.Item("OptionData").value;
$rs.MoveNext() }
until($rs.EOF -eq $True)
$rs.Close()
$cn.Close()
$SawConfigPorts
Этот ответ был бы лучше, если бы вы включили то, что вы изменили, чтобы будущим читателям не приходилось вручную сравнивать ваши блоки кода, чтобы увидеть, что изменилось.
%- это подстановочный знак в SQL. Не*.