0

Microsoft.Office.Interop.Word.Table オブジェクトを T-SQL データベースに格納したいと考えています。そして、データベースからオブジェクトを再度取得して、Word 文書に貼り付けます。タグ、インデックス、フォーマットなどのすべての情報が一貫していることは必須です。

データベース側では、[Object] (varbinary(max)) byte[] フィールドを作成しました。

単語オブジェクトをパラメーター化されたクエリに直接割り当てると、シリアル化エラーが発生します。変換関数 (iConvertible) を明示的に作成する必要があることを伝えます。

System.InvalidCastException
  HResult=0x80004002
  Nachricht = Parameterwert konnte nicht von LoomTable in Byte[] umgewandelt werden.
  Quelle = offer
  Stapelüberwachung:
   bei offer.Classes.TextBlock.WriteTextBlockToDB() in C:\Temp\code\text\Classes\TextBlock.cs: Zeile215
   bei offer.ManageBlockTexts.ButtonLeft_Click(Object sender, EventArgs e) in C:\Temp\code\text\InsertNewText.cs: Zeile691

Innere Ausnahme 1:
InvalidCastException: Ein Objekt muss IConvertible implementieren.

コード:

SqlConnection cn = new SqlConnection(cn_string);
            string sql_Text = @"INSERT INTO LOOM.Text(Description, TextLong, TextBlock, Language, Approved, Object) VALUES(@DES, @TEL, @TEB, @LAN, @APP, @OBJ);
                            SELECT SCOPE_IDENTITY()";
...
using (SqlCommand sqlCommand = new SqlCommand(sql_Text, cn))
{
...
    sqlCommand.Parameters.Add("@OBJ", SqlDbType.VarBinary, Int32.MaxValue);
    sqlCommand.Parameters["@OBJ"].Value = this.loomTable;

    cn.Open();
    object returnObj = sqlCommand.ExecuteScalar();
...
}

using Microsoft.Office.Interop.Word;

namespace offer.Classes
{
    class LoomTable
    {
...
        private Table table;
...
    }
}

ある種の ToString コンバーターを構築するために、単語オブジェクトを独自の LoomTable クラスに既にラップしています。しかし、これは非常に手間がかかるようであり、ユーザーが図表や表に oleobjects を挿入すると、エラーが発生しやすくなります。

助言がありますか?助けていただければ幸いです。

4

1 に答える 1