SQL Server 2012 ExpressでASPからDBに接続

スタート⇒すべてのプログラム⇒Microsoft SQL Server 2012⇒構成ツールSQL Server構成マネージャー⇒SQL Serverネットワークの構成⇒MSSQLSERVERのプロトコルTCP/IPを「有効」にして、SQLServerサービスを再起動する。

Install Shield 2010 諸々

技1:COMをレジストリに登録

   1. コンポーネントビューを選択
   2. COM 登録するファイルを含むコンポーネントを選択
   3. [ビルド時のCOM抽出]を[はい]に設定
   4. [コンポーネント]ノードを展開し、コンポーネントのファイルのビューを表示
   5. COM登録するファイルを右クリックし、[キーファイルの設定]を選択

参考⇒ Networld HelpDesk

 

技2:指定ドライブにフォルダを作成

 

技3:ほかのアプリケーションを起動

kazunori-ohmori.blog.so-net.ne.jp

 

エラー1:Locationエラー。
原因:単純にファイルサーバにアクセスできなかった。一回ログインしたらその後は正常になる。
注意点:IPアドレスでファイルサーバにアクセスをやめて、サーバ名でアクセスして、~.ismファイルをダブルクリックで開けばアクセス権限によるエラーが発生しなくなる。

 

エラー2:-6109エラー

原因1:DicomObjects.ocxが未登録。

原因2:User32.dllが参照されている。⇒VS2012以降のinstallShieldで-6109が出たときの対処 | Try&Error テクニカルブログ

C# オブジェクトのコピー

ディープコピー

オブジェクトをディープコピーする方法です。
コピーする型には SerializableAttribute 属性をつける必要があります。
コピーが不要なフィールドには NonSerializedAttribute 属性をつけることで
シリアライズの対象から除外されます。


[SerializableAttribute()]
public class SerializableClass
{
  public int SerializableField;

  // このフィールドはコピーされません。
  [NonSerializedAttribute()]
  public int NonSerializableField;

  public SerializableClass Clone()
  {
    object clone;
    using (MemoryStream stream = new MemoryStream())
    {
      BinaryFormatter formatter = new BinaryFormatter();
      formatter.Serialize(stream, this);
      stream.Position = 0;
      clone = formatter.Deserialize(stream);
    }
    return clone as SerializableClass;
  }
}

使いかたは以下のとおりです。

SerializableClass serializable = new SerializableClass();
serializable.SerializableField = 10;
serializable.NonSerializableField = 100;

SerializableClass clone = serializable.Clone();

// i には 10 が代入されます。
int i = clone.SerializableField;
// j には 0 が代入されます。(コピーされません)
int j = clone.NonSerializableField;


もちろん clone オブジェクトのプロパティを変更しても、
コピー元の serializable オブジェクトのプロパティは変更されません。

いろいろな型のクローンが必要なら次のようなヘルパークラスを用意すると
いいかもしれません。

public class CloneHelper
{
  public static T Clone<T>(T target)
  {
    object clone = null;
    using (MemoryStream stream = new MemoryStream())
    {
      BinaryFormatter formatter = new BinaryFormatter();
      formatter.Serialize(stream, target);
      stream.Position = 0;
      clone = formatter.Deserialize(stream);
    }
    return (T)clone;
  }
}

次のようにクローンメソッドを定義します。

[SerializableAttribute()]
public class SerializableClass
{
  public SerializableClass Clone()
  {
    return CloneHelper.Clone<serializableclass>(this);
  }
}