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);
核心错误排查与修复
SQL语句拼接空格缺失
代码中拼接SQL时,CardName后直接连接From,未添加空格,导致最终SQL语句变成SELECT CardCode,CardNameFrom ocrd T0 limit 10,触发语法错误。修改拼接逻辑,在CardName后加空格:QueryStr += "CardName ";数据库语法兼容性问题
- 若使用SQL Server数据库,不支持
limit语法,需替换为TOP:QueryStr = "SELECT TOP 10 CardCode, CardName From ocrd T0"; - 若使用HANA数据库,
limit语法有效,但需确保语句空格正确。
- 若使用SQL Server数据库,不支持
变量声明不规范
startdate和enddate未声明类型,可能导致编译错误,补充类型声明:string startdate = EditText0.Value.ToString(); string enddate = EditText1.Value.ToString();添加异常捕获定位问题
给查询代码增加异常捕获,直接获取错误详情:try { oRecordset.DoQuery(QueryStr); // 后续数据处理逻辑 } catch (Exception ex) { SAPbouiCOM.Framework.Application.SBO_Application.MessageBox($"错误信息:{ex.Message}"); }
内容的提问来源于stack exchange,提问作者Benvc
相关产品推荐
相关产品推荐

