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