昔の名残と技術的なことも
カウンター

プロフィール

りん

Author:りん


♡現在♡
社会人歴4年目
(社内ニート)

♡好き♡

最近の記事
最近のコメント
月別アーカイブ
カテゴリー
リンク
ブログ内検索

RSSフィード
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


久々に更新してみた・x・

病んでる日記みたいになってたけど

ちゃんと正常です

生きてます




今日は開発者らしい話でもしようかな・x・


Lotus Notesの話!

文書を新規作成する際に、

既存文書に一定の条件のものがあるかどうかチェックして、

あったらエラーメッセージを表示する

っていうロジックを書いていたんだけど、

最初、@DbLookupを使おうとしてたの

でもこれって検索対象が"最初のソートされた列"ってなってて、

私が用意してたビューは、使いたい列はソートされてなくて
(ソートすると思い通りの表示にならないから)

2列目のソートされている列が検索対象になってて使えなかったの


で、どうしたかというと

もう必要な条件をまとめて1列に記載して、(列目はどこでもよい)

@DbColumnでまとめてとってきちゃおうってことになった



文書には、

・作成者

・指定した日付(作成日とは異なる)

・ステータス(保存・申請・承認・否認)

のフィールドが用意されていて、


新規作成文書で

ステータスが申請か承認で作成者が自分の

既存文書の指定した日付と同じ日付を指定していたら

エラーっていうのなんだけど、

ビューの列に

Status + "*" + Maker + "*" + appDate

って感じに3項目繋げて追加しちゃえば

この列をとってくるだけで、

条件判断ができちゃうって感じ(*'ω'*)b

もちろん、この列を取ってきたらリスト型になってるから

list := @DbColumn("":""; @ServerName:@Subset(@DbName;-1); "ビューの名前"; 列番号);

って格納したら、list[1]で最初の値を参照できる!

そしたら、list[1]の中身は例えば"申請*Administrator*2015/07/30"って感じになってるから、

これを@Explodeで分割する!

tmp := @Explode(list[1]; "*");

ってすれば、これもリスト型になるから同じ感じに値を参照できるようになる!


tmp[1]:ステータス

tmp[2]:作成者

tmp[3]:指定した日付

と、参照できるので、これを比較すればいいってわけ

@If(tmp[3] = @Text(appDate; "D0");
@If((tmp[1] = "申請" | tmp[1] = "承認") & tmp[2] = @UserName;
@Do(@Prompt([OK]; "タイトル"; "同じ日付で既存文書があります。"); @Return(""));
"");
"")

これを@Forで回して、

同じ日付を指定している文書がでてきたらエラーメッセージが表示される!

という感じに解決した・x・



あ、ちなみに

フィールドの種類が「日付/時刻」型を指定してる場合は、

@Textでとってこないと一致させられないから注意ね・x・


恐らく、@Text(appDate)だけだと時、分、秒まで入ってるのかな~?

自分で指定する日付だから00:00:00なんだろうけどね~


まぁ

@Text(appDate; "D0");

ってやると月、日、年を表示してくれる

@Text("2015/07/30 00:00:00"; "D0");

とすると"2015/07/30"が表示されるのだ!



という感じにプログラム組んでます

まあ仕事ないから遊び程度にやってるんだけどね~


考えることは楽しい

答えまでの道のりが1つだけじゃないってことが

考えの幅を広げるよねヾ(:3ノシヾ)ノシ



<< 299 // HOME // 297 >>
10月入社してから研修が終わるまで職種は決まってないんだけど、りなが楽しそうだから俺も開発やりたくなるぞ!
【2015/07/24 Fri】 URL // とら #mQop/nM. [ 編集 ]

管理者にだけ表示を許可する
// HOME //
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。