1、通过数据源获取记录,以EmplTable为例。
1 EMPlTable emp; 2 ; 3 4 for (emp = EmplTable_ds.getFirst(1); emp; emp = EmplTable_ds.getNext()) 5 { 6 //do something 7 }
1 voidclicked() 2 { 3 CustTablecustTable; 4 ; 5 for (custTable = CustTable_ds.getFirst(true)?CustTable_ds.getFirst(true):CustTable_ds.cursor(); //从当前记录开始,如果当前记录不是第一条 6 custTable; 7 custTable = CustTable_ds.getNext()) 8 { 9 //dosomethingwithcustTable 10 info(custTable.accountNum); 11 custTable_ds.research(); 12 } 13 }
2、通过勾选CheckBox,获取选中记录。
(1)先在Form数据源(表中也可以)中创建Eidt()方法。将选中的记录添加到集合中,返回选中记录。
1 Edit noYes editMark(noYes _set, PriceDiscTable _PriceDiscTable, noYes _mark) 2 { 3 ; 4 5 if (_set) 6 { 7 if (_mark) 8 set_PriceRecid.add(_PriceDiscTable.RecId); //set_PriceRecid是Set集合,使用前要先实例化 9 else 10 set_PriceRecid.remove(_PriceDiscTable.RecId); 11 } 12 13 return set_PriceRecid.in(_PriceDiscTable.RecId); 14 }
(2)在Form的Grid中添加CheckBox,并绑定数据源及方法。
(3)由于是自定义式,全部选择要添加额外的代码。
1 void clicked() 2 { 3 QueryRun QR; 4 PriceDiscTable m_PriceDiscTable; 5 ; 6 if (!b_SelectedAll) 7 { 8 QR = new QueryRun(PriceDiscTable_Q); 9 set_PriceRecid = new Set(Types::Int64); 10 while (QR.next()) 11 { 12 m_PriceDiscTable = QR.get(tablenum(PriceDiscTable)); 13 set_PriceRecid.add(m_PriceDiscTable.RecId); 14 } 15 PriceDiscTable_DS.research(); 16 b_SelectedAll = true; 17 } 18 else 19 { 20 set_PriceRecid = new Set(Types::Int64); 21 PriceDiscTable_DS.research(); 22 b_SelectedAll = false; 23 } 24 }