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> | ||
