You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# SAP中Recordset.DoQuery查询字符串自动大写报错求助

C#操作SAP代码报错解决建议

问题代码

oForm = (SAPbouiCOM.Form)oApplication.Forms.ActiveForm;
SAPbobsCOM.Recordset oRecordset = (SAPbobsCOM.Recordset)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset);
startdate = EditText0.Value.ToString();
enddate = EditText1.Value.ToString();
string QueryStr = "";
QueryStr = "SELECT ";
QueryStr += "CardCode,";
QueryStr += "CardName";
QueryStr += " From ocrd T0 limit 10";
oRecordset.DoQuery(QueryStr);

核心错误排查与修复

  1. SQL语句拼接空格缺失
    代码中拼接SQL时,CardName后直接连接From,未添加空格,导致最终SQL语句变成SELECT CardCode,CardNameFrom ocrd T0 limit 10,触发语法错误。修改拼接逻辑,在CardName后加空格:

    QueryStr += "CardName ";
    
  2. 数据库语法兼容性问题

    • 若使用SQL Server数据库,不支持limit语法,需替换为TOP:
      QueryStr = "SELECT TOP 10 CardCode, CardName From ocrd T0";
      
    • 若使用HANA数据库,limit语法有效,但需确保语句空格正确。
  3. 变量声明不规范
    startdate和enddate未声明类型,可能导致编译错误,补充类型声明:

    string startdate = EditText0.Value.ToString();
    string enddate = EditText1.Value.ToString();
    
  4. 添加异常捕获定位问题
    给查询代码增加异常捕获,直接获取错误详情:

    try
    {
        oRecordset.DoQuery(QueryStr);
        // 后续数据处理逻辑
    }
    catch (Exception ex)
    {
        SAPbouiCOM.Framework.Application.SBO_Application.MessageBox($"错误信息:{ex.Message}");
    }
    

内容的提问来源于stack exchange,提问作者Benvc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 04:00:36