[SOLVED] Falsches Auslesen einer SharePoint Liste mit OLE



  • Hallo.

    Über folgenden Code lese ich eine Liste aus unserem SharePoint aus:

    private System.Data.DataTable GetDataFromSharePointWithFilter(System.Uri Link, string ListName)
            {
                System.Data.DataTable fdt = null, dt = null;
    
                #region GetDataFromSharePoint
                string connectionString = GenerateConnectionString(Link, ListName);
                System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(connectionString);
                conn.Open();
    
                string strSQL = "SELECT * FROM LIST";
                System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(strSQL, conn);
                DataSet ds = new DataSet();
    
                ds.Locale = System.Globalization.CultureInfo.InstalledUICulture;
                System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter(cmd);
                da.Fill(ds);
                #endregion
    
                return ds.Tables[0];
    }
    

    Das funktioniert auf den ersten Blick super. Auf den zweiten Blick fällt auf, dass eine Spalte der Liste Werte wie 000, 001, 008, ... , 0028, etc. beinhaltet.
    Für den Wert 008 liefert das Programm z.B. 24 😮 😮

    Woran kann das liegen? Konvertiert er den Inhalt irgendwie gewaltsam in einen anderen Typen? Überhaupt scheint er den String des OLE Downloads nicht richtig zu interpretieren.

    Hat jemand eine Idee, was man hier tun könnte?

    Grüße,
    Jan



  • Ich habe den Fehler gefunden und - es tut mir leid - aber ihr konntet ihn nicht finden, denn er lag in der Funktion GenerateConnectionString(/.../) aus
    Zeile 6.

    Der Vollständigkeit halber anbei die Funktion:

    public string GenerateConnectionString(System.Uri Link, string ListName)
            {
                string ConnString = string.Empty;
    
    /*This was wrong!!!*/
                //ConnString += "Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=1;RetrieveIds=Yes; DATABASE=" + Link.ToString() + "; List=" + ListName;
    
    /*This is running correctly!*/
                ConnString += "Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=1; DATABASE=" + Link.ToString() + "; List=" + ListName;
    
                return ConnString;
            }
    

Log in to reply