zoukankan      html  css  js  c++  java
  • 在Delphi中如何动态创建dbf数据库(二)?

    unit Form_ToChangCSVforDBFU;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Menus, ComCtrls, DB, DBTables, Grids, DBGrids, ExtCtrls,
      StdCtrls;
    
    type
      TForm_ChangCSVToDBFF = class(TForm)
        PopupMenu1: TPopupMenu;
        DataSource1: TDataSource;
        DBGrid1: TDBGrid;
        Table1: TTable;
        ProgressBar1: TProgressBar;
        N1: TMenuItem;
        OpenDialog1: TOpenDialog;
        SaveDialog1: TSaveDialog;
        StatusBar1: TStatusBar;
        Button1: TButton;
        procedure N1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form_ChangCSVToDBFF: TForm_ChangCSVToDBFF;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm_ChangCSVToDBFF.N1Click(Sender: TObject);
    var
      llist,BBList:TStringList;
      i,j:Integer;
      Fname,Path:string;
    begin
      self.OpenDialog1.Title :='打开CSV文件';
      Self.OpenDialog1.FileName:='*.CSV';
      Self.OpenDialog1.Filter :='CSV文件(*.CSV)|*.CSV|所有文件(*.*)|*.*';
      if Self.OpenDialog1.Execute then
      begin
        Self.StatusBar1.Panels[1].Text :=Self.OpenDialog1.FileName;
        Self.SaveDialog1.Title :='保存DBF为...';
        Self.SaveDialog1.DefaultExt:='DBF';
        Self.SaveDialog1.Filter :='dDBASE文件(*.DBF)|*.DBF|所有文件(*.*)|*.*';
        Fname :=ExtractFileName(Self.OpenDialog1.FileName);
        Fname:=ChangeFileExt(Fname,'');
        Self.SaveDialog1.FileName:=Fname+'.dbf';
        if Self.SaveDialog1.Execute then
        begin
          Fname:=ExtractFileName(Self.SaveDialog1.FileName);
          Path :=ExtractFilePath(Self.SaveDialog1.FileName);
          llist:=TStringList.Create;
          llist.LoadFromFile(Self.OpenDialog1.FileName);
          BBList:=TStringList.Create;
          BBList.Delimiter:=',';
          Self.Table1.Active :=False;
          Self.Table1.DisableControls;
          Self.Table1.DatabaseName:=Path;
          Self.Table1.TableName:=Fname;
          Self.Table1.TableType :=ttDbase;
          Self.Table1.FieldDefs.Clear;//这句很重要
          Self.Table1.IndexDefs.Clear;//这句很重要
          BBList.DelimitedText:=llist.Strings[0];
          Self.Table1.FieldDefs.Add(BBList[0],ftInteger,0,True);
          for i:=1 to BBList.Count-1 do
          begin
            Self.Table1.FieldDefs.Add(BBList[i],ftFloat,0,True);
          end;
          Self.Table1.CreateTable;
          Self.Table1.Active :=True;
          Self.ProgressBar1.Min:=0;
          Self.ProgressBar1.Max :=llist.Count -1;
          for i:=1 to llist.Count-1 do
          begin
            Self.Table1.Append;
            BBList.DelimitedText:=llist.Strings[i];
            Self.Table1.Fields[0].AsInteger :=StrToInt(BBList[0]);
            for j:=1 to BBList.Count-1 do
            begin
              if BBList[j]<>'' then
              begin
                Self.Table1.Fields[j].AsFloat:=StrToFloat(BBList[j]);
              end else
              begin
                Self.Table1.Fields[j].Value:=-9999;//处理数据为空的情况,这有别于数据为0的情况
              end;
            end;
            Self.Table1.Post;
            Self.ProgressBar1.Position :=i;
          end;
          Self.Table1.EnableControls;
          Self.ProgressBar1.Position :=0;
          llist.Free;
          BBList.Free;
        end;
      end;
    end;
    
    end.
  • 相关阅读:
    JAVA线程池管理及分布式HADOOP调度框架搭建
    技术人员如何创业《二》 合伙人的模式
    JavaScript中的运动数学函数(持续更新)
    JavaScript中的加号
    JavaScript 函数绑定 Function.prototype.bind
    基于C#的波形显示控件的实现[附完整源码下载]
    JavaScript中的声明提升
    JavaScript & HTML5 Canvas 概览 更新时间201404111805
    《编写高质量代码——Web前端开发修炼之道》读后随笔
    B树/B+树/二叉搜索树/AVL树/红黑树
  • 原文地址:https://www.cnblogs.com/China3S/p/3506599.html
Copyright © 2011-2022 走看看