TARS数据存取
  # Smart之TARS数据存取
# 1. 说明
范例通过连接TARS实现对数据库的增删改查操作。Smart上可以实现对数据库的简单查询,通过该方法可以实现采集数据的记录。
通过范例学习,可以掌握Smart通过连接TARS实现对数据库的增删改查操作的方式。
  在使用范例之前,检查Smart数据库是否连接,其中包含一个Table_Test表,创建语句示例如下:
--创建数据表 Table_Test
Create Table Table_Test(
FCode nvarchar(50) not null,
FName nvarchar(100)
)
GO
--创建表主索引 PK_Table_Test
CREATE UNIQUE NONCLUSTERED INDEX [PK_Table_Test] ON [dbo].[Table_Test] 
([FCode] ASC)
WITH (PAD_INDEX  = OFF, 
STATISTICS_NORECOMPUTE  = OFF, 
SORT_IN_TEMPDB = OFF, 
IGNORE_DUP_KEY = OFF, 
DROP_EXISTING = OFF, 
ONLINE = OFF, 
ALLOW_ROW_LOCKS  = ON, 
ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO
--插入测试用的数据
INSERT INTO Table_Test(FCode,FName)
VALUES('0101','小明')
 
INSERT INTO Table_Test(FCode,FName)
VALUES('0102','小王')
 2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  通过Smart智慧控制平台菜单【工具】->【帐套设置】,设置好要连接的TARS中间件之数据库,在使用过程中须保证TARS处于运行状态并开放服务,TARS帐套配置请参阅TARS使用手册。
# 2. 设计明细
  开启Smart智慧控制平台,分别加入下插图之控件。或者通过点击菜单栏[文件]-[打开项目]选择范例项目文件来打开该范例。

  ①:TRFConnection组件,控件名称为RFConnection1。
  ②:TLabel组件,控件名称为Label2。
  ③:TRFDataSet组件,控件名称为RFDataSet1。
  ④:TEdit组件,控件名称为EditCode。
  ⑤:TLabel组件,控件名称为Label1。
  ⑥:TBitBtn组件,控件名称为BitBtnNew。
  ⑦:TBitBtn组件,控件名称为BitBtnDelete。
  ⑧:TDataSource组件,控件名称为DataSource1。
  ⑨:TbitBtn组件,控件名称为BitBtnSave。
  ⑩:TLabel组件,控件名称为Label3。
  (11):TLabel组件,控件名称为Label4。
  (12):TEdit组件,控件名称为EditName。
  (13):TEdit组件,控件名称为EditQuery。
  (14):TPanel组件,控件名称为Panel1。
  (15):TDBGrid组件,控件名称为DBGrid1。
  (16):TBitBtn组件,控件名称为BitBtn1。
该范例中先使用RFConnection来辅助进行DBGrid表头的生成,在之后的程序运行过程中使用帐套设置中的连接方式进行连接。
Main窗体属性设置
BorderStyle:设置边界样式=bsDialog。Caption:设置窗体显示的标题=TARS数据存取。ClientHeight:设置客户区窗体的高度=438。ClientWidth:设置窗体客户区的宽度=465。
①RFConnection1属性设置
ConnectionDefName:设置连接设置名称=test。ForceEncryption:启用加密功能,与TARS中的加密数据功能对应。LoginOption:设置登录选项,username和password需使用TARS中的用户名及密码。SecureKey:设置安全码,与TARS中的安全码对应。ServerAddr:TARS服务器的IP地址。ServerPort:TARS服务器的端口号。Active:是否激活连接,设置为True。
②RFDataSet1属性设置
Connection:设定连接的配置,此处先设置为RFConnection1,用来进行连接调试,在脚本中可将其定义为帐套设置。
③Label2属性设置
Caption:设置字幕内容=编号:。Font:设置字体。点击该属性右侧的[...]或者双击该属性打开字体设置界面。

④EditCode属性设置
Name:设置控件名称=EditCode。Text:设置文字内容=0113。Width:设置控件宽度=209。Font:设置字体。点击该属性右侧的[...]或者双击该属性打开字体设置界面。

⑤Label1属性设置
Caption:设置字幕内容=TARS数据存取。Font:设置字体。点击该属性右侧的[...]或者双击该属性打开字体设置界面。

⑥BitBtnNew属性设置
Height:设置按钮控件高度=33。Width:设置按钮控件宽度=44。Name:设置控件名称=BitBtnNew。Glyph:设置显示的位图图片。点击属性右侧的[...]或者双击该属性打开文件上传界面,点击[Load...]从文件浏览器中选择对应的图片文件上传,返回该界面下,待显示出图片后点击[OK]加载图片。
⑦BitBtnDelete属性设置
Height:设置按钮控件高度=33。Width:设置按钮控件宽度=44。Name:设置控件名称=BitBtnDelete。Glyph:设置显示的位图图片。点击属性右侧的[...]或者双击该属性打开文件上传界面,点击[Load...]从文件浏览器中选择对应的图片文件上传,返回该界面下,待显示出图片后点击[OK]加载图片。
⑧DataSource1属性设置
DataSet:设置数据集名称=RFDataSet1。
⑨BitBtnSave属性设置
Height:设置按钮控件高度=33。Width:设置按钮控件宽度=44。Name:设置控件名称=BitBtnDelete。Glyph:设置显示的位图图片。点击属性右侧的[...]或者双击该属性打开文件上传界面,点击[Load...]从文件浏览器中选择对应的图片文件上传,返回该界面下,待显示出图片后点击[OK]加载图片。
⑩Label3属性设置
Caption:设置字幕内容=名称:。Font:设置字体。点击该属性右侧的[...]或者双击该属性打开字体设置界面。

(11)Label4属性设置
Caption:设置字幕内容=查找内容:。Font:设置字体。点击该属性右侧的[...]或者双击该属性打开字体设置界面。

(12)EditName属性设置
Name:设置控件名称=EditName。Text:设置文字内容=小张。Width:设置控件宽度=209。Font:设置字体。点击该属性右侧的[...]或者双击该属性打开字体设置界面。

(13)EditQuery属性设置
Name:设置控件名称=EditQuery。TextHint:设置输入框为空时显示的文字内容=请输入查找的名称。Width:设置控件宽度=272。Font:设置字体。点击该属性右侧的[...]或者双击该属性打开字体设置界面。

(14)Panel1属性设置
Color:设置面板的颜色=clBlue。Height:设置控件高度=5。Width:设置控件宽度=440。
(15)DBGrid1属性设置
DataSource:设定表格显示的数据源,此处设置为DataSource1。Columns:设定表格显示的表格列,单击属性值格子右侧[...],打开编辑器进行字段编辑。

(16)BitBtn1属性设置
Height:设置按钮控件高度=31。Width:设置按钮控件宽度=59。Name:设置控件名称=BitBtn1。Glyph:设置显示的位图图片。点击属性右侧的[...]或者双击该属性打开文件上传界面,点击[Load...]从文件浏览器中选择对应的图片文件上传,返回该界面下,待显示出图片后点击[OK]加载图片。
# 3. 程序设计
# 3.1. 程序初始设置
程序启动时,打开数据集。
constructor TMyHandler.Create(AOwner: TComponent);
begin
  FThis :=TBaseForm(AOwner);
  FThis.RFDataSet1.Connection := dm.DBConnection;
  //打开RFDataSet1数据
  FThis.RFDataSet1.SQL.Text := 'Select FCode,FName From Table_Test';
  FThis.RFDataSet1.Open;
end;
 2
3
4
5
6
7
8
# 3.2. 事件设置
- ⑥BitBtnNew-OnClick事件
 
点击以新增记录。
procedure TMyHandler.BitBtnNewClick;
//新增记录
begin
   if not FThis.RFDataSet1.Active then exit;
   FThis.RFDataSet1.Append; //新增一条记录
end;
 2
3
4
5
6
- ⑦BitBtnDelete-OnClick事件
 
点击以删除选择的记录。
procedure TMyHandler.BitBtnDeleteClick;
//删除选中的记录
begin
   //判断数据集是否为空
   if FThis.RFDataSet1.IsEmpty then 
    exit;
   //删除当前行 
   FThis.RFDataSet1.Delete;
end;
 2
3
4
5
6
7
8
9
- ⑨BitBtnSave-OnClick事件
 
点击以保存数据内容。
procedure TMyHandler.BitBtnSaveClick;
//保存数据内容
begin
   //当前记录赋值
   FThis.RFDataSet1.Edit; 
   FThis.RFDataSet1.FieldByName('FCode').AsString := FThis.EditCode.Text;
   FThis.RFDataSet1.FieldByName('FName').AsString := FThis.EditName.Text;
   FThis.RFDataSet1.Post;
   //提交数据
   if FThis.RFDataSet1.ApplyUpdates(-1) = 0 then
   begin
      Showmessage('数据保存成功!');
   end;
end;
 2
3
4
5
6
7
8
9
10
11
12
13
14
- (16)BitBtn1-OnClick事件
 
点击以进行数据查询。
procedure TMyHandler.BitBtn1Click;
//查找
var 
  vSQL: String;
begin
  //数据查询
  vSQL := 'Select FCode,FName From Table_Test ' ;
  if FThis.EditQuery.Text <> '' then 
  vSQL := vSQL + 'where 1=1 and FName = ' + QuotedStr(FThis.EditQuery.Text);
  FThis.RFDataSet1.SQL.Text := vSQL;
  FThis.RFDataSet1.Open;
end;
 2
3
4
5
6
7
8
9
10
11
12
- ②RFDataSet1-AfterScroll事件
 
数据集的指针移动时进行赋值操作。
procedure TMyHandler.RFDataSet1AfterScroll;
//数据集指针移动时赋值
begin
   FThis.EditCode.Text := FThis.RFDataSet1.FieldByName('FCode').AsString;
   FThis.EditName.Text := FThis.RFDataSet1.FieldByName('FName').AsString;
end;
 2
3
4
5
6
- ④EditCode-OnExit事件
 
当代号编辑框结束编辑,点击其他控件时更新显示的内容至表格中。
procedure TMyHandler.EditCodeExit;
begin
   FThis.RFDataSet1.Edit;
   FThis.RFDataSet1.FieldByName('FCode').AsString := FThis.EditCode.Text;
   FThis.RFDataSet1.Post;
end;
 2
3
4
5
6
- (12)EditName-OnExit事件
 
当名称编辑框结束编辑,点击其他控件时更新显示的内容至表格中。
procedure TMyHandler.EditNameExit;
begin
   FThis.RFDataSet1.Edit;
   FThis.RFDataSet1.FieldByName('FName').AsString := FThis.EditName.Text;
   FThis.RFDataSet1.Post;
end;
 2
3
4
5
6
# 4. 运行结果
通过工具栏保存,将程序保存为 sdb 项目文件。
使用鼠标点击工具栏运行(Run),测试运行结果。程序启动时会打开对应的表格。点击新增按钮,新增一行记录并根据编号和名称的编辑框赋值。点击删除按钮删除选择行的记录。点击保存按钮,将编辑框中的数值提交至当前选择的数据记录位置并提交数据。在查找内容的输入框中输入内容,点击查询按钮,下方的表格显示条件查询的结果。
