Problem mit Zugriff PowerShell auf ADODB - Daten
Hallo zusammen,
habe ein Problem mit dem Zugriff von Powershell auf einen ADODB - Recordset.
Mir gehen so langsam die Ideen aus, was die Ursache ist und vor allen dingen, wie mas das Problem beheben kann.
Einige Randbedingungen
- Windows 10 10.0.17134
- Windows PowerShell ISE Host 5.1.17134.228
- ADODB - Connectstring
Provider=Microsoft.Jet.OLEDB.4.0; Data Source=
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=
- Access-Datenbank *.accdb / *.mdb
Schritte in dem Programmablauf
- Datenbank
Tabelle: tEav_Object
db_intEavObjId AutoWert
db_strEavObjDisplay Text(64)
db_strEavObjName Text(64)
db_intEavTypeId Long
...
- Aufbau Connection
$myDBs = [ClassDbs]::new()
..
$this.objConnection = New-Object -comobject ADODB.Connection
[Object] $objRecordset = New-Object -comobject ADODB.Recordset
$objRecordset.Open($strSqlCmd, $this.objConnection,$this.adOpenStatic,$this.adLockOptimistic)
$objRecordset.AddNew()
Zuweisung über VAriable vom Typ int
$objRecordset.Fields("db_intEavTypeId").Value = $this.intEavTypeIdPath (hat den Wert 1)
--> kein Problem
Zuweisung über Literal
#$objRecordset.Fields("db_strEavObjName").Value = "ABC"
--> kein Problem
Zuweisung über Variable
[String] $tstString = "ABC"
$objRecordset.Fields("db_strEavObjName").Value = $tstString
Fehlermeldung
Die angegebene Umwandlung ist ungültig.
In P:\Klaus\PowerShell\_ps_main\_ps_Script\tst_msacc_class03.ps1:178 Zeichen:5
+ $objRecordset.Fields('db_strEavObjName').Value = $tstString
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], InvalidCastException
+ FullyQualifiedErrorId : System.InvalidCastException
Untersuching Variable
[DBG]: PS C:\Users\Klaus.MI21A>> $tstString.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ----
True True String System.Object
[DBG]: PS C:\Users\Klaus.MI21A>>
Untersuching Feld RecordSet
[DBG]: PS C:\Users\Klaus.MI21A>> $objRecordset.Fields("db_strEavObjName").GetType()
IsPublic IsSerial Name BaseType
-------- -------- ----
True False __ComObject System.MarshalByRefObject
[DBG]: PS C:\Users\Klaus.MI21A>>
Hat jemand einen eine Idee ?