Access数据库字段除法遇0值(含0/0)报错问题求助
解决Access数据库0除以0的SQL计算报错问题
修改后的SQL语句
把原语句里的除法部分替换成安全的判断逻辑,用Access的IIf函数规避除以0的情况,修改后的代码如下:
sqlSTR = "SELECT IIf(TBL_Stocks_Balances.Item_QTY = 0, Null, TBL_Category_Item_File.Item_Org_Price2/TBL_Stocks_Balances.Item_QTY) AS [Price] FROM (((TBL_Category_Item_File INNER JOIN TBL_Suppliers_Product ON TBL_Category_Item_File.Item_ID = TBL_Suppliers_Product.Item_ID) INNER JOIN TBL_Suppliers ON TBL_Suppliers_Product.Supp_ID = TBL_Suppliers.Supp_ID) INNER JOIN TBL_Sub_categories ON TBL_Category_Item_File.ID_Sub_categories = TBL_Sub_categories.ID_Sub_categories) INNER JOIN TBL_Stocks_Balances ON (TBL_Stocks_Balances.Item_ID = TBL_Category_Item_File.Item_ID) AND (TBL_Category_Item_File.Item_BarCode = TBL_Stocks_Balances.Item_Barcode) WHERE tbl_Category_Item_File.Catg_ID = " & Split(cmblist.Text, " - ")(0)
关键逻辑说明
- 核心是用
IIf(TBL_Stocks_Balances.Item_QTY = 0, Null, 除法表达式)做判断:当分母Item_QTY为0时,直接返回Null(也可以改成0或者其他符合业务需求的默认值);只有分母不为0时,才执行除法运算。 - 如果要专门覆盖0除以0的场景,可以把条件扩展为
IIf(TBL_Stocks_Balances.Item_QTY = 0 OR TBL_Category_Item_File.Item_Org_Price2 = 0, Null, ...),确保分子分母都是0的情况也不会触发报错。
小提示
- 原SQL里
AS ['Price']的单引号属于多余写法,改成AS [Price]更符合Access的语法规范。 - 要是字段可能出现Null值,也可以结合
Nz函数处理,但这里重点是规避除以0,所以IIf的条件判断更直接。
内容的提问来源于stack exchange,提问作者Islam Awad
相关产品推荐
相关产品推荐

