0

DB2/AS400 テーブルのデータセットを更新したいと考えています。

問題は、パラメーター リストに文字列パラメーターがある場合、コマンドが更新する行を見つけられないことです。

例: 会社番号のみを指定してコマンドを実行すると、コマンドは成功します。会社番号と施設番号を指定してコマンドを実行すると、コマンドが失敗します。

誰にもアイデアはありますか?

IDbConnection cn = Tools.GetCnApp();

try
{
    StringBuilder sql = new StringBuilder(); 

    sql.AppendLine("UPDATE " + Tools.GetSchemeApp() + "/ChangeReasonAssignments");
    sql.AppendLine("  SET Confirmed = @CONF, Confirmed_By = @CONFBY, Confirmed_At = @CONFAT");
    sql.AppendLine("  WHERE Company = @CONO AND Facility = @FACI AND Department = @DEPT");
    sql.AppendLine("  AND Production_Group = @PRGR AND Manufacturing_Order = @ORDR AND Order_Operation = @OPER");
    sql.AppendLine("  AND Confirmed = 0");

    IDbCommand cmd = cn.CreateCommand();

    cmd.SetParameter("@CONO", this.CompanyNumber);
    cmd.SetParameter("@FACI", this.FacilityNumber);
    cmd.SetParameter("@DEPT", this.ProductionGroup.Department.Name);
    cmd.SetParameter("@PRGR", this.ProductionGroup.Name);
    cmd.SetParameter("@ORDR", this.ManufacturingNumber);
    cmd.SetParameter("@OPER", this.OperationNumber);
    cmd.SetParameter("@CONFBY", Base.User);
    cmd.SetParameter("@CONFAT", DateTime.Now.ToString());
    cmd.SetParameter("@CONF", 1);

    cmd.CommandText = sql.ToString();

    if (cmd.ExecuteNonQuery() > 0)
    {
    }

編集

データベースのデータ型は次のとおりです。

  • 会社: 整数
  • 機能: VARCHAR
  • 部門: VARCHAR
  • Production_Group: VARCHAR
  • Manufacturing_Order:INTEGER
  • Order_Operation: INTEGER

.NETのデータ型は次のとおりです。

  • 会社番号: int
  • 施設番号: 文字列
  • 部署名: 文字列
  • ProductionGroup: 文字列
  • 製造順序: int
  • 注文操作: int

sql.ToString() の結果:

UPDATE TSAEDBDEV/ChangeReasonAssignments SET Confirmed = @CONF, Confirmed_By = @CONFBY, Confirmed_At = @CONFAT WHERE Company = @CONO AND Facility = @FACI AND Confirmed = 0
4

1 に答える 1

0

文字列値を ': に設定してみてください。cmd.SetParameter("@DEPT", "'" + this.ProductionGroup.Department.Name + "'");

于 2011-07-29T08:38:19.270 に答える