bool Db_Base::Output_Record (void) { if (File_Format () == SQLITE3) { int i, j, num, lvalue; double dvalue; string svalue; Db_Field *fld; num = Num_Fields (); for (i=0, j=1; i < num; i++) { fld = Field (i); if (Nested () != fld->Nested ()) continue; if (Nested ()) { if (fld->Type () == DB_INTEGER) { Get_Field (i, lvalue); sqlite3_bind_int (insert_nest, j+1, lvalue); } else if (fld->Type () == DB_DOUBLE) { Get_Field (i, dvalue); sqlite3_bind_double (insert_nest, j+1, dvalue); } else { Get_Field (i, svalue); sqlite3_bind_text (insert_nest, j+1, svalue.c_str (), -1, SQLITE_TRANSIENT); } } else { if (fld->Type () == DB_INTEGER) { Get_Field (i, lvalue); sqlite3_bind_int (insert_stmt, j, lvalue); } else if (fld->Type () == DB_DOUBLE) { Get_Field (i, dvalue); sqlite3_bind_double (insert_stmt, j, dvalue); } else { Get_Field (i, svalue); sqlite3_bind_text (insert_stmt, j, svalue.c_str (), -1, SQLITE_TRANSIENT); } } j++; } if (Nested ()) { sqlite3_bind_int (insert_nest, 1, parent_id); if (sqlite3_step (insert_nest) != SQLITE_DONE) { exe->Warning ("Inserting Database: ") << sqlite3_errmsg (db_file); } if (sqlite3_reset (insert_nest) != SQLITE_OK) { exe->Warning ("Inserting Database: ") << sqlite3_errmsg (db_file); } } else { if (sqlite3_step (insert_stmt) != SQLITE_DONE) { exe->Warning ("Inserting Database: ") << sqlite3_errmsg (db_file); } parent_id = (int) sqlite3_last_insert_rowid (db_file); if (sqlite3_reset (insert_stmt) != SQLITE_OK) { exe->Warning ("Inserting Database: ") << sqlite3_errmsg (db_file); } } } else if (File_Format () == CSV_DELIMITED) { int i, j, max; string *ptr; char *delimiter, *record; bool first = true; Db_Field *fld; delimiter = Delimiters (); record = Record_String (); for (i=0; i < Num_Fields (); i++) { fld = Field (i); if (Nested () == fld->Nested ()) { ptr = &fld->Buffer (); max = (int) ptr->size (); if (max > fld->Width ()) max = fld->Width (); if (first) { first = false; } else { *record++ = *delimiter; } for (j=0; j < max; j++) { *record++ = (*ptr) [j]; } *record = '\0'; } } Set_Size (); } return (true); }