예제 #1
0
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);
}
예제 #2
0
	void Work (int value)           { Put_Field (work, value); }
예제 #3
0
	void Link (int value)           { Put_Field (link, value); }
예제 #4
0
	void Person (int value)         { Put_Field (person, value); }
예제 #5
0
	void Relate (int value)         { Put_Field (relate, value); }
예제 #6
0
	void   Leg_Length (double value)  { Put_Field (leg_length, value); }
예제 #7
0
	void   Leg_Impedance (int value)  { Put_Field (leg_imp, value); }
예제 #8
0
	void   Walk (Dtime value)         { Put_Field (walk, value); }
예제 #9
0
	void   Drive (Dtime value)        { Put_Field (drive, value); }
예제 #10
0
	void   Arrive (Dtime value)       { Put_Field (arrive, value); }
예제 #11
0
	void   Activity (Dtime value)     { Put_Field (activity, value); }
예제 #12
0
	void   Depart (Dtime value)       { Put_Field (depart, value); }
예제 #13
0
 void Diff (int period, double value)    {
     Put_Field (Index3 (period), value);
 }
예제 #14
0
 void Data2 (int period, double value)   {
     Put_Field (Index2 (period), value);
 }
예제 #15
0
	void   Leg_ID (int value)         { Put_Field (leg_id, value); }
예제 #16
0
	void   Transit (Dtime value)      { Put_Field (transit, value); }
예제 #17
0
	void   Leg_Time (Dtime value)     { Put_Field (leg_time, value); }
예제 #18
0
	void   Wait (Dtime value)         { Put_Field (wait, value); }
예제 #19
0
	void   Leg_Cost (double value)    { Put_Field (leg_cost, value); }
예제 #20
0
	void   Other (Dtime value)        { Put_Field (other, value); }
예제 #21
0
	void Household (int value)      { Put_Field (hhold, value); }
예제 #22
0
	void   Cost (double value)        { Put_Field (cost, value); }
예제 #23
0
	void Age (int value)            { Put_Field (age, value); }
예제 #24
0
	void   Impedance (int value)      { Put_Field (impedance, value); }
예제 #25
0
	void Gender (int value)         { Put_Field (gender, value); }
예제 #26
0
	void   Leg_Mode (int value)       { Put_Field (leg_mode, value); }
예제 #27
0
	void Drive (int value)          { Put_Field (drive, value); }
예제 #28
0
	void   Leg_Type (int value)       { Put_Field (leg_type, value); }
예제 #29
0
	void Dir (int value)            { Put_Field (dir, value); }
예제 #30
0
	void   Bearing (double value)     { Put_Field (bearing, value); }