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),测试运行结果。程序启动时会打开对应的表格。点击新增按钮,新增一行记录并根据编号和名称的编辑框赋值。点击删除按钮删除选择行的记录。点击保存按钮,将编辑框中的数值提交至当前选择的数据记录位置并提交数据。在查找内容的输入框中输入内容,点击查询按钮,下方的表格显示条件查询的结果。
