看来需要学习一下Sybase支持的SQL~~~~

解决方案 »

  1.   

    如果你的query是通过数据库别名去连接数据库的,那么,DatabaseName可以不出现在sql语句之中啦;
    然后你从另外一个数据库中取得数据并拷贝到sybase中,这样的sql不是不能写,但是比较麻烦,倒不如你用两个query,一个直接从paradox中取得数据,然后逐条添加到sybase中(或者直接使用batchmove)
      

  2.   

    可以这样写
    query.sql.clear;
    query.sql.add('Insert into :TableName In DataBasePath Select * From :Table1');
    query.params[0]:=tablename;
    query.params[1]:=table1;
    query.sql.execsql;
    句中有一句 In DataBasePath, 意思是让query在该路径下寻找数据库TableName;
    如果不写该语句 的话,就会在自身属性的DataBaseName所定义的路径中寻找。
      

  3.   

    其实这种SQL语句的问题只要通过用F8单步跟踪应该很好解决
    假设你的TablePath='c:\wangzhen\'
    那么你的SQL送到QUERY1中其实就变成了下列语句
    inset into ":databaseName:tableName" selet * from "c:\wangzhen\table1"
    这显然不对,这样的语句能在SYBASE中运行吗?(我是用SQLSERVER的)
    还有此处的CHR(#13)令人费解?是想换行码?似乎没这个必要。
    在DELPHI中的SQL的写法有如下几点
    如果想引用变量
       var str,sql:string;
       str:='wangzhen';
       sql:='select * from table where a='+str+''
       query.sql.add(sql);
    真正送到QUERY中去的语句是select * from table where a=wangzhen 
    如果sql:='select *from table where a="'+str+'"'的话
    送到QUERY中去的语句就变成了select * from tabel where a="wangzhen"
    要记住最后送往QUERY中的语句才是为后端数据库所执行的语句,理解这一点那么
    要写这种SQL语句就不难了
      如果是用SQLSERVER的话我认为你的语句应该这样写
      var sql:string;
      sql:='insert into 数据库名.表名 select * from '+tablepath+'table';
      query.sql.clear;
      query.sql.add(sql);
      query.execsql;
    (以上“数据库”名和“表名”直接写成实际存在的数据库名和表名,
     可能和SYBASE不一样,不过道理是一样的,按照SYBASE所接受的样式写)
    支不支持绝对路径的问题是SYBASE支不支持,而不是DELPHI的问题!!
    如果还有问题请发([email protected])
         
      

  4.   

    唉!说了半天,我就是不知道这种格式在Sybase里边怎么写呀。
    这天语句原来确实是用于SQL Server的(我没有试过)