コンテキストID
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
nobukoshi802
投稿数: 118
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
MAGICからグローバルテンポラリーテーブルを利用する場合
ファイル辞書のテーブル名の頭に、##を付けるだけです。
予備知識として、テンポラリーテーブルは
テーブル名の頭に# だけです。
ファイル辞書のテーブル名の頭に、##を付けるだけです。
予備知識として、テンポラリーテーブルは
テーブル名の頭に# だけです。
投票数:0
平均点:0.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
nullさん、レス有難うございます。
マスタや伝票などの排他制御をプログラムレベルで行わないと
いけない場面がいくつかありましたので...。
マスタの○番は誰がいつから捕まえてます、
という情報を作ったり、削除したりしているので、
コンテキストIDみたいなものが1発で使えて便利だと
思ったのですが、単なる使い方間違いとはお笑い物ですが、
はっきりして良かったです。別な方法を考えます。
マスタや伝票などの排他制御をプログラムレベルで行わないと
いけない場面がいくつかありましたので...。
マスタの○番は誰がいつから捕まえてます、
という情報を作ったり、削除したりしているので、
コンテキストIDみたいなものが1発で使えて便利だと
思ったのですが、単なる使い方間違いとはお笑い物ですが、
はっきりして良かったです。別な方法を考えます。
投票数:0
平均点:0.00
null
投稿数: 191
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
1.9g では OK で 1.9g2 だと駄目ということだと勘違いしていました。
(1.9g2 の) 実行環境だと 1 が返るということですね。
名称付けるの面倒だったので、CtxGetID('') でも再現しました。
ちなみに、1.8c でも同じ結果になるのでそう言うものなんだと思います。
> 普通のクラサバでは使っちゃ駄目なんでしょうね?
恐らくそうだと思います。
結果が 1 になるのは謎ですが、クラサバってことは ecf が実行されるのは
個々のクライアントPC 上になるはずなので、仮に取得出来ても必ず一意にならないと言えます。
私も今まで正しい値が帰ってくるもんだと勘違いしていましたが、
クラサバの場合は別の方法を取るしかない気がしてきました。
IP とか MAC に並列実行考慮の連番みたいな感じに。
(1.9g2 の) 実行環境だと 1 が返るということですね。
名称付けるの面倒だったので、CtxGetID('') でも再現しました。
ちなみに、1.8c でも同じ結果になるのでそう言うものなんだと思います。
> 普通のクラサバでは使っちゃ駄目なんでしょうね?
恐らくそうだと思います。
結果が 1 になるのは謎ですが、クラサバってことは ecf が実行されるのは
個々のクライアントPC 上になるはずなので、仮に取得出来ても必ず一意にならないと言えます。
私も今まで正しい値が帰ってくるもんだと勘違いしていましたが、
クラサバの場合は別の方法を取るしかない気がしてきました。
IP とか MAC に並列実行考慮の連番みたいな感じに。
投票数:0
平均点:0.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
オンラインタスクのタスク前処理で
CtxSetName('MSTMNTSHOUHINGUN')
その直後に
エラー 警告 Str(CtxGetId('MSTMNTSHOUHINGUN'),'18')
実行すると 490689527550952190 が表示されます。
(開発版で試しました。)
とここまで書いて、あらためてヘルプを見て
初めて気付いたのですが、これって
アプリケーションサーバー関数ってなってるので
普通のクラサバでは使っちゃ駄目なんでしょうね...!?
(きっとそうなんでしょうね。)
CtxSetName('MSTMNTSHOUHINGUN')
その直後に
エラー 警告 Str(CtxGetId('MSTMNTSHOUHINGUN'),'18')
実行すると 490689527550952190 が表示されます。
(開発版で試しました。)
とここまで書いて、あらためてヘルプを見て
初めて気付いたのですが、これって
アプリケーションサーバー関数ってなってるので
普通のクラサバでは使っちゃ駄目なんでしょうね...!?
(きっとそうなんでしょうね。)
投票数:0
平均点:0.00
null
投稿数: 191
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
コンテキストID が 1 になったとのことですが、
どのようにして、コンテキストID を確認しているんでしょうか?
ほぼ同じようにしても再現しないので、判らないのですが、
コンテキストID の取得方法とかに何かヒントがあれば
再現する人もいるかもと思いまして。
どのようにして、コンテキストID を確認しているんでしょうか?
ほぼ同じようにしても再現しないので、判らないのですが、
コンテキストID の取得方法とかに何かヒントがあれば
再現する人もいるかもと思いまして。
投票数:0
平均点:0.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
dbMAGIC V8の頃は、端末番号でユニークでしたが、V1 Plusでは並行実行もあるのでコンテキストIDを使いたかったのですが。
使い方間違いなのか何なのか。
日付+時刻+端末番号でユニーク化は実質可能そうですけどね。
1206121311777とか・・・
このやり方だとユニーク番号を生成する独自関数や
各PGにそれを格納する変数などが必要になりますね。
もう1度コンテキストIDの使い方に間違いがないか確認してみます。
使い方間違いなのか何なのか。
日付+時刻+端末番号でユニーク化は実質可能そうですけどね。
1206121311777とか・・・
このやり方だとユニーク番号を生成する独自関数や
各PGにそれを格納する変数などが必要になりますね。
もう1度コンテキストIDの使い方に間違いがないか確認してみます。
投票数:0
平均点:0.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
レス有難うございます。
グローバルテンポラリーテーブルって知らないのでネットで調べてみます!
グローバルテンポラリーテーブルって知らないのでネットで調べてみます!
投票数:0
平均点:0.00
nobukoshi802
投稿数: 118
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
コンテキストIDを利用したいのは、
実行環境で、ユニーク番号を取得する方法と思います。
実行環境で、ユニーク番号を取得する方法として
MS-SQLを利用しているなら、グローバルテンポラリーテーブルを
利用すると便利です。
ログイン毎に、番号を設定します。
グローバルテンポラリーなので、セッションが切れれば
レコードが消えるので、リッチ接続判定にも利用出来ます。
実行環境で、ユニーク番号を取得する方法と思います。
実行環境で、ユニーク番号を取得する方法として
MS-SQLを利用しているなら、グローバルテンポラリーテーブルを
利用すると便利です。
ログイン毎に、番号を設定します。
グローバルテンポラリーなので、セッションが切れれば
レコードが消えるので、リッチ接続判定にも利用出来ます。
投票数:0
平均点:0.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
1.9gで開発し、ecfファイルを作成しています。
実行環境は1.9g2です。
ecfは、両者で互換はあるようです。
実行環境は1.9g2です。
ecfは、両者で互換はあるようです。
投票数:0
平均点:0.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
違いと言えば CtxSetName('売上伝票入力') の方は
並行実行で動かしています。
CtxSetName('商品群マスタメンテ') の方は
並行実行ではありません。
CtxSetName('商品群マスタメンテ') を
CtxSetName('MSTMNTSHOUHINGUN') に変えても
コンテキストIDは 1 しか帰ってこないです。
並行実行で動かしています。
CtxSetName('商品群マスタメンテ') の方は
並行実行ではありません。
CtxSetName('商品群マスタメンテ') を
CtxSetName('MSTMNTSHOUHINGUN') に変えても
コンテキストIDは 1 しか帰ってこないです。
投票数:0
平均点:0.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
1.9g2の実行環境で、以前投稿したのとは別の環境で・・・。
同じアプリなんですが
CtxSetName('売上伝票入力')
CtxSetName('商品群マスタメンテ')
前者はコンテキストIDの取得が可能なんですが、
後者だと1が帰ってきます。
1.9gの開発環境では、どちらも問題無いのですが。
同じアプリなんですが
CtxSetName('売上伝票入力')
CtxSetName('商品群マスタメンテ')
前者はコンテキストIDの取得が可能なんですが、
後者だと1が帰ってきます。
1.9gの開発環境では、どちらも問題無いのですが。
投票数:0
平均点:0.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
自己レスです。
ヘルプに以下の記載がありました。
> この関数がプログラムの[タスク前]で使用された場合、
> [コンテキストID]特性内に値が返りません。
私の使い方誤りのようです。
追記)
でもプログラムによってはタスク前から
コンテキストIDの取得に成功している物も
あるんですけどね。
ヘルプに以下の記載がありました。
> この関数がプログラムの[タスク前]で使用された場合、
> [コンテキストID]特性内に値が返りません。
私の使い方誤りのようです。
追記)
でもプログラムによってはタスク前から
コンテキストIDの取得に成功している物も
あるんですけどね。
投票数:0
平均点:0.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
1.9gの開発環境だとコンテキストIDの取得で
26053555595165124 といった数字を取得出来るのですが
1.9g2の実行環境だと
コンテキストID が
1 となってしまいます。
開発環境は Win7 Pro 32ビットや
Vista Businessの32ビットです。
実行環境はWin2008サーバーR2 64ビットです。
26053555595165124 といった数字を取得出来るのですが
1.9g2の実行環境だと
コンテキストID が
1 となってしまいます。
開発環境は Win7 Pro 32ビットや
Vista Businessの32ビットです。
実行環境はWin2008サーバーR2 64ビットです。
投票数:0
平均点:0.00