1. unit Form_ToChangCSVforDBFU;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, Menus, ComCtrls, DB, DBTables, Grids, DBGrids, ExtCtrls,
  8. StdCtrls;
  9.  
  10. type
  11. TForm_ChangCSVToDBFF = class(TForm)
  12. PopupMenu1: TPopupMenu;
  13. DataSource1: TDataSource;
  14. DBGrid1: TDBGrid;
  15. Table1: TTable;
  16. ProgressBar1: TProgressBar;
  17. N1: TMenuItem;
  18. OpenDialog1: TOpenDialog;
  19. SaveDialog1: TSaveDialog;
  20. StatusBar1: TStatusBar;
  21. Button1: TButton;
  22. procedure N1Click(Sender: TObject);
  23. private
  24. { Private declarations }
  25. public
  26. { Public declarations }
  27. end;
  28.  
  29. var
  30. Form_ChangCSVToDBFF: TForm_ChangCSVToDBFF;
  31.  
  32. implementation
  33.  
  34. {$R *.dfm}
  35.  
  36. procedure TForm_ChangCSVToDBFF.N1Click(Sender: TObject);
  37. var
  38. llist,BBList:TStringList;
  39. i,j:Integer;
  40. Fname,Path:string;
  41. begin
  42. self.OpenDialog1.Title :='打开CSV文件';
  43. Self.OpenDialog1.FileName:='*.CSV';
  44. Self.OpenDialog1.Filter :='CSV文件(*.CSV)|*.CSV|所有文件(*.*)|*.*';
  45. if Self.OpenDialog1.Execute then
  46. begin
  47. Self.StatusBar1.Panels[].Text :=Self.OpenDialog1.FileName;
  48. Self.SaveDialog1.Title :='保存DBF为...';
  49. Self.SaveDialog1.DefaultExt:='DBF';
  50. Self.SaveDialog1.Filter :='dDBASE文件(*.DBF)|*.DBF|所有文件(*.*)|*.*';
  51. Fname :=ExtractFileName(Self.OpenDialog1.FileName);
  52. Fname:=ChangeFileExt(Fname,'');
  53. Self.SaveDialog1.FileName:=Fname+'.dbf';
  54. if Self.SaveDialog1.Execute then
  55. begin
  56. Fname:=ExtractFileName(Self.SaveDialog1.FileName);
  57. Path :=ExtractFilePath(Self.SaveDialog1.FileName);
  58. llist:=TStringList.Create;
  59. llist.LoadFromFile(Self.OpenDialog1.FileName);
  60. BBList:=TStringList.Create;
  61. BBList.Delimiter:=',';
  62. Self.Table1.Active :=False;
  63. Self.Table1.DisableControls;
  64. Self.Table1.DatabaseName:=Path;
  65. Self.Table1.TableName:=Fname;
  66. Self.Table1.TableType :=ttDbase;
  67. Self.Table1.FieldDefs.Clear;//这句很重要
  68. Self.Table1.IndexDefs.Clear;//这句很重要
  69. BBList.DelimitedText:=llist.Strings[];
  70. Self.Table1.FieldDefs.Add(BBList[],ftInteger,,True);
  71. for i:= to BBList.Count- do
  72. begin
  73. Self.Table1.FieldDefs.Add(BBList[i],ftFloat,,True);
  74. end;
  75. Self.Table1.CreateTable;
  76. Self.Table1.Active :=True;
  77. Self.ProgressBar1.Min:=;
  78. Self.ProgressBar1.Max :=llist.Count -;
  79. for i:= to llist.Count- do
  80. begin
  81. Self.Table1.Append;
  82. BBList.DelimitedText:=llist.Strings[i];
  83. Self.Table1.Fields[].AsInteger :=StrToInt(BBList[]);
  84. for j:= to BBList.Count- do
  85. begin
  86. if BBList[j]<>'' then
  87. begin
  88. Self.Table1.Fields[j].AsFloat:=StrToFloat(BBList[j]);
  89. end else
  90. begin
  91. Self.Table1.Fields[j].Value:=-;//处理数据为空的情况,这有别于数据为0的情况
  92. end;
  93. end;
  94. Self.Table1.Post;
  95. Self.ProgressBar1.Position :=i;
  96. end;
  97. Self.Table1.EnableControls;
  98. Self.ProgressBar1.Position :=;
  99. llist.Free;
  100. BBList.Free;
  101. end;
  102. end;
  103. end;
  104.  
  105. end.

在Delphi中如何动态创建dbf数据库(二)?的更多相关文章

  1. 在Delphi中如何动态创建dbf数据库(一)?

    table2.Close; table2.Active:=false; table2.Exclusive:=true; table2.TableName:='h:\gzkd\sds'; table2. ...

  2. C# 动态创建SQL数据库(二) 在.net core web项目中生成二维码 后台Post/Get 请求接口 方式 WebForm 页面ajax 请求后台页面 方法 实现输入框小数多 自动进位展示,编辑时实际值不变 快速掌握Gif动态图实现代码 C#处理和对接HTTP接口请求

    C# 动态创建SQL数据库(二) 使用Entity Framework  创建数据库与表 前面文章有说到使用SQL语句动态创建数据库与数据表,这次直接使用Entriy Framwork 的ORM对象关 ...

  3. (转载)在Delphi中利用MSDASC来配置数据库链接

    在Delphi中利用MSDASC来配置数据库链接 在运行期进行数据库的连接是一个问题,自己写一个窗体配置吧,数据库不一样,所用的参数也不一样,还有那讨厌的连接字符串,有时真不知该写什么好.那天无意中发 ...

  4. Delphi中DLL的创建和使用(转)

    Delphi中DLL的创建和使用     1.DLL简介:   2.调用DLL:   3.创建DLL:   4.两个技巧:   5.初始化:   6.例外处理.            1.DLL简介  ...

  5. 有谁知道Delphi中"窗口"的创建过程?

      求助:有谁知道Delphi中窗口的创建过程,此“窗口”不仅仅指 TForm 类型, 还包括一般的窗口控件,如TButton,TEdit等等,希望有能够十分详细的运作 过程,比如说CreatPara ...

  6. DELPHI中使用UNIDAC连接ORACLE数据库

    DELPHI中使用UNIDAC连接ORACLE数据库   最近在DELPHI中使用到UNIDAC连接到oracle数据库,这样可以不要安装oracle客户端,比较方便使用:所以简单学习了一下,主要是用 ...

  7. Delphi中的动态包,有详细建立包的步骤(答案很简单:因为包的功能强大)

    为什么要使用包? 答案很简单:因为包的功能强大.设计期包(design-time package)简化了自定义组件的发布和安装:而运行期包(run-time package)则更是给传统的程序设计注入 ...

  8. Delphi中DLL的创建和使用

    参考:http://blog.csdn.net/ninetowns2008/article/details/6311663 结合这篇博客:http://www.cnblogs.com/xumenger ...

  9. Delphi中的窗体创建与销毁

    Delphi中的窗体,有模式窗体与非模式窗体两种.两种窗体的调用方式不同,模式窗体使用ShowModal显示,非模式窗体使用Show显示.当显示模式窗体的时候你是不能操作本程序的其他窗体的,你不能把焦 ...

随机推荐

  1. loj 1154(最大流+枚举汇点)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26868 思路:拆点,容量为最多能跳的步数,然后设立一个超级源点,源 ...

  2. 什么是超级立方体,HyperCube

    我试试用我的方式说说如何构造n维空间吧. n维空间在n大于3后,说要画出来,有点难以想象.但从数学的角度看,高维空间这个概念还算比较普通.容易理解的. 与其解释,不如快快开始.我选择用图(Graph) ...

  3. 对于java中的变量问题

    基本类型的变量如果是临时变量,只要定义了,就会分配内存空间,不管是否被赋值:如果是作为对象的属性出现,只要该对象不实例化,就不会分配内存空间.一个完整的Java程序运行过程会涉及以下内存区域:1.寄存 ...

  4. linux中的staff和wheel

    linux中的staff和wheel wheel组就类似于一个管理员的组通常在UNIX下,即使我们是系统的管理员,也不推荐用root用户登录来进行系统管理.一般情况下 用普通用户登录,在需要root权 ...

  5. 使用Javascript无限添加QQ好友原理解析

    做QQ营销的朋友都知道,QQ加好友是有诸多限制的,IP限制,次数限制,二维码限制,人数限制,使用软件自动加好友会遇到各种各样的问题,很多软件通过模拟人工添加QQ号码,在添加几个之后就会遇到腾讯规则限制 ...

  6. POJ1466 Girls and Boys(二分图最大点独立集)

    最大点独立集就是无向图中最多的两两不相邻的点集. 二分图最大点独立集=顶点数-二分图最大边独立集(二分图最大匹配) 这一题男女分别作YX部,如果x和y有浪漫关系则连边,如此构造二分图,答案显然就是最大 ...

  7. 详解Adorner Layer(zz)

    首先,千万不要觉得Adorner离你很远,因为最简单的WPF界面也会用到Adorner.在WPF中,下面的几个很常见的功能,都是用Adorner实现的.     1. 光标(caret)     2. ...

  8. Travelling

    Travelling Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  9. Nightmare

    Nightmare Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total S ...

  10. 常用元素默认margin和padding值问题探讨

    关于默认元素在不同浏览器中的margin值是多少的问题,今天做了一个探讨 复制代码 代码如下: // body的margin值 firefox 20.0 ----------------------- ...