数据库中不知道为什么 我在访问3个数据库中的数据是 看我写的sql语句:
recordset_temp.sql.clear;
recordset_temp.sql.add('select [mc],[bmbh],[bmmc],[rybh],[ryxm],[rfkh],[rfye],[khrq],[yj],[bz]');
recordset_temp.sql.add('from [khlx],[bmbh],[ryxx]');
recordset_temp.sql.add('where [khlx].[rfzt]=[ryxx].[rfzt] and [ryxx].[bmbh]=[bmbh].[bmbh]');为什么编译完成后就是说bmbh不明确 实在上苦恼啊 我是用了adoquery组件的
是不是还要别的组件 我实在晕 有高人的加我qq:30450070
算是初学者 但是编程原理还是学的比较扎实的
希望可以请教下

解决方案 »

  1.   

    把三句合成一句,
    然后用recordset_temp.excsql(可能是这个)来执行
    如果还出错
    就把你的SQL语句在SQL查询分析器当中执行一下看看
    那里面的错误提示比较详细
      

  2.   

    我到 我怎么没想到呢open其实是查询的东西 还是要用excsql 我看看哦 谢谢先
      

  3.   

    在语句中的bmbh前加表名. 如
    select [mc],[bmbh.bmbh],[bmmc],[rybh],[ryxm],[rfkh],[rfye],[khrq],[yj],[bz]
    [khlx],[bmbh],[ryxx]'
    where [khlx].[rfzt]=[ryxx].[rfzt] and [ryxx].[bmbh]=[bmbh].[bmbh]
      

  4.   

    还是不行 我到sql查询分析器里面看看 你高手不 加下小弟
      

  5.   

    select mc,bmbh.bmbh,bmmc,rybh,ryxm,rfkh,rfye,khrq,yj,bz
    khlx,bmbh.bmbh,ryxx
    where khlx.rfzt=ryxx.rfzt and ryxx.bmbh=bmbh.bmbh
      

  6.   

    bmbh.bmbh 现在是这个是无效 到啊怎么搞的为什么访问 2个表就是错误呢
    我的bmbh的这个表在别的 模块中还添加正确呢 无助
      

  7.   

    服务器: 消息 107,级别 16,状态 2,行 1
    列前缀 'bmbh' 与查询中所用的表名或别名不匹配。
    服务器: 消息 107,级别 16,状态 1,行 1
    列前缀 'bmbh' 与查询中所用的表名或别名不匹配。
    服务器: 消息 107,级别 16,状态 1,行 1
    列前缀 'khlx' 与查询中所用的表名或别名不匹配。
    服务器: 消息 107,级别 16,状态 1,行 1
    列前缀 'ryxx' 与查询中所用的表名或别名不匹配。
    服务器: 消息 107,级别 16,状态 1,行 1
    列前缀 'ryxx' 与查询中所用的表名或别名不匹配。
    服务器: 消息 107,级别 16,状态 1,行 1
    列前缀 'bmbh' 与查询中所用的表名或别名不匹配。
      

  8.   

    一般不用[],除sql server已有的同名
      

  9.   

    bmbh中有没有bmbh字段那肯定有啊 
    我说了我写的别的模块还用到了呢现在是这样的出错在sql查询分析器里看来就是数据库的问题 要不加下你我把我写的全给你看看
      

  10.   

    现在我知道了好像真的是出问题了 服务器: 消息 208,级别 16,状态 1,行 1
    对象名 'bmbh' 无效。
    我要看看我的数据库怎么了 下了下班 30450070加我 谢谢
      

  11.   

    能把这几张表结构的sql列一下,没表不好弄!
      

  12.   

    select mc,bmbh.bmbh,bmmc,rybh,ryxm,rfkh,rfye,khrq,yj,bzfrom  khlx,bmbh,ryxx
    where khlx.rfzt=ryxx.rfzt and ryxx.bmbh=bmbh.bmbh
    xianzai mei wenti a
      

  13.   

    肯定是字段前没加表名造成的。多个表内都有的字段进行连接操作时,输出这些字段一定得加表明,否则就出这个错误。
    可以把你的sql语句拿到sqlserver的查询工具中进行验证,好了再拷回来吧。
      

  14.   

    这个已经很明确的了,是因为有几个表有共同的字段名,你加个别名处理就可以了,例如:Select A.DeptID,B.DeptName From Dept A,Emps B Where A.DeptID=B.DeptID
      

  15.   

    我的3个表为 :
    部门管理:bmbh (表名):bmbh(部门编号) bmmc fzr memo
    帐户管理:ryxx (表名):ryid bmbh(部门编号) rybh ryxm rfkh rfye rfzt(卡号的壮态)                   khrq yj bz mm gsls
    卡状态:  khlx (表名):rfzt(卡号的状态编号 mc(名称) 
    我现在要得到的就是 帐户的信息和帐户的卡的目前的状态名称 所以才有上面的问题
    select mc,bmbh.bmbh,bmmc,rybh,ryxm,rfkh,rfye,khrq,yj,bzfrom  khlx,bmbh,ryxx
    where khlx.rfzt=ryxx.rfzt and ryxx.bmbh=bmbh.bmbh
      

  16.   

    在query.open前先取得你的sqlstring看看它是什么样子了,然后再改就是啦
      

  17.   

    select [mc],[bmbh.bmbh],[bmmc],[rybh],[ryxm],[rfkh],[rfye],[khrq],[yj],[bz]
    from [khlx],[bmbh.bmbh],[ryxx]
    where [khlx].[rfzt]=[ryxx].[rfzt] and [ryxx].[bmbh]=[bmbh].[bmbh]这样运行真的出错  服务器: 消息 208,级别 16,状态 1,行 1
                      对象名 'bmbh.bmbh' 无效。
    select mc,bmbh.bmbh,bmmc,rybh,ryxm,rfkh,rfye,khrq,yj,bzfrom  khlx,bmbh,ryxx
    where khlx.rfzt=ryxx.rfzt and ryxx.bmbh=bmbh.bmbh  这样就ok 我晕啊 现在还只是在查询器里面这样我看来要去改程序里面的写法了 逛晕中
      

  18.   

    强烈谢谢谢谢大家我就只有20了 特别谢谢 教我这样多写语句的人 我就全给了 现在编译后没有出现
    错误至少这个问题是ok了谢谢tiankj() luofuyanglfy()
      

  19.   

    recordset_temp.sql.clear;
    recordset_temp.sql.add('select a.mc,a.bmbh,a.bmmc,a.rybh,a.ryxm,a.rfkh,a.rfye,a.khrq,a.yj,a.bz');
    recordset_temp.sql.add('from khlx a,bmbh b,ryxx c');
    recordset_temp.sql.add('where a.rfzt=b.rfzt and b.bmbh=c.bmbh');
    recordset_temp.sql.open;
      

  20.   

    谢谢了现在我知道了原来在多表查询的时候要前面最好加表名 
    还有调试的时候在分析器里面多看看
    不要乱用[]
    呵呵 我是刚刚用delphi才 15天吧 这个问题困恼我好多天 搞的我都晕死了
    谢谢大家我现在喜欢delphi了
    :)))))做程序员的痛苦和快乐就在这里吧 呵呵 加油刚刚毕业 真的是逛晕自己菜啊