VC++ DBアクセス( lightbox ライブラリでダイアログ処理 )


  lightbox ライブラリのインストールと スケルトンのダウンロード




このダイアログアプリケーションは、デスクトップをオーナーウインドウとした、
printf 可能なコンソールアプリケーションです。
( データベースアクセス可能なようにカスタマイズしています )

printf 可能なダイアログアプリケーションプロジェクトの設定は こちら を参照してください。

http://winofsql.jp/download/lightbox.lzh をダウンロードして解凍後、setup.exe を実行します。
うまくいかない場合は、ヘッダーファイルとライブラリを VC++ の該当ディレクトリに直接コピーします。

http://winofsql.jp/download/printfDialog.lzh がスケルトンです。

printfDialog.dsw を開いて下さい。

初期状態では、C:\TEMP\ado\販売管理B.mdb を開きます。

↓販売管理B.mdb
http://winofsql.jp/download/hanbaib.lzh

  

#include <afx.h>
#include <lightbox.h>
#include "resource.h"
#include "db.h"

#pragma comment( lib, "lightbox.lib" )
#pragma comment( lib, "shlwapi.lib" )

LRESULT CALLBACK PrintfDialog( HWND, UINT, WPARAM, LPARAM );

char ConnectionString[1024] =
"Provider=Microsoft.Jet.OLEDB.4.0;"
"Data Source=C:\\TEMP\\ado\\販売管理B.mdb;";

ADO_MAIN(ConnectionString)

	DialogBox(
		NULL,
		(LPCTSTR)IDD_DIALOG,
		::GetDesktopWindow(),
	(DLGPROC)PrintfDialog);

ADO_END


LboxDlg *Dlg;
// *********************************************************
// ダイアログ
// *********************************************************
LRESULT CALLBACK PrintfDialog(
HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
{
	switch( message ) {
		case WM_INITDIALOG:

			Dlg = new LboxDlg( hDlg );
			Dlg->ChangeIcon( 104 );
			Dlg->StatusCreate( 0 );

			// ダイアログを通常ウインドウのスタイルに変更
			Dlg->ChangeStyle(
				WS_MINIMIZEBOX |
				WS_SYSMENU |
				WS_SIZEBOX |
				WS_MAXIMIZEBOX,
				0 
			);
			Dlg->ChangeExStyle( WS_EX_APPWINDOW, 0 );

			return TRUE;

		case WM_COMMAND:
			if( LOWORD(wParam) == IDOK ) {
				printf("表示\n");
				return TRUE;
			}
			if( LOWORD(wParam) == IDCANCEL ) {
				EndDialog(hDlg, LOWORD(wParam));
				delete Dlg;
				return TRUE;
			}
			break;
	}
	return FALSE;
}
  









  リストボックスにテーブル一覧を表示する




WM_INITDIALOG で呼び出します
呼び出しは、引数の定義が実体参照で記述されている為、実体渡しする為に * を Dlg の前に付けます。

LoadTableList( *Dlg );

  

void LoadTableList( LboxDlg &Dlg )
{
	Dlg.ListReset( IDC_LIST1 );

	// テーブル一覧の開始
	_variant_t vValue;
	_bstr_t StringBuffer;

	pRs = pCn->OpenSchema( adSchemaTables );

	while( !(pRs->EndOfFile) ) {

			vValue = pRs->Fields->GetItem("TABLE_NAME")->Value;
			StringBuffer.operator = (vValue);
			Dlg.ListAdd( IDC_LIST1, (LPTSTR)StringBuffer );
			pRs->MoveNext();

	}

	pRs->Close();

}
  



  CSV 出力

出力するファイルの参照
  

if( LOWORD(wParam) == IDC_BUTTON2 ) {
	LboxCommdlg Comm;
	LboxString Path;
	Comm.lpstrFilter = "CSV,*.csv";
	if ( Comm.SaveFileName( Path ) ) {
		Dlg->EditSetText( IDC_EDIT1, Path );
	}
}
  

文字列の処理として、4種類のオブジェクトを使用しています。

1) CString
大きなバッファを確保するのに使用しています。文字列を処理する為の本来の CString の機能は使用していません。

2) LboxString
タイアログ処理に lightbox ライブラリを使用している為、通常の文字列処理をこのクラスで行っています。

3) _variant_t
データベース処理に要求されるデータ型として使用しています。本来いろいろな型を持ちますが、
ここでは文字列として使用されています。

4) _bstr_t
データベースより戻される文字列の為の型として使用しています。
実際に使う場合は (LPTSTR) にキャストして使用します。

CSV出力
  

void CsvOut( LboxDlg &Dlg )
{
	LboxString Work;
	LboxString Table;

	// 出力ファイルパス
	Dlg.EditGetText( IDC_EDIT1, Work );
	if ( Work == "" ) {
		Dlg.MsgOk( "出力ファイルを指定して下さい   " );
		return;
	}

	// 対象テーブル
	if ( 0 >= Dlg.ListSelectedGetText( IDC_LIST1, Table ) ) {
		Dlg.MsgOk( "対象テーブルを選択して下さい   " );
		return;
	}

	// SQL
	Table = "select * from " + Table;

	// データ取得の為の大きなバッファを CString で確保
	CString strBuffer;
	LPTSTR szBuff = strBuffer.GetBufferSetLength( 4096 );

	// データベース処理用バッファ
	_variant_t VBuff;
	_bstr_t BBuff;

	// Query は variant で渡す
	VBuff = (LPTSTR)Table;

	ADO_QUERY(VBuff)

	// ファイルポインタを定義
	FILE *fp;

	// ファイルを開く
	fp = fopen( (LPTSTR)Work, "wt" );
	if ( NULL == fp ) {
		Dlg.MsgOk( "%s を OPEN できませんでした   ", (LPTSTR)Work );
		return;
	}

	// ループ用変数
	int i,nField;

	// フィールド数取得
	nField = pRs->Fields->Count;

	// チェックボックスの処理
	if ( Dlg.ButtonIsCheck( IDC_CHECK1 ) ) {
		// 列名取得
		VBuff = pRs->Fields->GetItem((LONG)0)->Name;
		// bstr に変換
		BBuff = VBuff;
		// LboxString の ファイル出力用バッファにセット
		Work = (LPTSTR)BBuff;

		for( i = 1; i < nField; i++ ) {
			VBuff = pRs->Fields->GetItem((LONG)i)->Name;
			BBuff = VBuff;
			Work += ",";
			Work += (LPTSTR)BBuff;
		}
		Work += "\n";

		// ファイル書き込み
		fputs( (LPTSTR)Work, fp );
	}

	QUERY_LOOP

		// 最初のフィールド
		QUERY_GET(((LONG)0),szBuff)
		Work = szBuff;

		for( i = 1; i < nField; i++ ) {
			QUERY_GET(((LONG)i),szBuff)
			Work += ",";
			Work += szBuff;
		}
		Work += "\n";
		fputs( (LPTSTR)Work, fp );

	QUERY_END

	// 出力ファイルを閉じる
	fclose( fp );
	// CString で確保していた領域を開放
	strBuffer.ReleaseBuffer();
	// レコードセットを開放
	pRs->Close();

	Dlg.MsgOk( "CSV 出力が終了しました   " );

}
  






yahoo  google  MSDN  MSDN(us)  WinFAQ  Win Howto  tohoho  ie_DHTML  vector  wdic  辞書  天気 


[dbaccess]
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
24/04/20 03:54:08
InfoBoard Version 1.00 : Language=Perl

1 BatchHelper COMprog CommonSpec Cprog CprogBase CprogSAMPLE CprogSTD CprogSTD2 CprogWinsock Cygwin GameScript HTML HTMLcss InstallShield InstallShieldFunc JScript JScriptSAMPLE Jsfuncs LLINK OldProg OracleGold OracleSilver PRO PRObrowser PROc PROconePOINT PROcontrol PROftpclient PROjscript PROmailer PROperl PROperlCHAT PROphp PROphpLesson PROphpLesson2 PROphpLesson3 PROphpfunction PROphpfunctionArray PROphpfunctionMisc PROphpfunctionString PROsql PROvb PROvbFunction PROvbString PROvbdbmtn PROvbonepoint PROwebapp PROwin1POINT PROwinSYSTEM PROwinYOROZU PROwindows ProjectBoard RealPHP ScriptAPP ScriptMaster VBRealtime Vsfuncs a1root access accreq adsi ajax amazon argus asp aspSample aspVarious aspdotnet aw2kinst cappvariety centura ckeyword classStyle cmaterial cmbin cmdbapp cmenum cmlang cmlistbox cmstd cmstdseed cmtxt cs daz3d db dbCommon dbaccess dnettool dos download flex2 flex3 flex4 framemtn framereq freeWorld freesoft gimp ginpro giodownload google hdml home hta htmlDom ie9svg install java javaSwing javascript jetsql jquery jsp jspTest jspVarious lightbox listasp listmsapi listmsie listmsiis listmsnt listmspatch listmsscript listmsvb listmsvc memo ms msde mysql netbeans oraPlsql oracle oracleWiper oraclehelper orafunc other panoramio pear perl personal pgdojo pgdojo_cal pgdojo_holiday pgdojo_idx pgdojo_ref pgdojo_req php phpVarious phpguide plsql postgres ps r205 realC realwebapp regex rgaki ruby rule sboard sc scprint scquest sdb sdbquest seesaa setup sh_Imagick sh_canvas sh_dotnet sh_google sh_tool sh_web shadowbox shgm shjquery shvbs shweb sjscript skadai skywalker smalltech sperl sqlq src systemdoc tcpip tegaki three toolbox twitter typeface usb useXML vb vbdb vbsfunc vbsguide vbsrc vpc wcsignup webanymind webappgen webclass webparts webtool webwsh win8 winofsql wmi work wp youtube