Trace:
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
jvx:client:model:databook:record_iteration [2023/02/08 14:09] admin created |
jvx:client:model:databook:record_iteration [2023/02/08 17:57] (current) admin |
||
---|---|---|---|
Line 2: | Line 2: | ||
~~Title: Record iteration~~ | ~~Title: Record iteration~~ | ||
- | for (IDataRow mRow : mdbMaster) | + | It's possible to iterate all records of a databook with different techniques. It's a performance decission what's best. Just reading is fastest. |
- | { | + | |
- | for (IDataRow dRow : mdbDetail.getDataPage(mRow)) | + | You decide if you iterate for reading or for changing records. An iteration |
+ | |||
+ | ==Iterate with optional record change (Solution 1)== | ||
+ | <file java> | ||
+ | int masterRow = mdbMaster.getSelectedRow(); | ||
+ | int detailRow = mdbDetail.getSelectedRow(); | ||
+ | |||
+ | boolean resetSelection = false; | ||
+ | |||
+ | try | ||
+ | { | ||
+ | for (int i = 0; i < mdbMaster.getRowCount(); i++) | ||
{ | { | ||
- | if (wanted) | + | for (int j = 0; j < mdbDetail.getDataPage(mdbMaster.getDataRow(i)).getRowCount(); j++) |
- | { | + | { |
- | mdbMaster.setSelectedRow(mRow.getRowIndex()); | + | if (changeData) |
- | mdbDetail.setSelectedRow(dRow.getRowIndex()); | + | { |
- | // set any value | + | mdbMaster.setSelectedRow(i); |
- | } | + | mdbDetail.setSelectedRow(j); |
+ | |||
+ | resetSelection = true; | ||
+ | } | ||
+ | } | ||
} | } | ||
- | } | + | } |
+ | finally | ||
+ | { | ||
+ | if (resetSelection) | ||
+ | { | ||
+ | mdbMaster.setSelectedRow(masterRow); | ||
+ | mdbDetail.setSelectedRow(detailRow); | ||
+ | } | ||
+ | } | ||
+ | </file> | ||
+ | |||
+ | ==Iterate with optional record change (Solution 2)== | ||
+ | |||
+ | <file java> | ||
+ | int masterRow = mdbMaster.getSelectedRow(); | ||
+ | int detailRow = mdbDetail.getSelectedRow(); | ||
+ | |||
+ | boolean resetSelection = false; | ||
+ | |||
+ | try | ||
+ | { | ||
+ | for (IDataRow mRow : mdbMaster) | ||
+ | { | ||
+ | for (IDataRow dRow : mdbDetail.getDataPage(mRow)) | ||
+ | { | ||
+ | if (changeData) | ||
+ | { | ||
+ | mdbMaster.setSelectedRow(mRow.getRowIndex()); | ||
+ | mdbDetail.setSelectedRow(dRow.getRowIndex()); | ||
+ | |||
+ | resetSelection = true; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | finally | ||
+ | { | ||
+ | if (resetSelection) | ||
+ | { | ||
+ | mdbMaster.setSelectedRow(masterRow); | ||
+ | mdbDetail.setSelectedRow(detailRow); | ||
+ | } | ||
+ | } | ||
+ | </file> | ||
+ | |||
+ | ==Iterate with record change== | ||
+ | |||
+ | <file java> | ||
+ | int masterRow = mdbMaster.getSelectedRow(); | ||
+ | int detailRow = mdbDetail.getSelectedRow(); | ||
+ | |||
+ | try | ||
+ | { | ||
+ | for (int i = 0; i < mdbMaster.getRowCount(); i++) | ||
+ | { | ||
+ | mdbMaster.setSelectedRow(i); | ||
+ | |||
+ | for (int j = 0; j < mdbDetail.getRowCount(j); j++) | ||
+ | { | ||
+ | mdbDetail.setSelectedRow(j); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | finally | ||
+ | { | ||
+ | mdbMaster.setSelectedRow(masterRow); | ||
+ | mdbDetail.setSelectedRow(detailRow); | ||
+ | } | ||
+ | </file> |