不行啊!bok_temp是一个临时table,但是它没有具体的table名称,它只是一个DataSet控件名称。你可以帮我举一个例子吗?

解决方案 »

  1.   

    不要用SQL直接
    用APPEND
    用SQL没法实现
      

  2.   

    Thanks,各位可能都误解我的意思了,其实我现在的问题是如何用临时table和正式table实现联合查询。
      

  3.   

    最好不要用临时表,还是建一个正式的Table不过在取名的时候,取一些其它的名字,如_TempTable等。
      

  4.   

    INSERT INTO bok_temp
    ===>??SELECT bsi09, bsd03, bsi04
            FROM bsh_file, bsi_file, bsd_file
    =======>WHERE bsh01 = bsi01
    =======>AND bsi03 = bsd02
    =======>AND bsi18 = bsd23
    ===>??AND bsi09 IN (SELECT DISTINCT bsi09 FROM bok_temp)
    ===>??AND bsd03 IN (SELECT DISTINCT bsi03 FROM bok_temp)
    多表关联查询必须指定表名吧
    带问号的地方可以不指定表名,但是如果有崇明的字段名就不知道会发生什么事情了
      

  5.   

    最好不要用TclientDataset,虽然它不需要BDE的支持,但是它是在内存里放着呢,如果你的数据量稍微大些,速度不但很慢而且非常消耗系统资源。所以建议你这么做,用DBaseForWindows的数据库
    procedure CreateTmpTable(const AFieldDefs:TFieldDefs);
      var 
          TempTable: TTable;
      begin
       TempTable:=nil;
       Result:=nil;
       if AFieldDefs<>nil then
       begin
         TempTable:=TTable.Create(Application);
            try
           TempTable.FieldDefs.Assign(AFieldDefs);
               TempTable.DataBaseName := TempDir;
               TempTable.TableName := temp.dbf;
           TempTable.CreateTable;
            finally
              TempTable.Free;
            end;
        end
     end;调用的时候用TQuery
    function QueryDataSet(SQlStr: string): TDataSet;
    var
      Q: TQuery;
    begin
      Result := nil;
      Q := TQuery.Create(nil);
      try
        with Q do
        beign
          Sql.Clear;
          Sql.Add(SqlStr);
          Open;
        end;
      finally
        if Q.Active then 
           Result := Q 
        else
          Q.Free;
      end;
    end;
      

  6.   

    superatom(超级原子):
       请问创建可以用sql引用的临时table如何创建,
    如临时table的名称为temp1
    我可以用select * from temp1 where 1=1吗?