|
|
// *********************************************************
// コンストラクタ
// *********************************************************
App_01::App_01( HWND hDlg )
{
// ダイアログオブジェクト作成
Dlg = new LboxDlg( hDlg );
Dlg->ChangeStyle( WS_MINIMIZEBOX | WS_SYSMENU, 0 );
Dlg->ChangeExStyle( WS_EX_APPWINDOW, 0 );
Dlg->StatusCreate( 0 );
// プログラムID
Dlg->EditSetText( IDC_PROGID, "HB010" );
// 項目属性設定
// プログレスバー
Pbar = new LboxProgressBar();
Pbar->hWnd = GetDlgItem( hDlg, IDC_PROGRESS );
// 参照ダイアログ
Commdlg = new LboxCommdlg();
Commdlg->lpstrFilter = "CSV,*.csv";
bCancel = true;
}
| |
|
|
|
|
// *********************************************************
// インポート初期化
// *********************************************************
BOOL App_01::ImportInit( void )
{
BOOL bRet;
Buff->Resize( 10000 );
Dlg->EditGetText( IDC_INFILE, Item );
nCount = TxtIn.RecordCount( Item, Buff );
Pbar->SetRange( 1, nCount );
Pbar->SetStep( 1 );
Dlg->EditPrintf( IDC_INCOUNT, "%d", nCount );
nCount = 0;
bRet = TxtIn.ReadOpen( Item );
if ( !bRet ) {
Dlg->MsgOk(
"入力ファイルをオープンできませんでした "
);
return false;
}
if ( !CurDb->Connect() ) {
TxtIn.Close();
Dlg->MsgOk(
"データベースの接続に失敗しました"
);
return false;
}
Query->operator = (
"delete from 郵便番号インポート"
);
CurDb->Query( Query );
return true;
}
| |
|
|
|
|
// *********************************************************
// インポート終了
// *********************************************************
void App_01::ImportEnd( void )
{
CurDb->DisConnect();
TxtIn.Close();
Pbar->Reset();
}
| |
|
|
|
|
// *********************************************************
// インポート
// *********************************************************
void App_01::Import( void )
{
Buff->Resize( 10000 );
if ( TxtIn.Get( Buff ) ) {
Buff->RemoveLastchar();
Token.CreateToken( Buff, "," );
Work->operator = (
"insert into 郵便番号インポート"
" values("
);
// 郵便番号(7桁)
if ( Token.nCount < 1 ) {
Item->SetChar( 0, 0 );
}
else {
Item->operator = (Token.Token[0]);
Item->SetChar( 7, 0 );
}
Item->Enclose( "'" );
Work->operator += (Item);
Work->operator += (",");
// 都道府県名(半角カタカナ)
if ( Token.nCount < 2 ) {
Item->SetChar( 0, 0 );
}
else {
Item->operator = (Token.Token[1]);
Item->SetChar( 50, 0 );
}
Item->Enclose( "'" );
Work->operator += (Item);
Work->operator += (",");
// 市区町村名(半角カタカナ)
if ( Token.nCount < 3 ) {
Item->SetChar( 0, 0 );
}
else {
Item->operator = (Token.Token[2]);
Item->SetChar( 50, 0 );
}
Item->Enclose( "'" );
Work->operator += (Item);
Work->operator += (",");
// 町域名(半角カタカナ)
if ( Token.nCount < 4 ) {
Item->SetChar( 0, 0 );
}
else {
Item->operator = (Token.Token[3]);
Item->SetChar( 50, 0 );
}
Item->Enclose( "'" );
Work->operator += (Item);
Work->operator += (",");
// 都道府県名
if ( Token.nCount < 5 ) {
Item->SetChar( 0, 0 );
}
else {
Item->operator = (Token.Token[4]);
Item->SetChar( 50, 0 );
}
Item->Enclose( "'" );
Work->operator += (Item);
Work->operator += (",");
// 市区町村名
if ( Token.nCount < 6 ) {
Item->SetChar( 0, 0 );
}
else {
Item->operator = (Token.Token[5]);
Item->SetChar( 50, 0 );
}
Item->Enclose( "'" );
Work->operator += (Item);
Work->operator += (",");
// 町域名
if ( Token.nCount < 7 ) {
Item->SetChar( 0, 0 );
}
else {
Item->operator = (Token.Token[6]);
Item->SetChar( 50, 0 );
}
Item->Enclose( "'" );
Work->operator += (Item);
Work->operator += (")");
CurDb->Query( Work );
nCount++;
Pbar->Next();
}
else {
bCancel = true;
}
}
| |
|
|
|
|
#include "stdafx.h"
#include "App_01.h"
App_01 *CurApp;
static UINT nTimer;
static int i;
// *********************************************************
// ダイアログの処理
// *********************************************************
LRESULT CALLBACK Dialog_01(
HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
{
switch( message ) {
case WM_INITDIALOG:
bEnd = false;
CurApp = new App_01( hDlg );
Dlg->Disable( IDC_CHECK );
Dlg->Disable( IDC_CANCEL );
// 初期フォーカス
Dlg->EditFocus( IDC_REF );
return FALSE;
case WM_TIMER:
if ( nTimer == (UINT)wParam ) {
KillTimer( hDlg, nTimer );
nTimer = 0;
// タイマーループメイン処理
for( i = 0; i < 20; i++ ) {
CurApp->Import();
if ( CurApp->bCancel ) {
break;
}
}
// タイマーループの終了地点
if ( CurApp->bCancel ) {
CurApp->ImportEnd();
Dlg->Disable( IDC_CANCEL );
Dlg->Enable( IDC_REF );
Dlg->Enable( IDC_CHECK );
Dlg->Enable( IDCANCEL );
break;
}
// タイマーループ NEXT処理
nTimer = SetTimer( hDlg, 1, 10, NULL );
}
break;
case WM_COMMAND:
// 終了
if( LOWORD(wParam) == IDCANCEL ) {
// 実行中は終了できない
if ( !(CurApp->bCancel) ) {
break;
}
bEnd = true;
delete CurApp;
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
// 参照
if ( LOWORD(wParam) == IDC_REF ) {
Buff->SetChar( 0, 0 );
if ( CurApp->Commdlg->OpenFileName( Buff ) ) {
Dlg->EditSetText( IDC_INFILE, Buff );
Dlg->Enable( IDC_CHECK );
Dlg->EditSetText( IDC_INCOUNT, "" );
}
}
// 実行
if ( LOWORD(wParam) == IDC_CHECK ) {
// タイマーループの開始処理
if ( !(CurApp->ImportInit() ) ) {
break;
}
CurApp->bCancel = false;
Dlg->Disable( IDCANCEL );
Dlg->Disable( IDC_REF );
Dlg->Disable( IDC_CHECK );
Dlg->Enable( IDC_CANCEL );
// タイマーループの開始地点
nTimer = SetTimer( hDlg, 1, 1, NULL );
}
// キャンセル
if ( LOWORD(wParam) == IDC_CANCEL ) {
// タイマーループ中止指令処理
if ( !(CurApp->bCancel) ) {
CurApp->bCancel = true;
}
}
break;
}
return FALSE;
}
| |
|
|
|