Delphi

アクセスレポートの存在チェック

Delphiから、OLEでACCESSのレポートを印刷するときの話。

PCごとに、印刷出来るレポートを制御したく、
単純に、指定のレポート名があるか、ないかを調べたかった。

Ar.SysCmd(acSysCmdGetObjectState, acReport, ARTitle);

まず、acSysCmdGetObjectStateを使う方法。

この場合、
「ファイルが開いていない、存在しない場合に、0を返す」ので、
レポートがあるか、ないか、を調べる目的としては、使えない。

印刷せずに、レポートがあるか、ないかが、知りたい!!

 

ま、2時間ほど、探した結果、見つけた答え。

'AllReports コレクションから検索
For Each obj In dbs.AllReports
  Write #dsn, strPath, strFile, "レポート", obj.Name
Next obj

http://d.hatena.ne.jp/ogohnohito/20140116/p1 より

全レポート情報が引き出せるみたいなので、

これを基に、Delphiのコードを作成

var
? obj: AccessXP.AccessObject;

for i := 0 to AR.CurrentProject.AllReports.Count - 1 do begin
? obj := AR.CurrentProject.AllReports[i];
? if (obj.name = ARTitle) then?
? ? ;
end;

「とりあえず、印刷プレビューしてみて、エラーだったら・・・」
みたいなアホなコードを書かずに、良かった♪

-

Embacardero 買収

embacadero 買収
IDERAによるエンバカデロ・テクノロジーズ買収に関する発表?のメールより

 

Borlandから始まり、Inpriseに社名変更後、
2009年にDelphiなどの開発ツールが、Embarcaderoに移り、

 

Mac信者と同じく、Delphi信者と言われ、

これまで以上に、更新(お布施)という恐ろしいサイクルが始まる
(毎年は、買ってないけど)

 

まったく使ってないけど、
Android、iOS、Linux、Macの同時開発機能は、ほんとすごく、
Delphiの地位は、大きく向上したんですが、

 

2回目だけど、またかよ・・・、ってことですw

-