Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Sage第50行SQL查询抛出未找到列错误或返回数字数据_C#_.net_Sage Line 50 - Fatal编程技术网

C# Sage第50行SQL查询抛出未找到列错误或返回数字数据

C# Sage第50行SQL查询抛出未找到列错误或返回数字数据,c#,.net,sage-line-50,C#,.net,Sage Line 50,我正在尝试通过.NET应用程序查询Sage Line 50。通过ODBC连接工作正常。我可以打开/关闭数据库并运行非常基本的查询,但我的一个查询稍微复杂一些,我需要包含默认的硬编码值,但它的行为非常奇怪 当我在Microsoft Access中运行该查询并对链接表运行它时,该查询工作得非常好,但当我在.NET中运行它时,它会抛出一个列not found错误,这取决于我的值 1) 返回的数字数据 如果我的问题是 选择“选择采购”\u分类账.ACCOUNT\u REF作为供应商代码,“10”作为组织

我正在尝试通过.NET应用程序查询Sage Line 50。通过ODBC连接工作正常。我可以打开/关闭数据库并运行非常基本的查询,但我的一个查询稍微复杂一些,我需要包含默认的硬编码值,但它的行为非常奇怪

当我在Microsoft Access中运行该查询并对链接表运行它时,该查询工作得非常好,但当我在.NET中运行它时,它会抛出一个列not found错误,这取决于我的值

1) 返回的数字数据 如果我的问题是

选择“选择采购”\u分类账.ACCOUNT\u REF作为供应商代码,“10”作为组织编号,…

结果:10返回为10.00

2) 缺少列: 如果我的问题是

选择“选择采购”\u分类账.ACCOUNT\u REF作为供应商代码”,“作为城市,…

结果:我的OdbcDataReader将只返回到“”的第一个实例的列,因此在此实例中,它将只返回ACCOUNT\u REF

3) 未找到列错误: 如果我的问题是

选择“选择采购”\u分类账.ACCOUNT\u REF作为供应商代码,“GB”作为国家/地区,…

它将抛出一个找不到该列的错误。但是,如果我使用
'-'作为国家/地区
'-'作为国家/地区
,它将工作,但它返回0.00而不是空字符串

因此,我的问题是: 1) 例如,当我的查询将
''包含为City
时,为什么MS Access的行为会有所不同,并允许我返回空值,但通过.NET查询时,它无法返回空值

2) 为什么它不允许my使用字母数字值(如“GB”)作为harcoded值,而不抛出未找到的列

3) 为什么它允许我使用
“-”作为国家/地区
,但返回0.00

这些有什么工作吗?我真的需要为一些字段返回硬编码的空值,为其他一些字段返回硬编码的字母数字值,我不能让返回的值带有小数点,而它们本不应该有小数点

它已经疯狂了好几个小时,我需要保持这种通用性,而当我遇到其他问题,例如查询无法连接列时,我已经解决了这个问题,但我试图保持我的应用程序尽可能通用,所以在xml定义中引入奇怪的参数似乎没有意义。我一直在考虑引入一个“默认”值,这在定义字段映射时在技术上是可以接受的,但是当值应该是空字符串时,返回的值应该是0.00,而应该是1,2,3的值返回的值应该是1.00、2.00等等呢

因此,我希望有人知道如何在查询级别解决这个问题,而不是通过代码来解决棘手的问题

谢谢

更新: 以下是我的完整查询(如果有帮助):

SELECT PURCHASE_LEDGER.ACCOUNT_REF AS SupplierCode, 
       PURCHASE_LEDGER.NAME AS SupplierName, 
       PURCHASE_LEDGER.ADDRESS_1, 
       PURCHASE_LEDGER.ADDRESS_2, 
       PURCHASE_LEDGER.ADDRESS_3, 
       PURCHASE_LEDGER.ADDRESS_4, 
       PURCHASE_LEDGER.ADDRESS_5,
       'London' AS City,
       COUNTRY_CODE.Name AS Country, 
       '' AS PostCode,
       '-' AS PostCode1,
       PURCHASE_LEDGER.VAT_REG_NUMBER AS TaxRegistrationNumber, 
       '10' AS CorporateGroupId,
       COUNTRY_CODE.Name AS Location, 
       CURRENCY.CODE AS CurrencyCode
  FROM (PURCHASE_LEDGER 
       INNER JOIN CURRENCY ON PURCHASE_LEDGER.CURRENCY = CURRENCY.NUMBER) 
       INNER JOIN COUNTRY_CODE ON PURCHASE_LEDGER.COUNTRY_CODE = COUNTRY_CODE.CODE
  • 城市将抛出一个错误,即未找到列
  • 邮政编码将导致不返回其余字段
  • 邮政编码1将返回0.00而不是“-”
  • OrganizationNumber将返回10.00而不是10