2

私は Excel 開発に不慣れで、気が狂ってしまうという問題があります。あなたが私を助けてくれることを願っています。状況を説明させてください。SQL からデータをインポートするために QueryTable を作成しようとしていますが、... QueryTable を更新しようとするとエラーが発生します。エラー メッセージは、必要なパラメーターの値を渡していないことを示しています。 . (ハードコードされた動作:[ )

何時間もの調査の後、解決策やガイドとなる例を見つけることができませんでした...そして、ここにいます:| 何が間違っているのかわかりません。ここにいくつかのコードがあります

foreach (Range row in main.Rows)
    {
            //row.Clear();
            rowID = row.Row;
            if (string.IsNullOrEmpty(getAccounts(rowID, columnID)) )  
                continue;

            /*  string connectionString = // \"
                    string.Format("OLEDB;Provider=SQLOLEDB;Data Source={0};Initial Catalog={1};User ID={2};Password={3}",
             */      

            //string sql = "EXECUTE [Funciones].[Cuenta_Saldo_Anho] ?,?";
            //if (!string.IsNullOrEmpty(txtTipoSaldo.Text)) sql +=  ",?";

           string sql = "{CALL [Funciones].[Cuenta_Saldo_Anho] (?, ?";
           sql += (!string.IsNullOrEmpty(txtTipoSaldo.Text))? "" : ", ?" + ")}"; // optional parameter

           var qt = wSheet.QueryTables.Add( connectionString, row.Cells , sql);
           qt.CommandType = XlCmdType.xlCmdSql;

           var ctas = qt.Parameters.Add("@ctas", XlParameterDataType.xlParamTypeLongVarChar);
           //ctas.SetParam(XlParameterType.xlConstant, cuentas);
           ctas.SetParam(XlParameterType.xlRange, wSheet.Cells[rowID, columnID]));
           ctas.RefreshOnChange = true;

           qt.Parameters.Add("@anho", XlParameterDataType.xlParamTypeInteger)
 .SetParam(XlParameterType.xlConstant, Int32.Parse(anho));

           qt.Parameters.Add("@tipoSaldo", XlParameterDataType.xlParamTypeVarChar)
 .SetParam(XlParameterType.xlConstant, txtTipoSaldo.Text);

            //qt.BackgroundQuery = true;
            qt.FieldNames = false;
            qt.AdjustColumnWidth = false;
            qt.RefreshOnFileOpen = false;
            qt.Refresh();
      }

どんな助けでも大歓迎です。ありがとう。

4

0 に答える 0