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),測試運行結果。程式啟動時會打開對應的表格。點選新增按鈕,新增一行記錄並根據編號和名稱的編輯框賦值。點選刪除按鈕刪除選擇行的記錄。點選儲存按鈕,將編輯框中的數值提交至當前選擇的數據記錄位置並提交數據。在查詢內容的輸入框中輸入內容,點選查詢按鈕,下方的表格顯示條件查詢的結果。
