dbMAGIC(強制レコード後)
大した事ではないけども。
3分ぐらい悩んだので一応メモしてみる。
【やりたいこと】
オンラインタスクで、ボタンを押すと、ある項目を「項目更新」したい。
・「セレクト V=変数」で変数を作って、ボタンのデータをその変数にした。
・ボタンのアクションはズームにした。
・定義した変数の下にブロックを作り、フローが「A=後置 C=両方向」条件は「Yes」とする。
・ブロックの中で、項目更新している。
ボタンを押しただけだと、その直後は更新されたように見えても、他のレコードを選択して戻ってくると、さっき項目更新したはずのレコードは書き込まれていない。
普通、オンラインタスクではユーザーが何か入力しないとレコード後処理を通らない(つまりレコードが更新されない。)
で、タスク制御のオプションの強制レコード後処理を「Yes」にすると、ユーザーが入力してなくてもレコード後処理を通るようになる。
ただこれだと、エラーコマンドでエラーをチェックしたりしている場合、エラーがあると終了(Esc)しようとしても、取消(F2)をして終了しようとしてもも終われなくなってしまう。
強制レコード後処理を「Yes」ではなく、式を入れて、ボタンを押した時だけ強制レコード後処理がTrueになるようにする方向で考えてみる。
変数を作り、レコード前処理でFalseを代入、ボタンを押した時のブロックの中で、変数にTrueを代入。強制レコード後処理に変数を入れる。これでちゃんと動いた。
短く言うと結局は。
強制レコード後処理がTrueだと、入力してなくてもレコードを書き込んでくれますよ、とあたりまえのこと。
3分ぐらい悩んだので一応メモしてみる。
【やりたいこと】
オンラインタスクで、ボタンを押すと、ある項目を「項目更新」したい。
・「セレクト V=変数」で変数を作って、ボタンのデータをその変数にした。
・ボタンのアクションはズームにした。
・定義した変数の下にブロックを作り、フローが「A=後置 C=両方向」条件は「Yes」とする。
・ブロックの中で、項目更新している。
ボタンを押しただけだと、その直後は更新されたように見えても、他のレコードを選択して戻ってくると、さっき項目更新したはずのレコードは書き込まれていない。
普通、オンラインタスクではユーザーが何か入力しないとレコード後処理を通らない(つまりレコードが更新されない。)
で、タスク制御のオプションの強制レコード後処理を「Yes」にすると、ユーザーが入力してなくてもレコード後処理を通るようになる。
ただこれだと、エラーコマンドでエラーをチェックしたりしている場合、エラーがあると終了(Esc)しようとしても、取消(F2)をして終了しようとしてもも終われなくなってしまう。
強制レコード後処理を「Yes」ではなく、式を入れて、ボタンを押した時だけ強制レコード後処理がTrueになるようにする方向で考えてみる。
変数を作り、レコード前処理でFalseを代入、ボタンを押した時のブロックの中で、変数にTrueを代入。強制レコード後処理に変数を入れる。これでちゃんと動いた。
短く言うと結局は。
強制レコード後処理がTrueだと、入力してなくてもレコードを書き込んでくれますよ、とあたりまえのこと。
三項演算子
Ruby勉強会@関西に行ったときに、三項演算子というものをちょっと教えてもらった。
今考えた適当な例。
i=2
str = i==2 ? "あああ" : "ううう"
puts str
「あああ」が出力される。
で、『str = i==2 ? "あああ" : "ううう"』の部分をIf を使って書くと、
if i==2
str="あああ"
else
str="ううう"
end
微妙に長いじゃん。
で、三項演算子を使うと1行。
このかっこいい三項演算子がVBとかにもあったらいいのになーなんて何日間ものんきに考えてたら・・・。
「IIF」じゃん!もうちょっと早く気づこうよ、私。
今考えた適当な例。
i=2
str = i==2 ? "あああ" : "ううう"
puts str
「あああ」が出力される。
で、『str = i==2 ? "あああ" : "ううう"』の部分をIf を使って書くと、
if i==2
str="あああ"
else
str="ううう"
end
微妙に長いじゃん。
で、三項演算子を使うと1行。
このかっこいい三項演算子がVBとかにもあったらいいのになーなんて何日間ものんきに考えてたら・・・。
「IIF」じゃん!もうちょっと早く気づこうよ、私。
Rubyでのデスクトップアプリ?
Rubyというと、twitterだったり楽天だったりと、webのイメージが強いので、
ローカルで動くアプリケーションって簡単にできないのかな〜〜と、
(WindowsのAPIとかdllとかなんとか色々使うの以外で・・・)
「ruby デスクトップアプリ」で検索してみた。
するとほとんどが、Ruby On RailsとAirでどうのこうの〜〜で、
Airでデスクトップ、サーバー側をRubyなんてのが多かった。
結局サーバー側
と思ってたら、こんなのもあるらしい。
「Slingshot」
オンラインのアプリケーションとおんなじようにオフラインのアプリケーションを開発できる。
・・・ってAirみたいだな。
あとこういうのもあった。
Shoes
こういうのを調べてみるのも面白そう。
とかいいつつ、Airの方が興味あるかも。(なんだよそれ)
デスクトップアプリをAirで開発して、サーバー側をRuby、とかいうのを目指してみるか?w
ローカルで動くアプリケーションって簡単にできないのかな〜〜と、
(WindowsのAPIとかdllとかなんとか色々使うの以外で・・・)
「ruby デスクトップアプリ」で検索してみた。
するとほとんどが、Ruby On RailsとAirでどうのこうの〜〜で、
Airでデスクトップ、サーバー側をRubyなんてのが多かった。
結局サーバー側

と思ってたら、こんなのもあるらしい。
「Slingshot」
オンラインのアプリケーションとおんなじようにオフラインのアプリケーションを開発できる。
・・・ってAirみたいだな。
あとこういうのもあった。
Shoes
こういうのを調べてみるのも面白そう。
とかいいつつ、Airの方が興味あるかも。(なんだよそれ)
デスクトップアプリをAirで開発して、サーバー側をRuby、とかいうのを目指してみるか?w
最後にパークした項目の値(Magic V10)
これ使えるかも!??
現在のタスクで最後にパークした項目の値を取り出す・・・
『VarCurr(VarInp(0))』でできた。
「VarInp」で、最後にパークした項目がどれかわかる?
VarInp(0)の「0」は、カレントタスクのこと。1だと親タスク、2だと親タスクの親タスク。
VarCurrは、カッコ内で指定した項目の値を取り出す関数。
VarCurr(’A’Var) と書くとAの項目の値が返ってくる。
VarCurr(’A’Var+3)などと書くと、Aの項目の3つ下の値が返ってくる。・・・つまりVarCurr(’D’Var)と同じ。
VarCurrは今までも使ってたけど、VarInpは今日初めて知った。
他に、いいカモ!?と思った関数・・・『LastPark』
こちらは、最後にパークしたコントロール名がわかる。
LastPark(0)などと書くと、現在のタスクのコントロール名。
コントロール名って、昔のMagicにはなかった概念だよね・・・。
現在のタスクで最後にパークした項目の値を取り出す・・・
『VarCurr(VarInp(0))』でできた。
「VarInp」で、最後にパークした項目がどれかわかる?
VarInp(0)の「0」は、カレントタスクのこと。1だと親タスク、2だと親タスクの親タスク。
VarCurrは、カッコ内で指定した項目の値を取り出す関数。
VarCurr(’A’Var) と書くとAの項目の値が返ってくる。
VarCurr(’A’Var+3)などと書くと、Aの項目の3つ下の値が返ってくる。・・・つまりVarCurr(’D’Var)と同じ。
VarCurrは今までも使ってたけど、VarInpは今日初めて知った。
他に、いいカモ!?と思った関数・・・『LastPark』
こちらは、最後にパークしたコントロール名がわかる。
LastPark(0)などと書くと、現在のタスクのコントロール名。
コントロール名って、昔のMagicにはなかった概念だよね・・・。
rubyizumi
おっ、こんなのあるんだ。
http://osflash.org/projects/rubyizumi
ちらっとしか見てないけど、
RTMPサーバーで、Rubyで開発されてるってことかな?
RTMPといえば、FMSは高〜〜いし、
Red5?ってやつはめんどくさいというイメージがある。(使ってないくせに)
FMSはサーバーサイドはjavascriptかactionscript?
Red5はJavaだっけ・・・?(かなりうろ覚え)
FMSは、体験版(期間に制限がある)や開発版(期間に制限はないけど確か接続数?だったかのような機能に制限がある?)をすこーーしだけかまってみたことがある。
本やサンプル見ながらいじってみたけど、こんなに簡単にストリーミング再生やチャットができちゃうんだ!って感動した覚えがある。
Red5はインストールだけしてみたことがある。(こっちは無料)
で、結局使わずw
rubyizumiダウンロードしてみよっかなあ。
http://osflash.org/projects/rubyizumi
ちらっとしか見てないけど、
RTMPサーバーで、Rubyで開発されてるってことかな?
RTMPといえば、FMSは高〜〜いし、
Red5?ってやつはめんどくさいというイメージがある。(使ってないくせに)
FMSはサーバーサイドはjavascriptかactionscript?
Red5はJavaだっけ・・・?(かなりうろ覚え)
FMSは、体験版(期間に制限がある)や開発版(期間に制限はないけど確か接続数?だったかのような機能に制限がある?)をすこーーしだけかまってみたことがある。
本やサンプル見ながらいじってみたけど、こんなに簡単にストリーミング再生やチャットができちゃうんだ!って感動した覚えがある。
Red5はインストールだけしてみたことがある。(こっちは無料)
で、結局使わずw
rubyizumiダウンロードしてみよっかなあ。


