在 Business Central AL 中開視窗挑選多筆資料新增於客製表格中

文章中 在 Business Central 用 AL 實作按鍵來新增所有資料 無法挑選資料來新增,而實務中有些情況是由使用者挑選特定的資料。為了達成這樣的功能,以 在 Business Central AL 中實作 Lookup to another table(建立查詢選取視窗)來增加一個按鈕的功能來達成

C
// **新增按鍵 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) 結束**

這樣子,就可以達成要求了。

image 9

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *