DbRecs関数の使い方
お世話になっております。
DbRecs関数を使いたいのですが、上手くレコードの件数が入ってきません。
下記のように件数を取得するだけのPGを作成しました。戻り値は変数です。
何か注意点などありましたら教えて頂きたいです。

-
yamamotoさん、
同じようにプログラムを作って試してみましたが、ちゃんと動きましたよ。
使用したのはMagic xpa 4.8.1ですが、4Plusでも同じように動くと思います。 -
DbRecs(3,'')よりは
DbRecs(’3'DSource,'')がいいですよ。
DbRecs(3,'')をお勧めしないのは
データソース3番がデータリポジトリ上の番号が例えばデータソース4番に変わった時に
プログラム側が追随してくれないからです。
DbRecs(’3'DSource,'')としておけば、データリポジトリの4番に変わっても
プログラム内の式が自動で
DbRecs(’4'DSource,'')に変更されます。
式を書く時、楽する為に、
DbRecs(’3'DS,'')と入力すると、自動で
DbRecs(’3'DSource,'')になってくれると思います。
それと自分の場合は、アクションではなく
項目更新 件数把握変数 式=DbRecs(’3'DSource,'')とする事が多いです。 -
値を受け取るとかなら、項目更新の方がいいかなと思います。
私はアクションは、画面上の操作などに使う事が多いです。
アクション KBPUT('次行'Event・・・など
もっとも今はそれよりか、イベント 次行などの方を用います。
もっとふさわしい説明があるとか、異なる御意見の方おられましたらお教えください。
よろしくお願いいたします。 -
tandaさん、お試しいただきありがとうございます。
使い方としては合っているのですね。タスク設定やトランザクションは関係ないでしょうか?
nkmtさん、コメントありがとうございます。
一度、項目更新で作成してみます!
-
yamamotoさん、
はい、使い方は合っていますよ。yamamotoさんのやり方が最新の方式だと思います。
タスク設定やトランザクションは関係ないですね。実際にレコードは何件あるのでしょうか?
-
向学の為にtandaさんに教えて頂きたいのですが
項目更新 変数 式=DBRECS よりは
アクション DBRECS 戻値=変数 の方が新方式とか
なお良いとかそういう事なのでしょうか。 -
もちろん、従来通りのやり方の「項目更新」でも間違いではないですから、全然問題ないですよ。実行結果は同じになりますし、パフォーマンスもおそらく同じでしょうね。
yamamotoさんが、「戻り値」を使った新方式に着眼された点はすばらしいことだと思います。
Magicはどんどん進化していますので、別のやり方に付いていくのは大変でしょうけど、感動は尽きないですね。
※ここはyamamotoさんのスレッドですので、更なる質問がありましたら、新しいスレッドを立てて質問されたほうがいいですね。
-
tandaさん どうもありがとうございました。
-
ちなみにdbMAGIC V8では
アクション DBRECS('1'FILE,'') 戻り値=数値変数 は書けましたが
F8 チェックを行うと、タイプが合っていません となりました。
▼xpa 4.7などでは以下のどちらでも良さそうですね。
項目更新 変数 式=DBRECS
アクション DBRECS 戻値=変数
※余談でした。
-
tandaさん、コメントありがとうございます。
レコードはデータリポジトリからAPG実行で直接3件入力しております。
nkmtさん、コメントありがとうございます。
nkmtさんのご質問のおかげでMagicの歴史を知ることができました。
下記、両方試してみます。
項目更新 変数 式=DBRECS
アクション DBRECS 戻値=変数 -
yamamotoさん、
ひょっとして、トランザクション中のレコード件数を見にいっているということはありませんか?
入力が確定したテーブルで試していますか?
まずは、APG程度の簡単なプログラムでテストされることをお勧めします。
-
新方式ですから、わざわざMagicの古いバージョンで試しても、エラーになる可能性は大でしょうね。
-
tandaさん、コメントありがとうございます。
APGでの直書きデータなので確定していると思っているのですがAPG入力でもトランザクション中ということがあるのでしょうか?
また、PGは件数を表示するだけの単純なPGでロジックには上記画像以上のものはありません。
ちなみに実行画面の表示は下記画像のように「・・」となっています。これは何なんでしょうか、、、。

-
nkmtさんに伺った項目更新方式でも同様の「・・」表示でした。
-
yamamotoさん、
「・・」の部分のフォームの定義画面はどうなっていますか?(プロパティも含めて)
F8チェックは行っていますか?
-
変数を作り直して、その新変数に値を格納、表示してみてはいかがですか?
数値型変数ですかね? -
※誰も求めていないかもしれませんが実験してみました。^^;
アクション DBRECS 戻り値=数値型変数
dbMAGIC V8 F8チェックエラー
V9 未調査
V9 Plus F8チェックエラー
V10、V1 未調査
V1 Plus 可能 -
yamamotoさん、
どうやら、yamamotoさんがこの方式に気が付いた第1人者みたいですね。
おめでとうございます!
※人間工学的には、yamamotoさんの方式のほうが理にかなっていますね。
-
yamamotoさん、
解決してよかったですね。
ちなみに、私はプログラムを1文字でも修正したら、F8チェックを掛けるようにしています。
-
tandaさん、F8チェック心掛けます。
ついつい忘れてしまいますね、、、。
-
yamamotoさん、
F8チェックを怠ると、.edp ファイルが致命的に壊れる場合もあり得ますので、徹底的に習慣化したほうがいいですよ。
私はセミナーでも常に、「はい、ではF8でチェックをして、F7で実行してみましょう」と300回くらい繰り返しています。
-
こんばんは。
アクション DBRECS 戻り値=文字型変数
となっていたようですが、F8 チェック、F7 実行としていれば
原因判明していた訳ですので、今後はほんとF8、F7 の癖をつけるのがいいですね。
我々はその操作をしております。 -
tandaさん、nkmtさんコメントありがとうございます。
仰る通りですね。以後気を付けます。
サインインしてコメントを残してください。
コメント
24件のコメント