你用sqlplus 在2号服务器上作一样的动作,他认吗?

解决方案 »

  1.   

    ----------------------------
    认"表名+字段名"的SQL语知
    ----------------------------
    什么意思?说清楚一些
      

  2.   

    楼上那位,一猜就知道是我敲错了,是SQL语句了!
    在2号服务器上作一样的动作,认!
    代码为:StrSQL = 'select photo.filename,photo.filetype from photo'
    new_syntax=SQLCA.SyntaxFromSQL(StrSQL,'style(type=grid)',error_synsQL);
    dw_1.Create(new_syntax,Error_Create)
    dw_1.settransobject(sqlca)
    dw_1.retrieve()
      

  3.   

    直接运行SQL语句没有问题,问题出现在动态创建了数据窗口后,它的列名photo_filename就不认了,而只认filename,但连接另一台服务器时却认photo_filename而不认filename.
      

  4.   

    有可能是大小写的问题,我建议你将所有的 表名 + 列名 写正确,写正确就是说,实际是大写就写大写,实际是小写就写小写,并加上双引号。比如:"AB"."AA" 和 "ab"."AA"是不一样的。但如果不写双引号,则默认为大写:AB.AA = ab.AA = ab.aa = "AB"."AA"
       查看表名和列名:sys.user_tables,sys.user_tab_columns.
      另一种可能,就是权限问题,如果你访问了其它用户下的表,或视图等,有可能出在权限上。这种情况很象你说的,在SQLPLUS 和PB的画笔中都没有问题,但执行程序却有问题,最有可能就是缺少权限。
      

  5.   

    我写了一段简单的,试过后是相同的现象,连1号服务器OK,连2号服务器则不行,在最后一行处出错string sql,syn,err
    sql ='SELECT AAA.A I,BBB.B,AAA.B J FROM AAA,BBB WHERE AAA.A=BBB.B'
    syn = sqlca.SyntaxFromSQL(sql,"style(type=form)",err)
    dw_1.Create(syn,err)
    dw_1.settransobject(sqlca)
    dw_1.retrieve()
    messagebox('',string(dw_1.object.AAA_J[1]))