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数据库(二)?的更多相关文章

  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. 对于Spark1.3进行编译

    编译其实是按照官方文档进行的,比较简单,文档地址是:http://spark.apache.org/docs/latest/building-spark.html 编译命令最终是: 先要执行: exp ...

  2. Web安全测试之XSS

    Web安全测试之XSS XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web程序中最常见的漏洞.指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此 ...

  3. vi-11

    vi编辑器linux命令大全 作者:xiaoru  出处:本站整理  发布时间:2013-04-29 13:20:23 -     vi就是linux命令行下的最著名的编辑器之一,Vim常被称作“程序 ...

  4. poj 1611 The Suspects 并查集

    The Suspects Time Limit: 1000MS   Memory Limit: 20000K Total Submissions: 30522   Accepted: 14836 De ...

  5. Java的锁优化

    高效并发是从JDK 1.5到JDK 1.6的一个重要改进,HotSpot虚拟机开发团队在这个版本上花费了大量的精力去实现各种锁优化技术,如适应性自旋(Adaptive Spinning).锁消除(Lo ...

  6. Unity3D安装多版本

    今天我也遇到这个版本更换问题.  老外也遇到了的!哈哈. 错误提示是: Fatal error!type = =kMetaAssetType & pathName.find("lib ...

  7. HDU 1026 (BFS搜索+优先队列+记录方案)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1026 题目大意:最短时间内出迷宫.迷宫里要杀怪,每个怪有一定HP,也就是说要耗一定时.输出方案. 解 ...

  8. SecureCrt脚本(三)二级对象之Screen详解

    Crt自动化 测试 SecureCrt脚本 JS脚本   1.引言 2.Screen属性和方法 2.1.属性 2.1.1.CurrentColumn 2.1.2.CurrentRow 2.1.3.Co ...

  9. Android使用AsyncTask实现可以断点续传的DownloadManager功能

    http://www.it165.net/pro/html/201211/4210.html 最近做项目卡壳了,要做个Android的应用市场,其他方面都还好说,唯独这个下载管理算是给我难住了,究其原 ...

  10. org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /user/hive/warehouse/page_view. Name node is in safe mode

    FAILED: Error in metadata: MetaException(message:Got exception: org.apache.hadoop.ipc.RemoteExceptio ...