2

我是 Excel 开发的新手,我有一个问题让我发疯。我希望你能帮助我。让我解释一下情况,我正在尝试创建一个 QueryTable 以从 SQL 导入数据,但是......我在刷新 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