Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

文章中 在 Business Central 用 AL 實作按鍵來新增所有資料 無法挑選資料來新增,而實務中有些情況是由使用者挑選特定的資料。為了達成這樣的功能,以 在 Business Central AL 中實作 Lookup to another table(建立查詢選取視窗)來增加一個按鈕的功能來達成
// **新增按鍵 action(AddUsers)**
action(AddUsers)
{
Caption = '從 Users 新增多筆';
Image = User;
Promoted = true;
PromotedCategory = Process;
ApplicationArea = All;
trigger OnAction()
var
UserPage: Page Users; // 宣告 Users 頁面的變數
UserRec: Record User; // 宣告 User Table 的 Record 變數
BasicTableRec: Record "Basic Table"; // 宣告 Basic Table 的 Record 變數
UsersAdded: Integer;
begin
// 設定 Users 頁面為 Lookup 模式,允許多選
UserPage.LookupMode(true);
// 執行 Users 頁面,並檢查是否點擊了 "OK"
if UserPage.RunModal() = ACTION::LookupOK then begin
// 取得使用者在 Users 頁面選中的記錄篩選器
UserPage.GetRecord(UserRec); // 取得第一個選中的記錄並設定給 UserRec
UserPage.SetSelectionFilter(UserRec); // 將選取的篩選器設定給 UserRec
UsersAdded := 0;
// 遍歷所有選中的使用者
if UserRec.FindSet() then begin
repeat
BasicTableRec.Reset();
BasicTableRec.SetRange(Name, UserRec."User Name"); // 檢查每一筆使用者資料是否已存在
if BasicTableRec.IsEmpty then begin
// 準備一筆新的 Basic Table 記錄
BasicTableRec.Init();
Clear(BasicTableRec); // 清乾淨,避免沿用舊 ID
// 將選中的使用者資料賦值給新記錄
BasicTableRec.Name := UserRec."User Name";
BasicTableRec.Description := UserRec."Full Name";
// 插入新記錄。如果 ID 是 AutoIncrement (如 BasicTable.al),
// 則不需要手動設定 ID。
BasicTableRec.Insert(true); // true 參數表示即使記錄已存在也不報錯 (通常用於有 Key 衝突時)
UsersAdded += 1;
end;
until UserRec.Next() = 0;
end;
// 刷新當前頁面以顯示新增的記錄
CurrPage.Update();
// 顯示新增結果
Message('%1 筆使用者資料已成功新增到 Basic Table。', UsersAdded);
end;
end;
}
// **新增按鍵 action(AddUsers) 結束**這樣子,就可以達成要求了。
