0

「インデックス (ゼロベース) はゼロ以上で、引数リストのサイズ未満でなければなりません」というメッセージが表示されます。次の Insert コマンドでエラーが発生しました (insert sql コマンドを参照してください)。既にパラメーター リストを修正しており、正しいテーブルを参照しています。

 Dim dtResultParentGUID As DataTable

                'Get the GUID for the parent ObsSetCode
                Dim sbSql As New System.Text.StringBuilder()
                sbSql.Append("DECLARE @parentObsSetGUID uniqueidentifier ")
                sbSql.Append("SELECT GUID ")
                sbSql.Append("FROM {0} ")
                sbSql.Append("WHERE {1} = '{2}';")

                dtResultParentGUID = AicDatabase.ExecuteSqlReturnTable(String.Format(sbSql.ToString(), aicObsSet, pTablePrimaryKeyName, parentObsSetCode))


                Dim dtResultChildGUID As DataTable

                'Get the GUID for the child ObsSetCode
                Dim sbSql1 As New System.Text.StringBuilder()
                sbSql1.Append("DECLARE @childObsSetGUID uniqueidentifier ")
                sbSql1.Append("SELECT  GUID ")
                sbSql1.Append("FROM {0} ")
                sbSql1.Append("WHERE {1} = '{2}';")


                dtResultChildGUID = AicDatabase.ExecuteSqlReturnTable(String.Format(sbSql.ToString(), aicObsSet, pTablePrimaryKeyName, strInsert))

                strSql.Append("DECLARE @cur_date_time datetime; ")
                strSql.Append("SELECT @cur_date_time = getdate(); ")
                strSql.Append("WAITFOR DELAY '00:00:00.100'; ")

                strSql.Append("INSERT INTO aic_obs_set_obs_set_obs_item_xref_chg (ModifiedBy, ContentGUID, ParentObsSetGUID, ParentObsSetCode,")
                strSql.Append("ChildObsSetGUID, ChildObsSetCode, ChildObsItemGUID, ChildObsItemCode, RationaleText, RationaleFreeText")
                strSql.Append(String.Format("SELECT '{0}', '{1}', '{2}', '{3}','{4}', '{5}','{6}', '{7}','{8}', '{9}',"))
                strSql.Append("'ExcelSheet', 'GUID', dtResultParentGUID(0), parentObsSetCode, dtResultChildGUID(0), strInsert,")
                strSql.Append("'','', rationaleText, rationaleType")

                latLog.Operation = sbSql.ToString
                latLog.WriteLog()

                latLog.Operation = sbSql1.ToString
                latLog.WriteLog()
4

1 に答える 1

0

あなたはやっていますString.Formatが、ここで代用する値を提供していません:

String.Format("SELECT '{0}', '{1}', '{2}', '{3}','{4}', '{5}','{6}', '{7}','{8}', '{9}',"))

Append(これは、コードの下部にある最後のバー 2呼び出しです)

これらのプレースホルダーに何が入ると思っていましたか?


コメントに基づいて、次のようになります。

strSql.Append(String.Format("SELECT '{0}', '{1}', '{2}', '{3}','{4}', '{5}','{6}', '{7}','{8}', '{9}'," _
      "ExcelSheet", "GUID", dtResultParentGUID(0), parentObsSetCode, dtResultChildGUID(0), strInsert, _
      "","", rationaleText, rationaleType)
于 2013-10-30T15:36:57.933 に答える