自定程式
# PinToo 自定程式
# 1. TfxDm類程式
需引用ufxDm單元。
# 1.1. CopyStructure
procedure CopyStructure(ASourceDataSet, ATargetDataSet: TSQModuleDataSet);
1
說明: 複製數據集結構
- CopyStructure程式語法中各部分說明
部分 | 說明 |
---|---|
ASourceDataSet | 源數據集 |
ATargetDataSet | 目標數據集 |
# 1.2. DataExecSql
procedure DataExecSql(const ASql: string; ACds: TRFDataSet);
1
說明: 業務庫數據操作
- 程式語法中各部分說明
部分 | 說明 |
---|---|
ASql | SQL語句 |
ACds | 數據集,數據集中的數據是通過執行SQL獲得 |
begin
vDataSet:=TRFDataSet.Create;
try
vSQL := 'Select * from Basic_Whs';
fxDM.DataExecSql(vSQL,vDataSet);
finally
vDataSet.Free;
end;
end;
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 1.3. Edit_Plan_User_PassWord
Procedure Edit_Plan_User_PassWord(const AOldPW, ANewPW: string);
1
說明: 修改方案庫中的使用者密碼
- Edit_Plan_User_PassWord程式語法中各部分說明
部分 | 說明 |
---|---|
AOldPW | 舊密碼 |
ANewPW | 新密碼 |
# 1.4. FillComboBox
procedure FillComboBox(var QControl: TfxComboBox; QSQL: string);
1
說明: 填充TComboBox下拉控制元件
- FillComboBox程式語法中各部分說明
部分 | 說明 |
---|---|
QControl | 指定一個需要填充數據的TComboBox對像 |
QSQL | 指定一個SQL字串,用來獲取填充數據 |
- 示列
Var
vSQL:String;
begin
vSQL:= 'Select FWhsName as FName from Basic_Whs';
fxDM.FillComboBox (fxComboBox1, vSQL);
end;
1
2
3
4
5
6
2
3
4
5
6
# 1.5. LoadDataFromDataSet
procedure LoadDataFromDataSet(ASource: TRFDataSet; ATarget: TRFDataSet;
ARecordCount: Integer = -1; ALoadDataType: TLoadDataType = ldtCopyData);
1
2
2
說明: 數據集傳遞
- LoadDataFromDataSet程式語法中各部分說明
部分 | 說明 |
---|---|
ASource | 源數據集 |
ATarget | 目標數據集 |
ARecordCount | 數據拷貝記錄數 |
ALoadDataType | 數據拷貝型別(ldtCopyData, ldtCopyStruct, ldtStructAndData, ldtAppend); |
# 1.6. OpenSQL
procedure OpenSQL(ADataSet: TRFDataSet; ASQL: string; AConnectionDefName:
string = '');
1
2
2
說明: 打開SQL數據
- OpenSQL程式語法中各部分說明
部分 | 說明 |
---|---|
ADataSet | 需要打開數據的數據集 |
ASQL | 指定的SQL語句 |
AConnectionDefName | 帳套編號,預設為空,也可以指定帳套 |
- 示列
var
vDataSet:TRFDataSet;
vSQL:String;
begin
vDataSet:=TRFDataSet.Create;
try
vSQL := 'Select FWhsName as FName from Basic_Whs';
fxDM.OpenSQL(vDataSet,vSQL,』』);
//與以下兩種方法效果相同
//方法1
vDataSet.SQL.Text := 'Select FWhsName as FName from Basic_Whs';
vDataSet.OpenData;
//方法2
vDataSet.OpenSQL(vSQL);
finally
vDataSet.Free;
end;
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 1.7. PlanExecSql
procedure PlanExecSql(const ASql: string; ACds: TRFDataSet);
1
說明: 方案庫數據操作
- 程式語法中各部分說明
部分 | 說明 |
---|---|
ASql | SQL語句 |
ACds | 數據集,數據集中的數據是通過執行SQL獲得 |
- 示列
begin
vDataSet:=TRFDataSet.Create;
try
vSQL := 'Select * from BaseUserInfo';
fxDM.PlanExecSql(vSQL,vDataSet);
finally
vDataSet.Free;
end;
end;
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 1.8. SetDataSetParam
procedure SetDataSetParam(QDataSet: TRFDataSet; QIndex: Integer; QValue: Variant);
1
說明: 設定指定數據集的參數資訊。
- SetDataSetParam程式語法中各部分說明
部分 | 說明 |
---|---|
QDataSet | 需要設定參數的數據集 |
Qindex | 參數序號值,從0開始計數 |
QValue | 參數的取值 |
- 示例
begin
fxRFDataSet.SQL.Text := 'SELECT * FROM Sal_OrderEntry WHERE FInterID = :FInterID and FID = :FID';
//序號0對應的參數為:FInterID
FXDM.SetDataSetParam(fxRFDataSet,0,IntToStr(vInterID));
//序號1對應的參數為:FID
FXDM.SetDataSetParam(fxRFDataSet,1,IntToStr(vID));
fxRFDataSet.OpenData;
end.
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 1.9. SetStoredProcParam
procedure SetStoredProcParam(QStoredProc: TRFStoredProc; QIndex: Integer; QValue: Variant);
1
說明: 設定預存程序的參數
- SetStoredProcParam程式語法中各部分說明
部分 | 說明 |
---|---|
QStoredProc | 預存程序控制元件的名稱 |
QIndex | 參數序號值,從0開始計數 |
QValue | 參數的取值 |
- 示例
var
vOption: String;
AStoredProc: TRFStoredProc;
vRAISEMSG,vMSG: String;
i, j: Integer;
Begin
if cbMore.ItemIndex = -1 Then
exit;
if cbMore.ItemIndex = 0 Then
vOption := 'Check';
if cbMore.ItemIndex = 1 Then
vOption := 'UnCheck';
if cbMore.ItemIndex = 2 Then
vOption := 'Revoke';
if cbMore.ItemIndex = 3 Then
vOption := 'Recover';
if cbMore.ItemIndex = 4 Then
vOption := 'Delete';
AStoredProc := TRFStoredProc.Create(nil);
AStoredProc.Connection := fxdm.DBConnection;
try
AStoredProc.StoredProcName := 'sp_Sal_Order';
AStoredProc.Prepare;
if AStoredProc.Prepared then
begin
//AStoredProc.ParamByName('FDataID').AsString := dts0.FieldByName('FInterID').AsString;
//AStoredProc.ParamByName('Flag').AsString := 'Delete';
//AStoredProc.ParamByName('FUserCode').AsString := self.GetMsgLang('admin');
fxdm.SetStoredProcParam(AStoredProc,0,vOption);
fxdm.SetStoredProcParam(AStoredProc,1,dts0.FieldByName('FInterID').AsString);
fxdm.SetStoredProcParam(AStoredProc,2,self.GetMsgLang('admin'));
try
AStoredProc.ExecProc;
Except
vRAISEMSG:= ErrorMsg;
i := Pos('SQMESSAGE', vRAISEMSG);
j := Pos('[SQL Server]', vRAISEMSG);
vMSG := Copy(vRAISEMSG, i, Length(vRAISEMSG) - i + 1);
// 非格式化訊息提示
if i = 0 then
begin
ShowMessage(Copy(vRAISEMSG, j + 12, Length(vRAISEMSG) - j + 1));
Exit;
end;
end;
//btnQueryClick(sender);
end;
finally
AStoredProc.Free;
dts0.OpenData;
dts1.OpenData;
OpenSalOrder;
OpenSalOrderEntry;
cbMore.ItemIndex := -1;
end;
End;
1
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# 1.10. TransFieldValue
procedure TransFieldValue(ASource: TRFDataSet; ATarget: TRFDataSet;
ATransFieldList: String);
1
2
2
說明: 根據指定欄位數據集記錄拷貝
- TransFieldValue程式語法中各部分說明
部分 | 說明 |
---|---|
ASource | 源數據集 |
ATarget | 目標數據集 |
ATransFieldList | 需要拷貝的欄位 |
- 示例
begin
//指定欄位進行數據拷貝,將dts0拷貝到dts1
fxDM.TransFieldValue(dts0,dts1,'FInterID;FCustID;FCustName');
end;
1
2
3
4
2
3
4
# 1.11. TransSQLToDataSet
procedure TransSQLToDataSet(QSQLs: UnicodeString; QDataSets: TRFDataSet;
bTrans: Boolean = true);
1
2
2
說明: SQL通用數據傳遞
- TransSQLToDataSet程式語法中各部分說明
部分 | 說明 |
---|---|
QSQLs | SQL字串,用來獲取源數據 |
QDataSets | 目標數據集,需要接收數據的數據集對像 |
bTrans | 當目標欄位不為空時,是否進行覆蓋 |
- 示例
Var
vSQL:string;
Begin
vSQL:= 'select * from Basic_Process Order By FEntryID';
//將SQL語句執行結果傳遞到數據集dts1上
fxDM.TransSQLToDataSet(vSQL, dts1);
End;
1
2
3
4
5
6
7
2
3
4
5
6
7
# 2. TfxFun類函式
需引用ufxFuntions單元。
# 2.1. DownLoadFile
procedure DownLoadFile(const Url, FilePath: string);
1
說明: 指定網址下載檔案
- DownLoadFile程式語法中各部分說明
部分 | 說明 |
---|---|
Url | 網路檔案網址 |
FilePath | 指定一個檔案存放目錄 |
# 2.2. OpenFile
procedure OpenFile(const FilePath,FileName: string);
1
說明: 指定檔案路徑打開檔案
- OpenFile程式語法中各部分說明
部分 | 說明 |
---|---|
FilePath | 檔案目錄 |
FileName | 檔名稱 |
# 2.3. PrintHtml
procedure PrintHtml(const Url, JobName: string);
1
說明: 指定網址列印網頁
- PrintHtml程式語法中各部分說明
部分 | 說明 |
---|---|
Url | 網址 |
JobName | 指定一個列印檔名稱 |
# 2.4. PrintPdfFile
procedure PrintPdfFile(const PdfFileName, JobName: string);
1
說明: 指定PDF檔案列印
- PrintPdfFile程式語法中各部分說明
部分 | 說明 |
---|---|
PdfFileName | 指定一個PDF檔案 |
JobName | 指定一個列印檔名稱 |