Mercurial > mercurial > hgweb_searcher03.cgi
diff src/db.cpp @ 13:bbd65edf71d4
Implement Hhs DB update dialog.
author | pyon@macmini |
---|---|
date | Sat, 24 May 2014 10:25:13 +0900 |
parents | dfcf8c973219 |
children | a2ad87cad48b |
line wrap: on
line diff
--- a/src/db.cpp Sun May 18 19:49:15 2014 +0900 +++ b/src/db.cpp Sat May 24 10:25:13 2014 +0900 @@ -1,11 +1,67 @@ // Filename : db.cpp -// Last Change: 02-May-2014. +// Last Change: 23-May-2014. // +#include <wx/tokenzr.h> #include "db.h" #include "wx/wxsqlite3.h" //********** HHS-DB **********// +/* 被保険者台帳を更新 */ +void UpdateHhs( wxArrayString info ) +{ + long n = info.GetCount(); + + wxProgressDialog pd( wxT("進行状況"), wxT("処理開始..."), n, NULL, wxPD_APP_MODAL|wxPD_REMAINING_TIME|wxPD_AUTO_HIDE ); + pd.SetSize( wxSize( 320, 140 ) ); + + wxString gszFile = wxGetCwd() + wxFILE_SEP_PATH + wxT("db") + wxFILE_SEP_PATH + wxT("hhs.db"); + wxRemoveFile( gszFile ); + + wxSQLite3Database hhsdb; + hhsdb.Open( gszFile ); + hhsdb.Begin(); + + wxString sql = wxT( "PRAGMA foregin_keys=OFF" ); + wxSQLite3Statement stmt = hhsdb.PrepareStatement( sql ); + wxSQLite3ResultSet q = stmt.ExecuteQuery(); + + sql = wxT( "CREATE TABLE 'hhs_master' ( hhsno text PRIMARY KEY, birth text, name text, kana text, addr text, sex text )" ); + stmt = hhsdb.PrepareStatement( sql ); + q = stmt.ExecuteQuery(); + + wxString hhsno, birth, name, kana, addr, sex; + for ( long i = 0; i < n; i++ ) { + + info[i].Replace( wxT("\""), wxEmptyString, true ); + + wxStringTokenizer token( info[i], wxT(",") ); + hhsno = token.GetNextToken(); + birth = token.GetNextToken(); + name = token.GetNextToken(); + kana = token.GetNextToken(); + addr = token.GetNextToken(); + sex = token.GetNextToken(); + + stmt = hhsdb.PrepareStatement( "INSERT INTO hhs_master VALUES( ?, ?, ?, ?, ?, ? );" ); + stmt.Bind( 1, hhsno ); + stmt.Bind( 2, birth ); + stmt.Bind( 3, name ); + stmt.Bind( 4, kana ); + stmt.Bind( 5, addr ); + stmt.Bind( 6, sex ); + stmt.ExecuteQuery(); + stmt.Finalize(); + + if ( i % 1000 == 0 ) { + pd.Update( i, wxString::Format( wxT("%d / %d done."), i, n ) ); + } + } + + hhsdb.Commit(); + hhsdb.Close(); +} + /* 被保番で被保険者情報を取得 */ wxString GetHhsInfoByHhsNo( wxString hhsno ) {