DELPHI中如何建立和使用临时表

DELPHI中如何建立和使用临时表,第1张

{不知道你要的是不是这个 摘自 Delphi 2006 高效数据库程序设计--dbExpress 篇 李维}

内存数据表(Memory Table)

对于数据不在数据库中﹐但是在应用程序执行时却需要经常参考到的数据﹐可以使用内存数据表来解决。

[范例:创建内存数据表]

 procedure TForm1.CreateMemoryTable

 begin

  with dmMemoryTable.scdsMemory do

  begin

   with FieldDefs.AddFieldDef do

    begin

     DataType:=ftInteger

     Name:='TID'

    end

   with FieldDefs.AddFieldDef do

    begin

     DataType:=ftString

     Size:=20

     Name:='TSValue'

    end

   with FieldDefs.AddIndexDef do

    begin

     Fields:='TID'

     Name:='idxTID'

    end

   CreateDataSet

   IndexDefs.Update

   IndexName:='idxTID'

  end

 end

 

 procedure TForm1.FillTempData

 begin

  InsertData(1,'custorderno')

  InsertData(2,'fcty')

  InsertData(3,'poid')

 end

 

 procedure TForm1.InsertData(const iTD:Integer const sValue:String)

 begin

  with dmMemoryTable.scdsMemory do

   begin

    Insert

    FieldByName('TID').Value:=iTD

    FieldByName('TSValue').Value:=sValue

    post

   end

 end

 

内存数据表非常适合使用在少量﹐经常使用的数据应用中﹐但它不适合用来储存大量的临时数据﹐如超过了数百笔数据的情形就不适用了。

获取数据域和索引信息

在取得了数据表信息后 应使用TTable对象访问该数据表的具体信息 对应函数如下

以下是引用片段 procedure TDataSet GetFieldNames(List: TStrings)procedure TTable GetIndexNames(List: TStrings)

GetFieldNames用来取得数据表中的各个域名 GetIndexNames用来取得数据表中的各个索引名

另外 可以进一步使用TDataset和TTable中的两个属性TDataSet FieldDefs Items[] 和 TTable IndexDefs Items[]来访问具体的数据域信息和索引信息 它们分别是由TFieldDef和TIndexDef组成的数组

TFieldDef描述如下

TIndexDef描述如下

TFieldType定义如下

以下是引用片段 TFieldType = (ftUnknown  ftString  ftSmallint  ftInteger  ftWord  ftBoolean ftFloat ftCurrency  ftBCD  ftDate  ftTime  ftDateTime  ftBytes  ftVarBytes ftAutoInc ftBlob  ftMemo  ftGraphic  ftFmtMemo  ftParadoxOle  ftDBaseOle ftTypedBinary ftCursor)

TIndexOptions定义如下

以下是引用片段 TIndexOptions = set of (ixPrimary  ixUnique  ixDescending  ixExpression  ixCaseInsensitive)

它们的具体意义可以参见Delphi帮助

应用实例

使用下面的程序片段即可获得指定数据库中指定表的域定义和索引定义 ListBox ListBox 和 ListBox 为Form 中定义的三个列表框 用于显示结果

以下是引用片段 Var  Alias TableName:String Table :TTable Begin Alias:= fjs   TableName:= d*     //初始化 Session GetTableNames(Alias {别名}                       TableName {过滤器}                       True {是否显示文件扩展名(对DBF) }                       False {是否显示系统表}                       ListBox Items) If ListBox Items Count= then   Begin     MessageDlg( 数据库 +Alias+ 中没有数据表 +TableName mtError [mbOK] )   Exit End Table :=TTable Create(nil) Table DatabaseName :=Alias Table TableName := ListBox Items Strings[ ] {取得表中字段名及索引名} Table Open if Table Active then begin Table GetFieldNames(ListBox Items)    Table GetIndexNames(ListBox Items) end //… 此时结果在ListBox 和ListBox 中 // Table Destroy end

小结

通过上面讨论和实例证明 利用Delphi语言开发数据库软件管理系统 关键技术都已得到解决

参考文献

[ ] (李维 编著) 《DELPHI 高效数据库程序设计》机械工业出版社

[ ] 郭旭等 著 《Delphi 应用开发指南》清华大学出版社

[ ] 大富翁 // delphibbs /

收稿日期 月 日 修改日期 月 日

作者简介 于海生 男 年生于辽宁省丹东市 黑龙江大庆人 年毕业于辽宁化工大学计算机科学与技术专业 助理工程师 研究方向为钻井计算机软件开发与应用

lishixinzhi/Article/program/Delphi/201311/8543


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9644036.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存