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