Quantcast
Channel: Windows PowerShell Forum
Viewing all articles
Browse latest Browse all 2314

Problem mit Zugriff PowerShell auf ADODB - Daten

$
0
0
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 ?



Viewing all articles
Browse latest Browse all 2314


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>