失敗しましたが、データベースにクエリを実行して、特定の検査のためにエリアテーブルで最大の「エリア番号」を見つけようとしています。これにより、フォームのテキストを次のエリア番号に設定できます。
データベーステーブルは4つの列で構成されています。_id、inpsection_link、area_number、area-reference。
データベースヘルパークラスで次のものを作成しました(この投稿をガイドとして使用します:SQLiteDatabase.queryメソッド):
public int selectMaxAreaNumber (long inspectionId) {
String inspectionIdString = String.valueOf(inspectionId);
String[] tableColumns = new String[] {
AREA_NUMBER,
"(SELECT max(" + AREA_NUMBER + ") FROM " + AREAS_TABLE + ") AS max"
};
String whereClause = INSPECTION_LINK + " = ?";
String[] whereArgs = new String[] {
inspectionIdString
};
Cursor c = rmDb.query(AREAS_TABLE, tableColumns, whereClause, whereArgs,
null, null, null);
int maxAreaNumber = c.getColumnIndex("max");
return maxAreaNumber;
}
次に、areaEditクラスで次のように呼び出します。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
rmDbHelper = new RMDbAdapter(this);
rmDbHelper.open();
Intent i = getIntent();
inspectionId = i.getLongExtra("Intent_InspectionID", -1);
areaId = i.getLongExtra("Intent_AreaID", -1);
if (areaId == -1) {
nextAreaNumber = rmDbHelper.selectMaxAreaNumber(inspectionId) + 1;
Toast.makeText(getApplicationContext(), String.valueOf(nextAreaNumber),
Toast.LENGTH_LONG).show();
}
setContentView(R.layout.edit_area);
setUpViews();
populateFields();
setTextChangedListeners();
}
ただし、毎回1を返すだけです(データベースに格納されている数よりも多い数であっても)。
Confused.com !! どんな助けでも大歓迎です。