在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显示.当显示模式窗体的时候你是不能操作本程序的其他窗体的,你不能把焦 ...
随机推荐
- IIS-如果外网访问不到 域名
如果访问不到 域名 , 可以 给域名的目录 增加“IIS_IUSERS”权限.
- Android ViewHolder的作用与用法
就是一个持有者的类,他里面一般没有方法,只有属性,作用就是一个临时的储存器,把你getView方法中每次返回的View存起来,可以下次再用.这样做的好处就是不必每次都到布局文件中去拿到你的View,提 ...
- HDU 4349 Xiao Ming's Hope lucas定理
Xiao Ming's Hope Time Limit:1000MS Memory Limit:32768KB Description Xiao Ming likes counting nu ...
- json学习系列(4)-JSONString对象的optXXX方法的使用
在JSONObject获取value有多种方法,如果使用 getXxx()类型的方法获取value,如getString("key").如果key不存在的话,这些方法无一例外的都会 ...
- Date类型和Long类型的相互转换
Date类型和Long类型的相互转换: import java.text.SimpleDateFormat; import java.util.Date; public class T { publi ...
- LMT 装机记录
老毛桃是一个存在很久的文物了,当年在大学的时候,学习委员还专门做了一个PPT来讲老毛桃,现在想想,有点后悔那是不去试一下. 但万幸的是,最近终于彻底理解了工作流程: 1)安装一个LMT的软件,从其官网 ...
- !cocos2d 重复添加action事件
当点击的时候,如果不是按照开始点击计算的,那么持续点击会导致不会变大. void Piece::setActived(bool active) { _actived = active; CCActio ...
- 字符串分割与存入List集合
List<string> namelist = new List<string>(); string[] namejh = null; string name= "张 ...
- 【C语言】11-指针
直接引用 1. 回想一下,之前我们是如何更改某个变量的值? 我们之前是通过变量名来直接引用变量,然后进行赋值: char a; a = 10; 2. 看上去是很简单,其实程序内部是怎么操作的呢? ...
- hdu Rescue
因为要求的是最少的时间,很明显的是一个利用优先队列的bfs的题目,题目很一般. #include"iostream" #include"algorithm" # ...