SQL Server7 支持WIN98对WIN98的连接,要走tcp/ip协议。
为什么这样,关注!

解决方案 »

  1.   

    WIN98对WIN98的连接时是设的tcp/ip协议连接,就是第一遍连接不行,第二遍就可以了。WIN98对WIN2000连接时设tcp/ip协议连接为什么不行,设为named pipes就可以?
      

  2.   

    WIN98对WIN2000连接时tcp/ip协议可以
      

  3.   

    我在ODBC里配置数据源,设为tcp/ip协议连接不可以,是不是服务器要设置ip地址?
      

  4.   

    第二个问题呢?为什么换成SQL Server数据库就会出错?
      

  5.   

    win98应该不可以这样的,也许你的配置文件不对 :)
      

  6.   

      where menu_right.user_id=:gs_userid应该是 =:gs_userid 上的毛病,  先试一下把where menu_right.user_id= 'XXX'试一下.(写死来试一下)   注意要用   单引
      

  7.   

    多谢ALLTEC(荔枝),按你说的写成常量可以,问题解决一半!但我这里用到的是变量,该怎么办?
      

  8.   

    第一个问题有作过实验的吗?怎么我的不可以?第二个该怎么弄?ALLTEC(荔枝)能不能再帮一下?我再加分!
      

  9.   

    问题1,将SQL7的客户端网络设置,设置为NAMED PIPES,并将服务器所在的机器名在配置中写好.问题2,参考使用动态SQL语法3 来处理.
    DECLARE Cursor | Procedure  DYNAMIC CURSOR | PROCEDURE  FOR DynamicStagingArea ;
    PREPARE DynamicStagingArea FROM SQLStatement  {USING TransactionObject} ;
    OPEN DYNAMIC Cursor  {USING ParameterList} ;
    EXECUTE DYNAMIC Procedure {USING ParameterList} ;
    FETCH Cursor | Procedure  INTO HostVariableList ;
    CLOSE Cursor | Procedure ;具体就是:
    string ls_sql
    DECLARE cur_unright DYNAMIC CURSOR FOR SQLSA ;
    ls_sql = "select menu_item.menu_id from menu_item where menu_item.menu_id not in (select menu_right.menu_id from menu_right where menu_right.user_id=? order by menu_id "
    PREPARE SQLSA FROM :ls_sql ;
    OPEN DYNAMIC cur_unright using :gs_userid ;
    fetch cur_unright into :ls_menuid;
    ..
    .............
    ..
    close cur_unright;
      

  10.   

    谢谢met(金属羊),但问题仍然存在:
    问题1,在客户端的ODBC中设置数据源,设置为NAMED PIPES根本就连不通,只有设置为TCP/IP才出现我说的现象:第一次不行,第二次又可以。问题2,按你写的代码,执行OPEN DYNAMIC cur_unright using :gs_userid ;后sqlca.sqlcode返回是-1,错误信息为“语法错误或访问冲突”。该如何解决?
      

  11.   

    同样的程序,连SQL anywhere就没问题,连SQL Server就不行,不知怎么回事?
      

  12.   

    问题1,干吗一定用ODBC?专用接口不好?问题2,那就这样写:
    string ls_sql
    DECLARE cur_unright DYNAMIC CURSOR FOR SQLSA ;
    ls_sql = "select menu_item.menu_id from menu_item where menu_item.menu_id not in (select menu_right.menu_id from menu_right where menu_right.user_id='"+ gs_userid+"' order by menu_id "
    PREPARE SQLSA FROM :ls_sql ;
    OPEN DYNAMIC cur_unright ;
    fetch cur_unright into :ls_menuid;
    ..
    .............
    ..
    close cur_unright;
      

  13.   

    ls_sql = "select menu_item.menu_id from menu_item where menu_item.menu_id not in (select menu_right.menu_id from menu_right where menu_right.user_id='"+ gs_userid+"') order by menu_id "我这句话少写了一个右刮号,你看看现在放的位置对不对?然后用这句来用.
      

  14.   

    多谢met(金属羊),按你提供的语句,第二个问题已经解决!第一个问题呢?改成直连一样不行。
      

  15.   

    问题一:
    1.PB中可以连接吗?sql server端配置的是什么协议?name/pipe or tcp/ip
    2.数据库有冲突吗?
    3.isql/w都可以连通吗?
    如果上面问题解决,连接中
    怎么用do while循环处理?连接不上就退出贝。
      

  16.   

    谢谢liulee(流方),对问题一:
    1.sql server端配置的是tcp/ip,并且只能是tcp/ip,用name/pipe不行。在PB7的Database Profiles里作连接也是一样,须连接两遍,即第一遍连接不上,再连一次就可以了,若连接上了后断开连接(不是退出PB,若退出PB又须连两遍才能连上)再连,又能连接正常!
    2.数据库有冲突是什么意思?能解释一下吗?
    3.用isql/w怎么连啊?
    4.连接中用do while循环处理主要是我想看看连几遍能连上,没有别的意思。再次谢谢!
      

  17.   

    能不能详细的写一下连接的参数,
    DBMS=?LOGID=?等等
      

  18.   

    参数应该没有问题,若有问题为什么第二遍又可以?
    SQLCA.DBMS = "MSS Microsoft SQL Server 6.x"
    SQLCA.Database = "swnet"
    SQLCA.LogPass = "password"
    SQLCA.ServerName = "huaxu-server"
    SQLCA.LogId = "sa"
    SQLCA.DBParm = ""
      

  19.   

    对了,我用的是sql7.0数据库,游标怎么写啊
    select czymc into: ls_czymc from student_czy where czydm = 10 using sqlca;
    messagebox("",ls_czymc)
    结果什么也没有啊
      

  20.   

    先把循环注释掉,重新运行程序,在出现SQL Server的登录界面时点确定,看看错误提示.
      

  21.   

    联接协议,SERVER端可随意添加,客户只要有其中的一个就行了!!!
      

  22.   

    对问题一:多查查你机器配置方面的问题.比如是否装了2个TCP/IP协议.
    如果有IPX协议就删除IPX协议.
    NETBUI协议如果没有,请安装.另外该程序换其他机器运行运行,看是机器问题还是本身软件问题.
      

  23.   

    WIN2000 SERVER 上也要安装NETBUI协议.毕竟我们是搞C/S的,没必要泡在TCP/IP中.还有多看看你的本机IP地址和服务器是否在一个网段中.
      

  24.   

    TCP/IP协议、netbeui协议都有一个,没有问题,否则就连不上网了。本机及服务器IP地址都是自动分配的!
      

  25.   

    你最好使用直连,通过odbc 联接SQLSERVER 对嵌套式SQL语句支持不好 会提示语法错误
      

  26.   

    1、这样的代码很不规范~~
    建议用直连驱动,不要用ODBC~~
    连2次的问题是因为延迟~~
    2、拼写、格式问题~~