C++Builder Tips


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::FormCreate(TObject *Sender)
{
  AnsiString str = ExtractFilePath(Application->ExeName) + "TEST.mdb";

  bool bRet = CtlQueryNameAdd(ListBox1,str);
}
//---------------------------------------------------------------------------

bool TForm1::CtlQueryNameAdd(TObject *Sender, AnsiString strPath)
{
  AnsiString strClassName = Sender->ClassName();
  TListBox* lst;

  if (strClassName == "TListBox"){
    lst = (TListBox*)Sender;
  }else{
    return false;
  }

  int i;
  int iMax;
  int iAttributes;
  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"));
    lst->Items->Add(str);
  }

  vDB.Exec(Procedure("Close"));
  return true;
}


DownLoad bcbtips056.lzh 10KB(BCB5)