bool Db_Base::Input_Record (void) { if (File_Format () == SQLITE3) { int i, j, num, lvalue, result; const unsigned char *text; double dvalue; Db_Field *fld; //---- get the next record ---- if (Nested ()) { if (new_nest_flag) { new_nest_flag = false; sqlite3_reset (read_nest); sqlite3_bind_int (read_nest, 1, parent_id); } result = sqlite3_step (read_nest); } else { Record_Number (0); parent_id = Record_Number (); new_nest_flag = true; sqlite3_reset (read_stmt); sqlite3_bind_int (read_stmt, 1, parent_id); result = sqlite3_step (read_stmt); } if (result == SQLITE_DONE) return (false); if (result != SQLITE_ROW) { exe->Warning ("SQLITE3 Read Problem: ") << sqlite3_errmsg (db_file); } num = Num_Fields (); for (i=0, j=0; i < num; i++) { fld = Field (i); if (Nested () != fld->Nested ()) continue; if (Nested ()) { if (fld->Type () == DB_INTEGER) { lvalue = sqlite3_column_int (read_nest, j+1); Put_Field (i, lvalue); } else if (fld->Type () == DB_DOUBLE) { dvalue = sqlite3_column_double (read_nest, j+1); Put_Field (i, dvalue); } else { text = sqlite3_column_text (read_nest, j+1); Put_Field (i, (char *) text); } } else { if (fld->Type () == DB_INTEGER) { lvalue = sqlite3_column_int (read_stmt, j); Put_Field (i, lvalue); } else if (fld->Type () == DB_DOUBLE) { dvalue = sqlite3_column_double (read_stmt, j); Put_Field (i, dvalue); } else { text = sqlite3_column_text (read_stmt, j); Put_Field (i, (char *) text); } } j++; } } else if (File_Format () == CSV_DELIMITED) { Strings fields; Db_Field *fld; int count = String (Record_String ()).Parse (fields, Delimiters ()); for (int i=0; i < Num_Fields (); i++) { fld = Field (i); if (Nested () == fld->Nested ()) { if (fld->Offset () <= count) { fld->Buffer (fields [fld->Offset () - 1]); } else { fld->Buffer (""); } } } } return (true); }
void Work (int value) { Put_Field (work, value); }
void Link (int value) { Put_Field (link, value); }
void Person (int value) { Put_Field (person, value); }
void Relate (int value) { Put_Field (relate, value); }
void Leg_Length (double value) { Put_Field (leg_length, value); }
void Leg_Impedance (int value) { Put_Field (leg_imp, value); }
void Walk (Dtime value) { Put_Field (walk, value); }
void Drive (Dtime value) { Put_Field (drive, value); }
void Arrive (Dtime value) { Put_Field (arrive, value); }
void Activity (Dtime value) { Put_Field (activity, value); }
void Depart (Dtime value) { Put_Field (depart, value); }
void Diff (int period, double value) { Put_Field (Index3 (period), value); }
void Data2 (int period, double value) { Put_Field (Index2 (period), value); }
void Leg_ID (int value) { Put_Field (leg_id, value); }
void Transit (Dtime value) { Put_Field (transit, value); }
void Leg_Time (Dtime value) { Put_Field (leg_time, value); }
void Wait (Dtime value) { Put_Field (wait, value); }
void Leg_Cost (double value) { Put_Field (leg_cost, value); }
void Other (Dtime value) { Put_Field (other, value); }
void Household (int value) { Put_Field (hhold, value); }
void Cost (double value) { Put_Field (cost, value); }
void Age (int value) { Put_Field (age, value); }
void Impedance (int value) { Put_Field (impedance, value); }
void Gender (int value) { Put_Field (gender, value); }
void Leg_Mode (int value) { Put_Field (leg_mode, value); }
void Drive (int value) { Put_Field (drive, value); }
void Leg_Type (int value) { Put_Field (leg_type, value); }
void Dir (int value) { Put_Field (dir, value); }
void Bearing (double value) { Put_Field (bearing, value); }