Jetデータベース・テーブルの作成(DAO/OLE経由)で作成した"新規テーブル"というテーブルを元に"新規クエリー"という名前のクエリー作成するサンプルです。
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include <dbdaoint.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Variant vDAO;
Variant vDB;
Variant vQDF;
AnsiString strSql;
AnsiString str = ExtractFilePath(Application->ExeName) + "TEST.mdb";
//クエリーの存在チェックを行い、存在していた場合削除します。
if (JetQueryExists(str,"新規クエリー")){
JetQueryDelete(str,"新規クエリー");
}
strSql = "SELECT FieldText, FieldInteger, FieldLong From 新規テーブル ";
strSql = strSql + "WHERE FieldInteger=1 Or FieldInteger=2;";
vDAO = Variant::CreateObject("DAO.DBEngine.35");
vDB = vDAO.Exec(Function("OpenDatabase") << str);
vQDF = vDB.Exec(Function("CreateQueryDef") << "新規クエリー" << strSql);
vDB.Exec(Procedure("Close"));
}
//---------------------------------------------------------------------------
bool TForm1::JetQueryExists(AnsiString strPath, AnsiString strQueryName)
{
bool bRet = false;
int i;
int iMax;
Variant vDAO;
Variant vDB;
AnsiString str;
vDAO = Variant::CreateObject("DAO.DBEngine.35");
vDB = vDAO.Exec(Function("OpenDatabase") << strPath);
iMax = vDB.Exec(Function("QueryDefs")).Exec(Function("Count"));
for (i=0;i<iMax;i++){
str = vDB.Exec(PropertyGet("QueryDefs")<<i).Exec(PropertyGet("Name"));
if (str == strQueryName){
bRet = true;
break;
}
}
vDB.Exec(Procedure("Close"));
return bRet;
}
//---------------------------------------------------------------------------
bool TForm1::JetQueryDelete(AnsiString strPath, AnsiString strQueryName)
{
Variant vDAO;
Variant vDB;
vDAO = Variant::CreateObject("DAO.DBEngine.35");
vDB = vDAO.Exec(Function("OpenDatabase") << strPath);
vDB.Exec(Function("QueryDefs")).Exec(Procedure("Delete") << strQueryName);
vDB.Exec(Procedure("Close"));
return true;
}
//---------------------------------------------------------------------------
DownLoad bcbtips049.lzh 4KB(BCB5)