在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[].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[];
- Self.Table1.FieldDefs.Add(BBList[],ftInteger,,True);
- for i:= to BBList.Count- do
- begin
- Self.Table1.FieldDefs.Add(BBList[i],ftFloat,,True);
- end;
- Self.Table1.CreateTable;
- Self.Table1.Active :=True;
- Self.ProgressBar1.Min:=;
- Self.ProgressBar1.Max :=llist.Count -;
- for i:= to llist.Count- do
- begin
- Self.Table1.Append;
- BBList.DelimitedText:=llist.Strings[i];
- Self.Table1.Fields[].AsInteger :=StrToInt(BBList[]);
- for j:= to BBList.Count- do
- begin
- if BBList[j]<>'' then
- begin
- Self.Table1.Fields[j].AsFloat:=StrToFloat(BBList[j]);
- end else
- begin
- Self.Table1.Fields[j].Value:=-;//处理数据为空的情况,这有别于数据为0的情况
- end;
- end;
- Self.Table1.Post;
- Self.ProgressBar1.Position :=i;
- end;
- Self.Table1.EnableControls;
- Self.ProgressBar1.Position :=;
- llist.Free;
- BBList.Free;
- end;
- end;
- end;
- end.
在Delphi中如何动态创建dbf数据库(二)?的更多相关文章
- 在Delphi中如何动态创建dbf数据库(一)?
table2.Close; table2.Active:=false; table2.Exclusive:=true; table2.TableName:='h:\gzkd\sds'; table2. ...
- C# 动态创建SQL数据库(二) 在.net core web项目中生成二维码 后台Post/Get 请求接口 方式 WebForm 页面ajax 请求后台页面 方法 实现输入框小数多 自动进位展示,编辑时实际值不变 快速掌握Gif动态图实现代码 C#处理和对接HTTP接口请求
C# 动态创建SQL数据库(二) 使用Entity Framework 创建数据库与表 前面文章有说到使用SQL语句动态创建数据库与数据表,这次直接使用Entriy Framwork 的ORM对象关 ...
- (转载)在Delphi中利用MSDASC来配置数据库链接
在Delphi中利用MSDASC来配置数据库链接 在运行期进行数据库的连接是一个问题,自己写一个窗体配置吧,数据库不一样,所用的参数也不一样,还有那讨厌的连接字符串,有时真不知该写什么好.那天无意中发 ...
- Delphi中DLL的创建和使用(转)
Delphi中DLL的创建和使用 1.DLL简介: 2.调用DLL: 3.创建DLL: 4.两个技巧: 5.初始化: 6.例外处理. 1.DLL简介 ...
- 有谁知道Delphi中"窗口"的创建过程?
求助:有谁知道Delphi中窗口的创建过程,此“窗口”不仅仅指 TForm 类型, 还包括一般的窗口控件,如TButton,TEdit等等,希望有能够十分详细的运作 过程,比如说CreatPara ...
- DELPHI中使用UNIDAC连接ORACLE数据库
DELPHI中使用UNIDAC连接ORACLE数据库 最近在DELPHI中使用到UNIDAC连接到oracle数据库,这样可以不要安装oracle客户端,比较方便使用:所以简单学习了一下,主要是用 ...
- Delphi中的动态包,有详细建立包的步骤(答案很简单:因为包的功能强大)
为什么要使用包? 答案很简单:因为包的功能强大.设计期包(design-time package)简化了自定义组件的发布和安装:而运行期包(run-time package)则更是给传统的程序设计注入 ...
- Delphi中DLL的创建和使用
参考:http://blog.csdn.net/ninetowns2008/article/details/6311663 结合这篇博客:http://www.cnblogs.com/xumenger ...
- Delphi中的窗体创建与销毁
Delphi中的窗体,有模式窗体与非模式窗体两种.两种窗体的调用方式不同,模式窗体使用ShowModal显示,非模式窗体使用Show显示.当显示模式窗体的时候你是不能操作本程序的其他窗体的,你不能把焦 ...
随机推荐
- loj 1154(最大流+枚举汇点)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26868 思路:拆点,容量为最多能跳的步数,然后设立一个超级源点,源 ...
- 什么是超级立方体,HyperCube
我试试用我的方式说说如何构造n维空间吧. n维空间在n大于3后,说要画出来,有点难以想象.但从数学的角度看,高维空间这个概念还算比较普通.容易理解的. 与其解释,不如快快开始.我选择用图(Graph) ...
- 对于java中的变量问题
基本类型的变量如果是临时变量,只要定义了,就会分配内存空间,不管是否被赋值:如果是作为对象的属性出现,只要该对象不实例化,就不会分配内存空间.一个完整的Java程序运行过程会涉及以下内存区域:1.寄存 ...
- linux中的staff和wheel
linux中的staff和wheel wheel组就类似于一个管理员的组通常在UNIX下,即使我们是系统的管理员,也不推荐用root用户登录来进行系统管理.一般情况下 用普通用户登录,在需要root权 ...
- 使用Javascript无限添加QQ好友原理解析
做QQ营销的朋友都知道,QQ加好友是有诸多限制的,IP限制,次数限制,二维码限制,人数限制,使用软件自动加好友会遇到各种各样的问题,很多软件通过模拟人工添加QQ号码,在添加几个之后就会遇到腾讯规则限制 ...
- POJ1466 Girls and Boys(二分图最大点独立集)
最大点独立集就是无向图中最多的两两不相邻的点集. 二分图最大点独立集=顶点数-二分图最大边独立集(二分图最大匹配) 这一题男女分别作YX部,如果x和y有浪漫关系则连边,如此构造二分图,答案显然就是最大 ...
- 详解Adorner Layer(zz)
首先,千万不要觉得Adorner离你很远,因为最简单的WPF界面也会用到Adorner.在WPF中,下面的几个很常见的功能,都是用Adorner实现的. 1. 光标(caret) 2. ...
- Travelling
Travelling Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- Nightmare
Nightmare Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...
- 常用元素默认margin和padding值问题探讨
关于默认元素在不同浏览器中的margin值是多少的问题,今天做了一个探讨 复制代码 代码如下: // body的margin值 firefox 20.0 ----------------------- ...