我要写个程序,数据库是access的,我要从一个原始的access中按字段提出相应的数据,然后重新建一个数据库(原数据库中的字段要多于新库中的字段数,不知道怎么实现,请指点一下。

解决方案 »

  1.   

    下面代码是把一个表从Source: TADOQuery拷贝到Dest:TADOQuery,而两个ADOQuery分别连到两个Accessprocedure CopyTableData(Dest, Source: TADOQuery; ATable: String);
    var
      i: Integer;
      fldDest: TField;
    begin
      Dest.DisableControls;
      Source.DisableControls;
      try
        Source.Close;
        Source.SQL.Text := 'select * from ' + ATable;
        Source.Open;    Dest.Close;
        Dest.SQL.Text := 'delete * from ' + ATable;
        Dest.ExecSQL;
        Dest.SQL.Text :=  'select * from ' + ATable;
        Dest.Open;    while not Source.Eof do
        begin
          Dest.Append;
          for i := 0 to Source.Fields.Count - 1 do
          begin
            fldDest := Dest.FindField(Source.Fields[i].FieldName);
            if fldDest <> nil then
              fldDest.Value := Source.Fields[i].Value;
          end;
          Dest.Post;
          Source.Next;
        end;
      finally
        Dest.EnableControls;
        Source.EnableControls;
      end;
    end;
    至于一个Access中有多少表,你可以通过ADOConnection.GetTableNames得到
      

  2.   

    按字段取数adoquery.fieldbyname('字段名').asstring或asinteger,asdatetime等