私のアプリは毎月の経費用です。経費という名前のテーブルには4つの列(タイプ、ExpenseMonth、金額、名前)が含まれています。毎日、経費のデータを挿入します。毎日の経費をセクションに表示するにはどうすればよいですか。テーブルビュー?
e.g :
日付が2-1-2013
この日の費用のみを取得したい場合は、他の日も同様です。
以下のクエリを記述しますが、すべてのセクションで同じデータが取得されます。
const char *sql ="select Name from Expense where strftime('%m-%d',ExpenseMonth) Group by ExpenseMonth order by ExpenseMonth desc";
これは修正後の私のコードです。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
NSMutableArray *Dateo= [[NSMutableArray alloc]init];
NSMutableArray *NAMeA= [[NSMutableArray alloc]init ];
if (sqlite3_open([[AppDelegate getDBPath] UTF8String], &database) == SQLITE_OK) {
const char *sql ="select ExpenseMonth,count(*) as day from Expense where strftime('%m',ExpenseMonth)=strftime('%m','now') group by ExpenseMonth order by ExpenseMonth desc";
sqlite3_stmt *selectstm;
int result = sqlite3_prepare_v2(database, sql, -1, &selectstm, NULL);
if( result== SQLITE_OK) {
while(sqlite3_step(selectstm) == SQLITE_ROW) {
NSString *dateAndTime=[NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstm, 0)];
NSInteger numofday=sqlite3_column_int(selectstm,1);
MaxEntity *DatTime=[[MaxEntity alloc]initWithDate:dateAndTime andnumofDay:numofday];
[Dateo addObject:DatTime];
NSLog(@"Date %@",dateAndTime);
for (NSString *str in Dateo) {
NSString *querySQL =[NSString stringWithFormat:@"select Name, amount from Expense where ExpenseMonth=\"%@\" order by ExpenseMonth desc",dateAndTime];
const char *query_stmt = [querySQL UTF8String];
sqlite3_stmt *selectstmt;
int result = sqlite3_prepare_v2(database, query_stmt, -1, &selectstmt, NULL);
if( result== SQLITE_OK) {
while(sqlite3_step(selectstmt) == SQLITE_ROW) {
NSString *NAMe=[NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 0)];
NSString *Amount=[NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 1)];
MaxEntity *NM=[[MaxEntity alloc]initWithName:NAMe andAmount:Amount];
[NAMeA addObject:NM];
MaxEntity *curItem = [NAMeA objectAtIndex:indexPath.section ]; //Get the model information at row location.
cell.textLabel.text = curItem.name;
NSLog(@"text%@",cell.textLabel.text);
[NAMeA removeLastObject];
[Dateo removeLastObject];
}
}
sqlite3_finalize(selectstmt);
}
}
}
sqlite3_finalize(selectstm);
sqlite3_close(database);
}
return cell;
}
日付を読み取り、日付に応じてデータを選択します。データの取得が完了すると、データベースに再度戻って最初の日付を再度取得し、この行に例外をスローします。Plzは、selectステートメントを停止するのに役立ちます。すべての日付を取得するとき???
MaxEntity *curItem = [NAMeA objectAtIndex:indexPath.section ];