把 From =:Str的等号去掉

解决方案 »

  1.   

    你的Table与数据库相连了吗?
      

  2.   

    你把整个SQl语句写成一个字符串(如:Str1),然后Sql.Add(Str1)保证好使,我刚试过!
      

  3.   

    问题是即使写成了一个字符串,在这个字符串里还是没有实际的数据库名,只有STR来指向它!你怎么试的,请讲解!
      

  4.   

    Str:='Select * from '+Table1.TableName;
    With Query1 do
      Begin
        Query1.Close;
        Sql.Clear;
        Sql.Add(Str);
        Open;
      End;
    你试试吧。
      

  5.   

    谢谢!我这就回去试!兄弟,接分!
    请留下联系方式,多联系!
    Email:[email protected]
      

  6.   

    动态获得数据库名session.getdatabasename
    大概是这样,没办法测试。
    而且你的查询没有设置数据库,好像查询语句写的也不对。
      

  7.   

    什么叫“动态获得数据库名”啊??Query的 Database属性设了没有??如过设了:老兄,你是不是要这样??str:=Table1.Tablename;
    Query1.Close;
    Query1.SQL.Clear;
    Query1.SQL.Add('Select * from ' + str);
    Query1.Open;
      

  8.   

    str:=Table1.Tablename;
    Query1.Close;
    Query1.DatabaseName := Table1.DatabaseName
    Query1.SQL.Clear;
    Query1.SQL.Add('Select * from ' + str);
    Query1.Open;
      

  9.   

    以前用getdatabasename试过,没问题.
      

  10.   

    这不叫动态获取数据库名,应该叫动态SQL
      

  11.   

    呵呵,用format函数就可以搞掂。
    str:=Table1.Tablename;
    Query1.Close;
    Query1.SQL.Clear;
    Query1.SQL.Add(format('select * from %s',[Str]));
    Query1.Open;
      

  12.   

    刚好本人最近在搞 DELPHI +MSSQL SERVER的一个项目,一点经验拿来说说.1。使用TQuery这个控件有一个属性 .DatabaseName, 这个属性与 TDatabase 控件的属性DatabaseName 应该是相同的。该属性用来指明应用程序内部,各个数据库控件所连接的数据库的名称。
    2。你的程序“
    str:=Table1.Tablename;
    Query1.Close;
    Query1.SQL.Clear;
    Query1.SQL.Add('Select * from =:Str');
    Query1.params[0].asstring:=str;
    Query1.Open;

    其中把数据表名称作为一个参数传给SQL script,根据我的经验,是不能把数据表名作为 TQuery,TTable的SQL的参数的。只能用预先拼接好的SQL script。
      

  13.   

    这样:100%搞定
    var 
      cSql, cTable: string;
    begin
      cTable := Table1.Tablename;
      cSql := 'select * from %s ';//
      cSql := Format(cSql, [cTable]);
      Query1.Close;
      Query1.SQL.Clear;
      Query1.SQL.Add(cSql);
      Query1.Open;
    end