在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显示.当显示模式窗体的时候你是不能操作本程序的其他窗体的,你不能把焦 ...
随机推荐
- Effective C++笔记:资源管理
资源:动态分配的内存.文件描述器.互斥锁.图形界面中的字型与笔刷.数据库连接以及网络sockets等,无论哪一种资源,重要的是,当你不再使用它时,必须将它还给系统. 条款13:以对象管理资源 当我们向 ...
- ajax请求成功后打开新窗口地址
转自:http://www.cnblogs.com/linjiqin/p/3148205.html jQuery.ajax({ "type":"post&qu ...
- loadrunner中定义数组
loadrunner 中数组的定义 loadrunner 中数组的定义: lr_save_string("www.google.com","website_1" ...
- js:数据结构笔记3--栈
栈是一种特殊的列表,数据结构为LIFO: 定义: function Stack() { this.dataStore = []; this.top = 0; this.push = push; thi ...
- Regionals 2012 :: Asia - Dhaka
水 B Wedding of Sultan 题意:求每个点的度数 分析:可以在,每个字母的的两个端点里求出的的出度,那么除了起点外其他点还有一个入度,再+1 /******************** ...
- LightOJ1025 The Specials Menu(区间DP)
给一个字符串,问有几种删字符的方式使删后的非空字符串是个回文串. 当然区间DP:dp[i][j]表示子串stri...strj的方案数 感觉不好转移,可能重复算了.我手算了"AAA" ...
- BZOJ3578 : GTY的人类基因组计划2
关于如何判断一个集合是否出现过: 给每个元素随机一个hash权值,然后xor起来即可 插入删除都只需xor 线段树维护区间有效人数和,以及打标记表示这个区间的集合要全部标记为出现过,并把区间内sum值 ...
- NOI2012 : 迷失游乐园
终于补完NOI2012了好开心~ 题目大意:给定一棵树或者环套外向树,求出从中随机选一条简单路径的期望长度,环上点数不超过20. 设 d[x]表示x的度数,ch[x]表示x孩子个数 up[x]表示x向 ...
- Windows环境下Redis
Redis 是一个高性能的key-value数据库, 使用内存作为主存储,数据访问速度非常快,当然它也提供了两种机制支持数据持久化存储.比较遗憾的是,Redis项目不直接支持Windows,Windo ...
- ASP.NET RepeatLayout 属性
定义和用法 RepeatLayout 属性用于设置或获取如何显示在 CheckBoxList 中的项目. 语法 <asp:CheckBoxList RepeatLayout="mode ...