lightbox ライブラリのインストールと スケルトンのダウンロード |
|
|
#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;
}
| |
|
|
|
|
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();
}
| |
|
|
|
出力するファイルの参照
|
if( LOWORD(wParam) == IDC_BUTTON2 ) {
LboxCommdlg Comm;
LboxString Path;
Comm.lpstrFilter = "CSV,*.csv";
if ( Comm.SaveFileName( Path ) ) {
Dlg->EditSetText( IDC_EDIT1, Path );
}
}
| |
|
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 出力が終了しました " );
}
| |
|
|
|