GUI バッチ

  コンストラクタ



  
// *********************************************************
// コンストラクタ
// *********************************************************
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();
}
  



  1回のインポート処理

  
// *********************************************************
// インポート
// *********************************************************
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;
	}
}
  



  Dialog_01

  
#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;
}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ