數據控制控制元件
# PinToo 控制元件使用(數據控制元件)
該元件中包含了用於與資料庫建立連線的常用控制元件與配套。
# 1. TfxRFConnection元件
- 引用單元 TARSCompClient
TfxRFConnection是一個與TARS中介軟體進行呼叫的連線元件。
可以通過雙擊TfxRFConnection元件進行連線設定。
# 1.1. 屬性(Properties)
- TfxRFConnection元件主要屬性
屬性 | 功能說明 |
---|---|
Active | 指定是否啟用連線 |
ClientAddr | 指客戶端地址 |
ServerDateTime | 獲取伺服器時間 |
AccessToken | 獲取訪問令牌 |
AccessTokenExpireTime | 指示訪問令牌到期時間 |
DeviceID | 設備唯一ID |
UploadFileMaxSize | 指定檔案上傳大小 |
IsConnected | 判斷是否處於連線狀態 |
ServerAddr | 指定TARS中介軟體地址 |
ServerPort | 指定TARS中介軟體埠 |
SecureKey | 指定TARS安全金鑰 |
ForceEncryption | 指定是否啟用強制加密數據 |
Compression | 數據壓縮級別,預設為:cFast(快速壓縮) |
ConnectionTimeout | 指定連線超時,單位為毫秒 |
ResponseTimeout | 指定響應超時,單位為毫秒 |
Blocking | 指定是否阻塞模式 |
LoginOptions | 使用者驗證設定 |
ConnectionCheckingMode | 指定連線檢檢測模式 |
AutoConnect | 指定是否自動連線服務端 |
# 1.1.1. ClientAddr屬性
/// <summary>目前客戶端的IP地址</summary>
property ClientAddr: string read GetClientAddr;
2
# 1.1.2. ClientAddr屬性
/// <summary>伺服器時間</summary>
property ServerDateTime: TDateTime read GetServerDateTime;
2
# 1.1.3. AccessToken屬性
/// <summary>訪問令牌</summary>
property AccessToken: string read FAccessToken;
2
# 1.1.4. AccessTokenExpireTime屬性
/// <summary>訪問令牌到期時間</summary>
property AccessTokenExpireTime: TDateTime read FAccessTokenExpireTime;
2
# 1.1.5. UploadFileMaxSize屬性
/// <summary>上傳檔案大小</summary>
property UploadFileMaxSize: Int64 read GetUploadFileMaxSize;
2
# 1.1.6. DeviceID屬性
/// <summary>設備唯一ID</summary>
property DeviceID: string read GetDeviceID;
2
# 1.1.7. IsConnected屬性
/// <summary>判斷是否處於連線狀態</summary>
property IsConnected: Boolean read GetIsConnected;
2
# 1.1.8. ServerAddr屬性
/// <summary>伺服器地址</summary>
property ServerAddr: string read GetServerAddr write SetServerAddr;
2
# 1.1.9. ServerPort屬性
/// <summary> 伺服器埠</summary>
property ServerPort: string read GetServerPort write SetServerPort;
2
# 1.1.10. SecureKey屬性
/// <summary>安全金鑰,客戶端和服務端需要配對,同時需要設定 ForceEncryption = True。 </summary>
property SecureKey: string read GetSecureKey write SetSecureKey;
2
# 1.1.11. ForceEncryption屬性
/// <summary> 強制加密數據</summary>
property ForceEncryption: Boolean read GetForceEncryption write SetForceEncryption;
2
# 1.1.12. Compression屬性
/// <summary>數據壓縮級別,預設為:cFast(快速壓縮)。</summary>
property Compression: TRtcCompressLevel read GetCompression write SetCompression;
2
Compression數據壓縮級別分為:cNote(不壓縮)、cFast(快速壓縮)、cDefault(預設壓縮)、cMax(最大壓縮)。
# 1.1.13. ConnectionTimeout屬性
/// <summary>連線超時,單位為毫秒</summary>
property ConnectionTimeout: Integer read GetConnectionTimeout write SetConnectionTimeout;
2
# 1.1.14. ResponseTimeout屬性
/// <summary>響應超時,單位為毫秒</summary>
property ResponseTimeout: Integer read GetResponseTimeout write SetResponseTimeout;
2
# 1.1.15. Blocking屬性
/// <summary>阻塞模式</summary>
property Blocking: Boolean read FBlocking write FBlocking default True;
2
# 1.1.16. LoginOptions屬性
/// <summary>使用者驗證設定</summary>
property LoginOptions: TLoginOptions read FLoginOptions write FLoginOptions;
2
LoginOptions屬性包含三個子屬性:MD5Salt(MD5鹽值)、Password(使用者密碼)、UserName(使用者名稱稱)。
這個需要與TARS中介軟體配合使用,當TARS中介軟體勾選了需要使用者驗證時可用。
# 1.1.17. ConnectionCheckingMode屬性
/// <summary>連線檢檢測模式</summary>
property ConnectionCheckingMode: TConnectionCheckingMode read FConnectionCheckingMode write FConnectionCheckingMode;
2
ConnectionCheckingMode屬性包含:cmAlways(總是)、cmTiming(定期)、cmNone(從不)。
# 1.1.18. ConnectionDefName屬性
/// <summary> 連線名稱</summary>
property ConnectionDefName: string read GetConnectionDefName write SetConnectionDefName;
2
# 1.1.19. AutoConnect屬性
/// <summary>自動連線服務端</summary>
property AutoConnect: Boolean read GetAutoConnect write SetAutoConnect default True;
2
# 1.2. 方法(Methods)
- TfxRFConnection元件主要方法
方法 | 功能說明 |
---|---|
Connect | 連線服務端 |
Disconnect | 斷開連線 |
GetConnectionDefNames | 獲取資料庫連線名稱列表 |
ApplyUpdates | 批次事務更新多個TfxRFDataSet數據集 |
Login | 登錄驗證 |
Logout | 註銷登錄 |
AddConnectionDef | 增加資料庫連線配置 |
GetClients | 客戶端型別,包含普通客戶端,Websocket 客戶端 |
SendMessage | 向客戶端發送訊息 |
GenerateId | 產生ID |
# 1.2.1. Connect方法
/// <summary> 連線服務端 </summary>
function Connect(const ASilent: Boolean = False): Boolean;
2
# 1.2.2. Disconnect方法
/// <summary> 斷開連線 </summary>
procedure Disconnect;
2
# 1.2.3. GetConnectionDefNames方法
/// <summary> 獲取資料庫連線名稱列表 </summary>
procedure GetConnectionDefNames(const ADefNames: TStrings = nil);
2
# 1.2.4. GetTableNames方法
/// <summary>獲取資料庫表名列表</summary>
procedure GetTableNames(const ACatalogName, ASchemaName, APattern: string; AList: TStrings);
2
# 1.2.5. ApplyUpdates方法
/// <summary> 批次事務更新多個TRFDataSet </summary>
procedure ApplyUpdates(const ADataSets: array of TRFDataSet; const ASQL: string = '');
2
# 1.2.6. Login方法
/// <summary> 登錄驗證 </summary>
function Login: Boolean;
2
# 1.2.7. Logout方法
/// <summary>註銷登錄</summary>
procedure Logout;
2
# 1.2.8. AddConnectionDef方法
/// <summary>增加資料庫連線配置</summary>
function AddConnectionDef(const AName, AConnectionString: string): Boolean;
2
# 1.2.9. GetClients方法
/// <param name="AClientTypes">客戶端型別,包含普通客戶端,Websocket 客戶端</param>
function GetClients(const AClientTypes: TClientTypes = [ctNormalClient, ctWebSocketClient]): TArray<TClient>;
2
# 1.2.10. SendMessage方法
function SendMessage(AClient: TClient; const AMessage: string): Boolean;
# 1.2.11. GenerateId方法
function GenerateId: Int64;
# 2. TfxRFDataSet元件
- 引用單元 TARSCompClient
TfxRFDataSet 是一個數據集元件。它可與 TfxRFConnection元件配合使用。
該元件用於從資料庫中獲取數據形成數據集資訊。數據集元件是數據感知組中元件的數據來源,也是數據圖表等的數據來源。
- TfxRFDataSet元件主要屬性
屬性 | 功能說明 |
---|---|
Connection | 指定一個TfxRFConnection對像 |
ConnectionDefName | 指定一個連線名稱 |
FetchOptions | 表示用於控制數據提取的選項集 |
SQL | 指定數據集SQL語句 |
UpdateOptions | 更新選項 |
PagingOptions | 分頁選項 |
Conditions | SQL條件 |
PageCount | 表示分頁的頁數 |
RecordCount | 記錄數 |
# 2.1. 屬性(Properties)
# 2.1.1. Connection屬性
指定數據集連線的來源。連線的來源有兩種,一種來自TfxRFConnection元件,另一種來自於PinToo的TARS連線設定。
//連線來源可以來自同一窗體中的TfxRFConnection元件
fxRFDataSet1.Connection := FfxRFConnection1;
//連線來源也可以來自PinToo的帳套設定
fxRFDataSet1.Connection := fxDM.DBConn;
2
3
4
# 2.1.2. ConnectionDefName屬性
指定預設TARS連線帳套名稱,TfxRFConnection元件通過指定帳套與TARS進行數據互動。
//指定帳套名稱
fxRFDataSet1.ConnectionDefName := 'FastERP';
2
# 2.1.3. FetchOptions屬性
用於控制數據和後設資料提取的一組選項。
所述TFetchOptions類表示屬性集控制FireDAC元件以及如何的物理學層命令介面獲取數據和後設資料:
- 如何獲取(CursorKind,Mode,RowsetSize)。例如,可以一次獲取所有結果集記錄,也可以按需獲取記錄。
- 如何保留資源(Unidirectional,AutoClose,Cache,AutoFetchAll)。
- 如何獲取和快取BLOB欄位,巢狀記錄集和後設資料(Items,Cache)。
- 如何處理主從數據集關係(DetailDelay,DetailOptimize,DetailCascade)。
- 行集分頁(RecsMax,RecsSkip)。
- TFDTable操作模式(CursorKind,LiveWindowParanoic,LiveWindowFastFirst)。
- 如何對數據集中的記錄進行計數(RecordCountMode)。
# 2.1.4. SQL屬性
該屬性是構造數據集使用的SQL語句。
示例
fxRFDataSet1.SQL.Text := 'SELECT * FROM Table_Test';
# 2.1.5. UpdateOptions屬性
指數據集的更新選項,如指定更新表名、主鍵欄位、更新方式等。
屬性說明
- KeyFields 數據表主鍵欄位名。
- UpdateMode 數據數提交模式,分別有三種:upWhereAll、upWhereChanged、upWhereKeyOnly。
- UpdateTableName 提交數據集用於更新的數據表名。
# 2.1.6. PagingOptions屬性
指定數據集分頁參數。
屬性說明
- PageIndex 頁索引,從0到N。0表示第一頁。
- PageSize 每頁顯示記錄數。
示例
//每頁顯示500條記錄
fxRFDataSet1.PagingOptions.PageSize := 500;
2
# 2.1.7. Conditions屬性
指定SQL語句Where條件。
示例
fxRFDataSet1.Conditions.Disable;//必需先禁用
fxRFDataSet1.Conditions.Add('FilterSQL', 'FInterID=1', true);
fxRFDataSet1.Conditions.Enable;
2
3
# 2.1.8. PageCount屬性
表示分頁的頁數。
示例
var
PageCount:integer;
begin
PageCount := fxRFDataSet1.PageCount;
end;
2
3
4
5
# 2.1.9. RecordCount屬性
該屬性用於顯示目前數據集中包含的記錄的數目。
示例
var
RecordCount :integer;
begin
RecordCount := fxRFDataSet1.RecordCount;
if RecordCount = 0 then
begin
Showmessage('數據集為空!')
end;
end;
2
3
4
5
6
7
8
9
# 2.2. 事件(Events)
- TfxRFDataSet元件主要事件
事件 | 何時觸發 |
---|---|
AfterClose | 在應用程式關閉數據集之後發生 |
AfterDelete | 在應用程式刪除記錄后發生 |
AfterEdit | 在應用程式開始編輯記錄后發生 |
AfterInsert | 在應用程式插入新記錄后發生 |
AfterOpen | 在應用程式完成打開數據集之後且發生任何數據訪問之前發生 |
AfterPost | 在應用程式將活動記錄寫入資料庫或更改日誌並返回瀏覽狀態之後發生 |
AfterScroll | 在應用程式從一條記錄滾動到另一條記錄后發生 |
BeforeClose | 在數據集關閉之前立即發生 |
BeforeDelete | 在應用程式嘗試刪除活動記錄之前發生 |
BeforeEdit | 在應用程式進入活動記錄的編輯模式之前發生 |
BeforeInsert | 在應用程式進入插入模式之前發生 |
BeforeOpen | 在應用程式執行打開數據集的請求之前發生 |
BeforePost | 在應用程式將活動記錄的更改發佈到資料庫或更改日誌之前發生。 |
BeforeScroll | 在應用程式從一條記錄滾動到另一條記錄之前發生 |
OnNewRecord | 當應用程式插入或附加新的數據集記錄時發生 |
# 2.2.1. AfterClose事件
在應用程式完成取消對活動記錄的修改的請求之後發生。
編寫AfterCancel事件處理程式,以在應用程式取消對活動記錄的更改后採取特定的措施。在更新目前位置后,由Cancel方法呼叫AfterCancel,並在必要時釋放對活動記錄的鎖定,並將數據集狀態設定為dsBrowse。如果應用程式在Cancel事件之後將控制權返回給使用者之前需要其他處理,請在AfterCancel事件中對其進行編碼。
# 2.2.2. AfterDelete事件
在應用程式刪除記錄后發生。
編寫AfterDelete事件處理程式,以在應用程式刪除數據集中的活動記錄后立即採取特定措施。在刪除記錄,將數據集狀態設定為dsBrowse並重新定位目前記錄后,Delete會呼叫AfterDelete。
# 2.2.3. AfterEdit事件
在應用程式開始編輯記錄后發生。
編寫AfterEdit事件處理程式,以在數據集進入編輯模式后立即採取特定措施。AfterEdit在啟用記錄編輯,重新計算計算的欄位並呼叫數據事件處理程式以處理記錄更改之後,由Edit呼叫。
# 2.2.4. AfterInsert事件
在應用程式插入新記錄后發生。
編寫AfterInsert事件處理程式,以在應用程式插入記錄后立即採取特定措施。插入或追加新記錄后,Insert和Append方法會產生AfterInsert事件。
# 2.2.5. AfterOpen事件
在應用程式完成打開數據集之後且發生任何數據訪問之前發生。
編寫AfterOpen事件處理程式,以在應用程式打開數據集后立即採取特定措施。AfterOpen數據集建立后訪問其數據和數據集被放入dsBrowse狀態被呼叫。例如,AfterOpen事件處理程式可能會檢查ini檔案,以確定應用程式上次運行時在數據集中觸控的最後一條記錄,並將數據集放置在該記錄上。
# 2.2.6. AfterPost事件
在應用程式將活動記錄寫入資料庫或更改日誌並返回瀏覽狀態之後發生。
編寫AfterPost事件處理程式,以在應用程式將更改發佈到活動記錄后立即採取特定措施。在對記錄進行修改或插入后呼叫AfterPost。
# 2.2.7. AfterScroll事件
在應用程式從一條記錄滾動到另一條記錄后發生。
編寫AfterScroll事件處理程式,以在應用程式滾動到另一個記錄后立即執行特定操作,該操作是呼叫First,Last,MoveBy,Next,Prior,FindKey,FindFirst,FindNext,FindLast,FindPrior和Locate方法的結果。在這些方法以及在數據集中的記錄之間切換的所有其他方法觸發的所有其他事件之後,將呼叫AfterScroll。
# 2.2.8. BeforeClose事件
在數據集關閉之前立即發生。
編寫一個BeforeClose事件,以在應用程式關閉數據集之前採取特定的措施。呼叫Close或將Active屬性設定為false會導致呼叫BeforeClose事件處理程式。
# 2.2.9. BeforeDelete事件
在應用程式嘗試刪除活動記錄之前發生。
在應用程式刪除活動記錄之前,編寫一個BeforeDelete事件處理程式以執行特定的操作。在實際刪除記錄之前,Delete會呼叫BeforeDelete。
在PinToo中,利用此事件,例如,應用程式可能會顯示一個對話方塊,要求您在刪除記錄之前進行確認。拒絕確認后,應用程式可以通過呼叫中止過程中止刪除。
# 2.2.10. BeforeEdit事件
在應用程式進入活動記錄的編輯模式之前發生。
在應用程式啟用對活動記錄的編輯之前,編寫一個BeforeEdit事件處理程式以執行特定的操作。例如,保留資料庫編輯日誌的應用程式可以使用BeforeEdit事件在進入編輯狀態之前記錄編輯請求,時間和使用者。
# 2.2.11. BeforeInsert事件
在應用程式進入插入模式之前發生。
編寫BeforeInsert事件處理程式,以便在應用程式插入或附加新記錄之前採取特定的操作。Insert或Append方法在將數據集設定為dsInsert狀態之前產生BeforeInsert方法。
# 2.2.12. BeforeOpen事件
在應用程式執行打開數據集的請求之前發生。
在應用程式打開數據集進行檢視或編輯之前,編寫一個BeforeOpen事件處理程式以執行特定的操作。當應用程式將數據集的Active屬性設定為true或應用程式呼叫Open時,將觸發BeforeOpen。
# 2.2.13. BeforePost事件
在應用程式將活動記錄的更改發佈到資料庫或更改日誌之前發生。
編寫一個BeforePost事件處理程式,以在應用程式發佈數據集更改之前執行特定的操作。當應用程式呼叫Post方法時,將觸發BeforePost。發佈檢查以確保存在所有必填欄位,然後在發佈記錄之前呼叫BeforePost。
應用程式可以使用BeforePost對數據更改進行有效性檢查,然後再提交。如果遇到有效性問題,則可以呼叫Abort取消Post操作或引發異常。
# 2.2.14. BeforeScroll事件
在應用程式從一條記錄滾動到另一條記錄之前發生。
編寫一個BeforeScroll事件處理程式,以在應用程式滾動到另一個記錄之前立即執行特定操作,該操作是呼叫First,Last,MoveBy,Next,Prior,FindKey,FindFirst,FindNext,FindLast,FindPrior和Locate方法的結果。在這些方法觸發的所有其他事件以及在數據集中的記錄之間切換的所有其他方法觸發的所有其他事件之前,呼叫BeforeScroll。
# 2.2.15. OnNewRecord事件
當應用程式插入或附加新的數據集記錄時發生。
編寫OnNewRecord事件處理程式,以在應用程式插入或追加新記錄時執行特定的操作。OnNewRecord被稱為插入或追加過程的一部分。應用程式可以使用OnNewRecord事件來設定記錄的初始值,或作為在相關數據集中實現級聯插入的一種方式。
# 2.3. 方法(Methods)
- TfxRFDataSet元件主要方法
方法 | 功能說明 |
---|---|
Active | 是否啟用數據集 |
Append | 在數據集的末尾新增一個新的空記錄 |
AddWhere | 新增Where條件 |
Close | 關閉數據集 |
OpenData | 打開數據集 |
OpenSQL | 打開指定的SQL命令 |
ExecSQL | 執行指定的SQL命令 |
Execute | 執行SQL命令 |
FieldByName | 根據名稱查詢欄位 |
FirstPage | 定位到數據集分頁的第一頁 |
NextPage | 定位到數據集分頁的下一頁 |
PriorPage | 定位到數據集分頁的上一頁 |
LastPage | 定位到數據集分頁的最末頁 |
NextRecordset | 下一個數據集 |
PriorRecordset | 上一個數據集 |
Insert | 在數據集中插入新的空記錄 |
First | 移動到數據集中的第一條記錄 |
Prior | 移動到數據集中上一條記錄 |
Next | 移動到數據集中的下一條記錄 |
Last | 移動到數據集中的最後一條記錄 |
Post | 提交數據集 |
ApplyUpdates | 更新數據集 |
# 2.3.1. Active 方法
是否啟用數據集
示例
//啟用數據集時,確保fxRFDateSet1.SQL.Text屬性有SQL命令
fxRFDateSet1.Active := True;
2
# 2.3.2. Append 方法
在數據集的末尾新增一個新的空記錄
示例
//新增一條記錄
fxRFDateSet1.Append;
fxRFDateSet1.FieldByName('ID').asIngter := 1;
fxRFDateSet1.FieldByName('Qty').asFloat := 100.23;
2
3
4
# 2.3.3. AddWhere 方法
新增Where條件
示例
//新增SQL Where 條件
fxRFDateSet1.AddWhere('ID=123');
fxRFDateSet1.AddWhere('Qty=100');
2
3
# 2.3.4. Close 方法
關閉數據集
示例
fxRFDateSet1.Close;
# 2.3.5. OpenData 方法
打開數據集
示例
fxRFDateSet1.SQL.Text := 'Select * from Table_Cust where ID = 123';
fxRFDateSet1.Execute;
2
# 2.3.6. OpenSQL 方法
指定SQL語句打開數據集
示例
fxRFDateSet1.OpenSQL('Select * from Table_Cust where ID = 123');
# 2.3.7. ExecSQL 方法
執行指定的SQL命令
示例
fxRFDateSet1.ExecSQL('Update Table_Cust Set Qty = 100 where ID = 123');
# 2.3.8. Execute 方法
執行SQL命令
示例
fxRFDateSet1.SQL.Text := 'Update Table_Cust Set Qty = 100 where ID = 123';
fxRFDateSet1.Execute;
2
# 2.3.9. FieldByName 方法
根據名稱查詢欄位
示例
fxRFDateSet1.Edit;
fxRFDateSet1.FiledByName('Qty').asFloat := 100;
2
# 2.3.10. FirstPage 方法
定位到數據集分頁的第一頁
# 2.3.11. NextPage 方法
定位到數據集分頁的下一頁
# 2.3.12. PriorPage 方法
定位到數據集分頁的上一頁
# 2.3.13. LastPage 方法
定位到數據集分頁的最末頁
# 2.3.14. NextRecordset 方法
下一個數據集
示例
//獲取目前數據集的上一個數據集
//當數據集周時執行兩個SQL命令時,並且FetchOptions.AutoClose = false。
var
vDataSet:TfxRFDateSet;
begin
vDataSet := fxRFDateSet1.NextRecordset;
end;
2
3
4
5
6
7
# 2.3.15. Insert 方法
在數據集中插入新的空記錄
# 2.3.16. First 方法
移動到數據集中的第一條記錄
# 2.3.17. Prior 方法
移動到數據集中上一條記錄
# 2.3.18. Next 方法
移動到數據集中的下一條記錄
# 2.3.19. Last 方法
移動到數據集中的最後一條記錄
# 2.3.20. PriorRecordset 方法
上一個數據集
示例
//獲取目前數據集的上一個數據集
//當數據集周時執行兩個SQL命令時,並且FetchOptions.AutoClose = false。
var
vDataSet:TfxRFDateSet;
begin
vDataSet := fxRFDateSet1.PriorRecordset;
end;
2
3
4
5
6
7
# 2.3.21. Post 方法
提交數據集
示例
fxRFDateSet1.Edit;
fxRFDateSet1.FiledByName('Qty').asFloat := 100;
fxRFDateSet1.Post;
2
3
# 2.3.22. ApplyUpdates 方法
更新數據集,數據集中的數據將儲存到更新表中。
示例
//提交數據
if fxRFDataSet1.ApplyUpdates(-1) = 0 then
begin
Showmessage('數據儲存成功!');
end;
2
3
4
5
# 3. TfxRFStoredProc
- 引用單元 TARSCompClient
該元件用於執行資料庫中的預存程序。
該元件用於執行資料庫中的預存程序。按照要求將預存程序的名稱及參數資訊獲取輸入,可執行相應的預存程序。
# 3.1. 屬性
名稱 | 說明 |
---|---|
Active | 數據集是否開啟 |
Aggregrates | 為數據集定義的客戶端彙總的集合 |
AggregratesActive | 是否自動計算彙總值 |
AutoCalcFields | 確定何時觸發OnCalcFields事件以及何時計算查詢欄位值 |
Connection | 指定控制元件使用的連線控制元件 |
Filter | 設定過濾條件 |
Filtered | 是否開啟過濾器 |
Params | 設定預存程序使用的參數 |
StoredProcName | 指定在伺服器端呼叫的預存程序的名稱 |
# 3.1.1. ExecProc
procedure ExecProc;
function ExecProc(const AProcName: String): LongInt;
function ExecProc(const AProcName: String; const AParams: array of Variant): LongInt;
function ExecProc(const AProcName: String; const AParams: array of Variant; const ATypes: array of TFieldType): LongInt;
2
3
4
執行預存程序。
//1
RFStoredProc1.StoredProcName := 'myproc';
RFStoredProc1.Prepare;
RFStoredProc1.ParamByName('inval').Value := 100;
RFStoredProc1.ExecProc;
ShowMessage(RFStoredProc1.ParamByName('outval').AsString);
//2
RFStoredProc1.ExecProc('myproc');
//3
RFStoredProc1.ExecProc('myproc;2', [100, 'qweqwe']);
//4
RFStoredProc1.ExecProc('myproc', [100, 'qweqwe'], [ftInteger, ftWideString]);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 4. TfxRFWechatMP元件
引用單元 TARSCompClient DataSource元件用來為數據感知組中的元件提供數據來源。
TfxRFWechatMP元件主要屬性
屬性 | 功能說明 |
---|---|
AccountName | 微信公眾號的名稱,在TARS中有相關設定 |
Connection | 設定連線方式,可選方式有TfxRFConnection元件/PinToo帳套設定 |
# 4.1. 方法(Methods)
- TfxRFWechatMP元件主要方法
方法 | 功能說明 |
---|---|
SendCustomMessage | 發送客文字訊息 |
SendTemplateMessage | 發送模板訊息 |
# 4.1.1. SendCustomMessage 方法
//功能:發送客文字訊息
//返回值:Boolean ,True=成功,False=發送失敗
//參數:AOpenID 使用者 OpenID, AContent 發送內容
function SendCustomMessage(const AOpenID, AContent: string): Boolean;
2
3
4
示例
begin
fxRFWechatMP1.SendCustomMessage('oTpfe0VB-9vClZ4uSpTD05XbBNyI','訊息內容');
End;
2
3
# 4.1.2. SendTemplateMessage 方法
//功能:發送模板訊息
//返回值:Boolean ,True=成功,False=發送失敗
//參數:AJsonContent 發送內容 Json格式
function SendTemplateMessage(const AJsonContent: string): Boolean;
2
3
4
示例
JsonObject:TJSONObject;
begin
JsonObject := TJSONObject.Create
.AddPair('touser', 'oTpfe0VB-9vClZ4uSpTD05XbBNyI')
.AddPair('template_id', 'kAWKL_v_H8wH0H8vdJq01n1W-EUKcmQ2Hxv3tJyGXlo')
.AddPair('url', 'isoface.net')
.AddPair('topcolor', '#FF0000')
.AddPair('data', TJSONObject.Create
.AddPair('Caption', TJSONObject.Create
.AddPair('value', '這是由PInToo發出的一條訊息!')
.AddPair('color', '#173177')
)
);
fxRFWechatMP1.SendTemplateMessage(JsonObject.ToJson);
End;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 5. TfxRFFileTransfer元件
- 引用單元 TARSCompClient
該元件用於與TARS伺服器進行檔案傳輸。
# 5.1. 屬性
屬性 | 功能說明 |
---|---|
Connection | 設定連線方式,可選方式有TRFConnection元件/帳套設定 |
# 5.2. 事件
事件 | 何時觸發 |
---|---|
OnDeleteDone | 當TARS雲端檔案刪除完成後觸發該事件 |
OnDownloadDone | 當檔案下載完成後觸發該事件 |
OnDownloadProgress | 當正在下載檔案時觸發該事件,可用於展示檔案下載進度 |
OnUploadDone | 當檔案上傳完成後觸發該事件 |
OnUploadProgress | 當檔案正在上傳時觸發該事件 |
# 5.3. 方法
# 5.3.1. Upload 方法
function Upload(ALocalFileName: String; ARemoteFilPath: String;
ARemoteFileName: String): Boolean;
2
該方法可將本地檔案上傳到TARS伺服器。
- ALocalFileName: 本地檔案(需在Smart程式目錄下)地址。
- ARemoteFilePath: TARS伺服器上傳地址所在目錄。
- ARemoteFileName: TARS伺服器上傳檔案的地址。
檔案上傳示例程式碼如下:
procedure TMyHandler.Button1Click;
//點選按鈕以上傳檔案
begin
fxRFFileTransfer1.Connection := fxDM.DBConn;
if fxRFFileTransfer1.Upload('icon.ico','upload','icon.ico') then
ShowMessage('檔案上傳成功!');
end;
2
3
4
5
6
7
# 5.3.2. Download 方法
function Download(ARemoteFileName: String; ALocalNewFileName: String): Boolean;
從TARS伺服器指定的檔案目錄中將指定檔案下載到本地。
- ARemoteFileName: TARS檔案伺服器指定的檔案地址。
- ALocalNewFileName: 下載到本地的檔案地址。
檔案下載示例程式碼如下:
//點選按鈕以下載檔案
begin
fxRFFileTransfer1.Connection := fxDM.DBConn;
if fxRFFileTransfer1.Download('upload\icon.ico','icon.ico') then
ShowMessage('檔案下載成功!');
end;
2
3
4
5
6
# 5.3.3. Delete 方法
function Delete(ARemoteFileName: String): Boolean;
刪除TARS檔案伺服器中指定的檔案。
- ARemoteFileName: TARS檔案伺服器指定的檔案地址。
檔案刪除示例程式碼如下:
//點選按鈕以刪除檔案
begin
fxRFFileTransfer1.Connection := fxDM.DBConn;
if fxRFFileTransfer1.Delete('upload\icon.ico') then
ShowMessage('檔案刪除成功!');
end;
2
3
4
5
6
# 5.3.4. FileMD5 方法
function FileMD5(ARemoteFileName: String): String;
返回位於TARS伺服器中的檔案的MD5校驗值。可用於檢測檔案是否被惡意修改。
- ARemoteFileName: TARS檔案伺服器指定的檔案地址。
獲取檔案校驗值的示例程式碼如下:
procedure TMyHandler.Button1Click;
//點選按鈕以獲取檔案校驗碼
begin
fxRFFileTransfer1.Connection := fxDM.DBConn;
fxLabel1.Caption := FThis.RFFileTransfer1.FileMD5('upload\icon.ico');
end;
2
3
4
5
6
# 5.3.5. CreateDir 方法
function CreateDir(AFilePath: String): Boolean;
在TARS伺服器中建立檔案目錄。
- AFilePath: 建立的資料夾的目錄路徑,如果該目錄的上級目錄不存在則會同時新建此目錄。
建立檔案目錄的示例程式碼如下:
//點選按鈕新增目錄
begin
fxRFFileTransfer1.Connection := fxDM.DBConn;
if fxRFFileTransfer1.CreateDir('upload\downloads') then
ShowMessage('新增目錄成功!');
end;
2
3
4
5
6
# 5.3.6. MoveFile 方法
function MoveFile(ARemoteFileName: String; ANewFileName: String): Boolean;
將TARS伺服器中的檔案移動至新的目錄中。
- ARemoteFileName: TARS檔案伺服器指定的檔案地址。
- ANewFileName: TARS檔案伺服器指定的移動檔案地址。
移動檔案的示例程式碼如下:
//點選移動檔案
begin
fxRFFileTransfer1.Connection := fxDM.DBConn;
if fxRFFileTransfer1.MoveFile('upload\icon.ico','icon.ico') then
ShowMessage('檔案移動成功!');
end;
2
3
4
5
6
# 5.3.7. CopyFile 方法
function CopyFile(ARemoteFileName: String; ANewFileName: String): Boolean;
將TARS伺服器中的檔案複製到新的目錄中。
- ARemoteFileName: TARS檔案伺服器指定的檔案地址。
- ANewFileName: TARS檔案伺服器指定的複製檔案地址。
移動檔案的示例程式碼如下:
//點選複製檔案
begin
fxRFFileTransfer1.Connection := fxDM.DBConn;
if fxRFFileTransfer1.CopyFile('icon.ico','upload\icon.ico') then
ShowMessage('檔案複製成功!');
end;
2
3
4
5
6
# 5.3.8. RenameFile 方法
function RenameFile(ARemoteFileName: String; ANewFileName: String): Boolean;
將TARS伺服器中的檔案進行重新命名。
- ARemoteFileName: TARS檔案伺服器指定的檔案地址。
- ANewFileName: TARS檔案伺服器指定的新命名的檔案地址。
重新命名檔案的示例程式碼如下:
//點選重新命名檔案
begin
fxRFFileTransfer1.Connection := fxDM.DBConn;
if fxRFFileTransfer1.RenameFile('upload\icon.ico','upload\icon111.ico') then
ShowMessage('檔案重新命名成功!');
end;
2
3
4
5
6
# 5.3.9. FileExists 方法
function FileExists(ARemoteFileName: String): Boolean;
檢驗TARS伺服器中指定目錄的檔案是否存在。
- ARemoteFileName: TARS檔案伺服器指定的檔案地址。
檢驗檔案是否存在的示例程式碼如下:
//點選以檢驗檔案是否存在
begin
fxRFFileTransfer1.Connection := fxDM.DBConn;
if fxRFFileTransfer1.FileExists('upload\icon.ico') then
ShowMessage('icon.ico檔案存在於upload目錄中!');
end;
2
3
4
5
6
# 6. TfxRFSMSSender元件
該元件可用於對接簡訊平臺實現在TARS上使用簡訊發送的功能。具體使用方法可參考PinToo之阿里云簡訊發送。
# 6.1. 7.6.1.屬性
屬性 | 功能說明 |
---|---|
AccessKeyId | 簡訊服務提供商的AccessKeyId |
AcessKeySecret | 簡訊服務提供商的AccessKeySecret |
Connection | 指定連線的來源 |
PhoneNumbers | 接收簡訊的手機號碼,如有多個號碼請用; 分隔 |
Provider | 簡訊服務提供商選擇,有阿里雲和阿里大於可選 |
SigName | 簡訊簽名顯示 |
TemplateCode | 簡訊模板名稱 |
TemplateParam | 簡訊模板參數 |
以上參數的詳細說明請參考阿里云簡訊服務文件 (opens new window)。
# 6.2. 方法
# 6.2.1. Execute 方法
執行簡訊發送的操作。
//不經過TARS發送簡訊
var
SendSmsRequest: TSendSmsRequest;
begin
SendSmsRequest := TSendSmsRequest.Create;
try
SendSmsRequest.AccessKeyId := edtAccessKeyId.Text;
SendSmsRequest.AccessKeySecret := edtAccessKeySecret.Text;
SendSmsRequest.TemplateCode := edtTemplateCode.Text;
SendSmsRequest.TemplateParam := edtTemplateContent.Text;
SendSmsRequest.SignName := edtFreeSignName.Text;
SendSmsRequest.PhoneNumbers := edtMobileNumber.Text;
SendSmsRequest.Provider := cbbApiProviders.ItemIndex;
if SendSmsRequest.Execute then
Showmessage('簡訊下發成功!')
else
Showmessage(SendSmsRequest.ResultMessage);
finally
FreeAndNil(SendSmsRequest);
end;
end;
//經過TARS發送簡訊
//以下兩個參數如果為空,則使用服務端預設值
fxRFSMSSender1.AccessKeyId := edtAccessKeyId.Text;
fxRFSMSSender1.AccessKeySecret := edtAccessKeySecret.Text;
fxRFSMSSender1.TemplateCode := edtTemplatecode.Text;
fxRFSMSSender1.TemplateParam := edtTemplatecontent.Text;
fxRFSMSSender1.SignName := edtFreesignname.Text;
fxRFSMSSender1.PhoneNumbers := edtMobilenumber.Text;
fxRFSMSSender1.Provider := TSmsApiProvider(FThis.cbbApiProviders.ItemIndex);
if fxRFSMSSender1.Execute then
Showmessage('簡訊下發成功!');
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 7. TfxDataSource元件
- 引用單元 DataDB
TfxDataSource元件用來為數據感知組中的元件提供數據來源。
# 7.1. 7.5.1.屬性
屬性 | 功能說明 |
---|---|
DataSet | 設定使用的數據集名稱 |
Enabled | 是否啟用該元件 |
# 8. TfxDBData元件
- 引用單元 DataDB
TfxDBData元件是記憶體中的數據集元件。
# 8.1. 屬性
屬性 | 說明 |
---|---|
Aggregates | 統計合計資訊 |
Constraints | 設定欄位的限制類型資訊 |
DataNodeName | 設定連線的node節點資料庫的名稱 |
FieldDefs | 設計數據表字段的相關資訊 |
IndexDefs | 設計數據表的索引資訊 |
Params | 設計數據查詢使用的參數資訊 |
FileName | 設定數據儲存檔案的名稱 |
# 8.2. 方法
# 8.2.1. CreateDataSet
procedure CreateDataSet;
建立數據集。
# 8.2.2. Open
procedure Open;
打開數據集。
# 8.2.3. First
procedure Open;
跳轉至第一條記錄。
# 8.2.4. Prior
procedure Prior;
跳轉至前一條記錄。
# 8.2.5. Next
procedure Next;
跳轉至后一條記錄。
# 8.2.6. Last
procedure Last;
跳轉至最後一條記錄。
# 8.2.7. Edit
procedure Edit;
編輯目前指向的記錄。
# 8.2.8. Cancel
procedure Cancel;
取消對當前記錄的修改。
# 8.2.9. Post
procedure Post;
提交數據。
# 8.2.10. Insert
procedure Insert;
插入記錄。
# 8.2.11. Append
procedure Append;
新增記錄。
# 8.2.12. Delete
procedure Delete;
刪除記錄。
# 8.2.13. Refresh
procedure Refresh;
重新整理記錄。
# 8.2.14. SubmitUpdates
procedure SubmitUpdates;
儲存並提交數據。
# 8.2.15. ToJSONObjectString
function ToJSONObjectString(const AOnlyUpdatedRecords: Boolean = False; const AChildRecords: Boolean = True; const AValueRecords: Boolean = True; const AEncodeBase64Blob: Boolean = True): string;
將數據集中目前選擇的的數據行轉換為JSON對象的數據集。輸出的格式為欄位名稱與欄位值組成的鍵值對。
{"code":"Code1","name":1}
# 8.2.16. ToJSONArrayString
function ToJSONArrayString(const AOnlyUpdatedRecords: Boolean = False; const AChildRecords: Boolean = True; const AValueRecords: Boolean = True; const AEncodeBase64Blob: Boolean = True): string;
將數據集中的數據轉換為JSONArray。是由JSON對像組成的佇列。
[{"code":"Code1","name":1},{"code":"Code2","name":2}]
# 8.2.17. ToJSONObject
function ToJSONObject(const AOnlyUpdatedRecords: Boolean = False; const AChildRecords: Boolean = True; const AValueRecords: Boolean = True; const AEncodeBase64Blob: Boolean = True): TJSONObject;
將數據集中目前指向的數據行轉換為JSON對像型別。
# 8.2.18. ToJSONArray
function ToJSONArray(const AOnlyUpdatedRecords: Boolean = False; const AChildRecords: Boolean = True; const AValueRecords: Boolean = True; const AEncodeBase64Blob: Boolean = True): TJSONArray;
將數據集中的數據轉換為JSON對像序列型別。
# 8.2.19. SaveStructure
function SaveStructure: TJSONArray;
獲取目前的數據集的結構資訊,以JSONArray的方式輸出,包括數據表的欄位名稱、數據型別、大小等資訊。
# 8.2.20. LoadStructureJSONArray
procedure LoadStructureJSONArray(const AJSONArray: TJSONArray; const AOwns: Boolean = True);
將數據集的數據表結構從JSONArrary中載入。
# 8.2.21. LoadStructureJSONString
procedure LoadStructureJSONString(const AJSONString: string); overload;
將數據集的數據表結構從JSON格式的字串中讀取載入。
# 8.2.22. LoadFromJSONObject
procedure LoadFromJSONObject(const AJSONObject: TJSONObject; const AOwns: Boolean = True)
數據集從JSON對像中獲取載入單條記錄。
# 8.2.23. LoadFromJSONArray
procedure LoadFromJSONArray(const AJSONArray: TJSONArray; const AOwns: Boolean = True);
數據集從JSON對像序列中獲取載入多條記錄。
# 8.2.24. LoadFromJSONString
procedure LoadFromJSONString(const AJSONString: string);
數據集從JSON對象的字串中獲取載入數據記錄。
# 8.2.25. MergeFromJSONObject
procedure MergeFromJSONObject(const AJSONObject: TJSONObject; const AOwns: Boolean = True);
數據集從JSON對像中讀取單條數據記錄併合並至數據集中。
# 8.2.26. MergeFromJSONString
procedure MergeFromJSONString(const AJSONString: string);
數據集從JSON對像字串中讀取數據記錄併合並至數據集中。
# 8.2.27. ValidateJSONObject
function ValidateJSONObject(const AJSONObject: TJSONObject; const ALang: TLanguageType = enUS; const AOwns: Boolean = True): TJSONArray;
用於驗證JSON對像元件是否有效。
# 8.2.28. ValidateJSONString
function ValidateJSONString(const AJSONString: string; const ALang: TLanguageType = enUS): TJSONArray;
用於驗證JSON對像字串是否有效。