none
TableAdapter 多表联合查询 报错!但在【查询生成器】--【执行车查询】时却显示正常!为什么? RRS feed

  • 问题

  • 多表查询sql:
    =================
    select t.contract_no,m1.contract_office,s1.saleperson,t.project_name_e, t.project_name_c,t.contract_date,t.job_qty,m2.area_type,t.contract_type, t.hs_contract_no,t.control_room,t.luyuebaohan,m3.building_usage, t.tp,m4.dwg_who,m5.dwg_status,t.dwg_date,t.dwg_apply_no,t.transfer_status, m6.transfer_office,t.transfer_qty,t.owner_name,t.receipt_name, t.tactic_relation,t.account_receipt,t.customer_name,m7.customer_type, t.customer_tel_no,t.customer_add,t.customer_contact,t.customer_zip_code, m8.job_site_office,t.job_site_zip,t.job_site_tel,m9.job_site_province, m10.job_site_city,t.job_site_contact,t.job_site_add_c,t.remarks, t.introduce_memo1||t.introduce_memo2 as introduce
    from sddba.sdprj1 t,
    (select m.code,m.description_c as contract_office from cmdba.cmcdms m
    where m.code_item_no='001' and m.data1='1') m1,
    (select s.user_id,s.last_name||s.first_name as saleperson from sydba.syuserms s
    where s.user_id>='4000' and s.user_id<='8000') s1,
    (select m.code,m.description_c as AREA_TYPE from cmdba.cmcdms m
    where m.code_item_no='530') m2,
    (select m.code,m.description_c as BUILDING_USAGE from cmdba.cmcdms m
    where m.code_item_no='505') m3,
    (select m.code,m.description_c as DWG_WHO from cmdba.cmcdms m
    where m.code_item_no='521') m4,
    (select m.code,m.description_c as DWG_STATUS from cmdba.cmcdms m
    where m.code_item_no='523') m5,
    (select m.code,m.description_c as TRANSFER_OFFICE from cmdba.cmcdms m
    where m.code_item_no='001' and m.data1='1') m6,
    (select m.code,m.description_c as CUSTOMER_TYPE from cmdba.cmcdms m
    where m.code_item_no='522') m7,
    (select m.code,m.description_c as JOB_SITE_OFFICE from cmdba.cmcdms m
    where m.code_item_no='001' and m.data1='1') m8,
    (select m.code,m.description_c as JOB_SITE_PROVINCE from cmdba.cmcdms m
    where m.code_item_no='504') m9,
    (select m.code,m.description_c as JOB_SITE_CITY from cmdba.cmcdms m
    where m.code_item_no='503') m10
    where t.contract_no='BJ1983A'
    and t.contract_office=m1.code(+)
    and t.sales_person=s1.user_id(+)
    and t.area_type=m2.code(+)
    and t.building_usage=m3.code(+)
    and t.dwg_who=m4.code(+)
    and t.dwg_status=m5.code(+)
    and t.transfer_office=m6.code(+)
    and t.customer_type=m7.code(+)
    and t.job_site_office=m8.code(+)
    and t.job_site_province=m9.code(+)
    and t.job_site_city=m10.code(+)
    =================
    报错界面:
    =================
    http://shao.yoyotao.net/upload/tableAdapter_Error01.JPG
    =================
    查询生成器中执行结果正常如下:
    =================
    http://shao.yoyotao.net/upload/tableAdapter_Error02.JPG
    =================
    我的环境已经是VS2005 SP1
    请大家帮助解决!非常感谢!

    Netshao
    2009年12月31日 1:21

全部回复

  • 你好!

    1 SQL 中出现多次 (+)  是否是你发出来的 SQL 有误。
    2 像你目前的 SQL 最好使用存储过程的方式。TableAdapter 也是可以使用存储过程的。

    知识改变命运,奋斗成就人生!
    • 已标记为答案 Mog Liang 2010年1月7日 2:47
    • 取消答案标记 Netshao 2010年1月8日 7:53
    2009年12月31日 1:29
    版主
  • 你好!

    1 SQL 中出现多次 (+)  是否是你发出来的 SQL 有误。
    2 像你目前的 SQL 最好使用存储过程的方式。TableAdapter 也是可以使用存储过程的。

    知识改变命运,奋斗成就人生!

    谢谢回复!
    我的sql在后台数据库和 Crystal Report 的查询生成器中运行都没有问题!
    Netshao
    2010年1月5日 3:36
  • 你把 SQL 中出现的 (+) 去掉, || 替换为 + 号
    知识改变命运,奋斗成就人生!
    2010年1月5日 3:45
    版主
  • 你把 SQL 中出现的 (+) 去掉, || 替换为 + 号
    知识改变命运,奋斗成就人生!

    谢谢回复!好像不是sql的问题。
    我使用如下sql,错误依然。
    select d.project_no,d.contract_no,d.project_name_c,m1.pcompany from cndba.cnprj1 d,
    (select m.code,m.description_c as pcompany from cmdba.cmcdms m
    where m.code_item_no='001' and m.data1='1') m1
    where d.contract_no='QD1234A'
    and d.contract_office=m1.code(+)
    去掉(+)也一样。

    Netshao
    2010年1月8日 7:52
  • 你好!

    去掉 + 和 || 后 SQL 语法是正确的。你把你的 SQL 改为存储过程的方式应该能够解决你的问题。

    知识改变命运,奋斗成就人生!
    2010年1月8日 8:00
    版主