拷贝sql server 的一个数据表的一个字段到内存表,同时添加一个逻辑字段的 ADOQuery.SQL.TEXT如何写?

解决方案 »

  1.   

    关于Delphi内存表的使用说明:1.建立临时表 
      数据输入是开发数据库程序的必然环节。在Client/Server结构中,客户端可能要输入一批数据后,再向服务器的后台数据库提交,这就需要在本地(客户端)建立临时数据表来存储用户输入的数据,待提交后,清除本地表数据。2 建立临时表如下:function CreateTableInMemory(const AFieldDefs:TFieldDefs):TDataSet; var 
    TempTable:TClientDataSet; 
    begin 
      TempTable:=nil; 
      Result:=nil; 
      if AFieldDefs<>nil then 
      begin 
       try 
      TempTable:=TClientDataSet.Create(Application); 
       TempTable.FieldDefs.Assign(AFieldDefs); 
       TempTable.CreateDataSet; 
       Result:=(TempTable as TDataSet); 
      Except 
       if TempTable<>nil then 
    TempTable.Free; 
      Result:=nil; 
       raise; 
      end; 
    end; 
    end;//在程序中按如下方法使用: 
    procedure TForm1.Button1Click(Sender: TObject); 
    var 
    ADataSet:TDataSet; 
     begin 
       ADataSet:=TDataSet.Create(Self); 
       with ADataSet.FieldDefs do 
       begin 
        Add('Name',ftString,30,False); 
       Add('Value',ftInteger,0,False); 
       end;  with DataSource1 do 
      begin 
       DataSet:=CreateTableInMemory(ADataSet.FieldDefs); 
       DataSet.Open; 
    end;   ADataSet.Free; 
    end; 一、 Delphi使用内存表
    1.1 Delphi创建内存表步骤:
    1. 创建一个Ttable实例。
    2. 设置一个DataBaseName为一个目录或是已有的数据库别名。
    3. 指定TableName的值。
    4. 设置TableType属性指明要创建的数据库表类型。(如果此属性为ttDefault表示数据库类型与TableName指定值的扩展名对应)。
    5. 调用TTable.FidldDefs对象的Add方法向数据库表中添加字段。Add有4个参数:
     字段名:string。
     字段类型:TfieldType。
     字段大小:Word。一般只对String和Memo类型使用。
     字段是否NotNull: Boolean。
    6. 使用TTable.IndexDefs.Add()方法定义索引。Add有三个参数:
     索引名:string;
     索引字段名:string;
     索引类型:TIndexOptions;
    7. 调用TTable的CreateTable。这种方法适用于本地表。SQL表要用TQuery来创建。代码如下:
    var
    MemTable: TTable;
    begin
    with MemTable.Create(Self) do
    begin
    DatabaseName := 'c:\Temp';
    TableName := 'Test';
    TableType := ttParadox;
    with FieldDefs do
    begin
    Add('Age', ftInteger, 0, True);
    Add('Name', ftString, 25, False);
    Add('Weight', ftFloat, 0, False);
    end;
    IndexDefs.Add('', 'Age', [ixPrimary, ixUnique]);
    CreateTable;
    end;
    end;
      

  2.   

    感谢您对不厌其烦,但我认为一句SQL查询语句应该可以做到,当然我做不到
      

  3.   

    select field1, 1 as field2 from table 
      

  4.   


    不行,‘1 as field2’ 不能编辑
      

  5.   

    前台的dbgrideh控件中加一列为checkbox,value值为0和1,内存表中对应新增这个逻辑字段,数据类型为ftboolean,从后台查询带回来,同时对该字段赋值了
      

  6.   

    MySQL:
    CREATE TEMPORARY TABLE IF NOT EXISTS tbl_test
    SELECT field1,1 AS field2 FROM YourTable忘记SQL SERVER是否有类似的语法,自己查下手册。