過去の桐井戸端BBS (桐ver.8)
7953 アクセスの定型入力を実現 じゃすみん 2000/10/05-23:34
こんにちは。そして、初めまして。桐4以来の愛好家、ジャスミン♂です。

途中、アクセスに寄り道をして、それなりにすばらしいソフトだと驚嘆したのですが、
やはり、会話処理での自由度、印刷のすばらしさなど、桐ならではの魅力を簡単に忘れることはできませんでした。

しかしながら、いくつか不満もあります。

例えば、英文字+数字2文字でできたコードがあります。英文字は必ず大文字です。
従って、表引きをする場合には、わざわざシフトキーを押して大文字を入力した後に表引きをしなければなりません。

これを、アクセスの定型入力のように、英文字しか入力できないようにし、しかも、
自動的に大文字として確定するような方法はないのでしょうか。
もちろん、フォームを使っても構いませんし、イベント処理を経由しても構いません。


アクセスの定型入力をご存じない方のために補足しますと、プロパティに制御文字を埋め込むことで、
入力できる体裁を整えられるものです。

例えば、「000\-0000」とすると、郵便番号以外は入力できなくなり、しかもハイフンは自動的に補足されます。
「>L00」とすると、全ての英文字が大文字に変換され、しかも、A98、L12のような英文字+数字2文字しか入力できなくなります。
7956 Re:アクセスの定型入力を実現 宮城 2000/10/06-00:50
記事番号7953へのコメント
じゃすみんさん、こんにちは。

>従って、表引きをする場合には、わざわざシフトキーを押して大文字を入力した後
>に表引きをしなければなりません。

あれ? 入力モードで指定できますし、変換したっていいんですけど。

7957 Re:アクセスの定型入力は 佐田 守弘 2000/10/06-00:51
記事番号7953へのコメント
Accessの定型入力機能に相当する入力文字列の編集機能は、桐にはありません。
とは言え、似た様なことを桐で行うのはできそうな気もします。

方法としてはキーダウンイベントで1文字入力される度にイベントを発生させ、「メソッド呼び出し 編集文字列取得」コマンドで、
編集中の文字列を取得します。
そして、先頭がアルファベットであるかどうか、アルファベットでも小文字であれば大文字に変換するといった処理を行い、
「メソッド呼び出し 編集文字列設定」コマンドで、成形した文字列を返します。

この様な面倒な事をしなくても、入力書式を設定するだけで、設定書式に成形された文字列が入力できる機能が欲しいですね。

佐田守弘(KS-00119)
7964 Re:アクセスの定型入力を実現 にせほりかわ 2000/10/06-17:38
記事番号7953へのコメント
じゃすみんさんこんにちわ。

>英文字しか入力できないようにし、しかも、自動的に大文字として確定するような方法はな
いのでしょうか。
>もちろん、フォームを使っても構いませんし、イベント処理を経由しても構いません。

項目内でリアルタイムに制御する方法もありますが、簡単なのは「入力後イベント」の利用ではないでしょうか。
例えばこんな形で…
-----------------------------------------------------------------------------
手続き定義開始 code::入力後( 参照 文字列 &編集文字列,長整数 &モード,参照 長整数 &入力継続 )
変数宣言 文字列{&err=""}
&編集文字列=#uc(#半角(&編集文字列))
 switch
case(#桁数( &編集文字列 ) > 3 )
   &err ="入力したcodeが、3 桁を越えています。"
case(.not#is英字(#sstr(&編集文字列、1,1))
&err ="入力したcodeの先頭文字が英字ではありません。"
case(.not#is数字(#sstr(&編集文字列、2))
&err ="入力したcodeの2文字目以降が数字ではありません。"
end
if(&err)
メッセージボックス "[code]",&err,アイコン = i
&入力継続 = 1
end
手続き定義終了
----------------------------------------------------------------------------
エラーを促さないで、強引に文字数を切り捨てたりすることも出来ますが危険もあります。

また、郵便番号の入力を1)区切り文字は何でもOK。2)無くてもOK 3)全角半角
不問というような条件で行う処理としては
----------------------------------------------------------------------------
手続き定義開始 〒番号::入力後( 参照 文字列 &編集文字列,長整数 &モード,参照 長整数 &入力継続 )
変数宣言 整数{&i,&cnt=#文字数(&編集文字列)},文字列{&ws}
&STR=""
繰り返し &i=1,&cnt,1
     &ws=#半角(#sstr(&編集文字列,&i,1))
if(#is数字(&ws,1))
&STR=&STR+&ws
end
end
&編集文字列=&STR
if(#文字数(&編集文字列)<>7)
メッセージボックス "[code]","入力した郵便番号が7桁ではありません",アイコ
ン = i
    */ここでそのまま入力を確定させてあげることも許可してもいい。
&入力継続 = 1
else
&編集文字列 = #sstr(#sstr(&編集文字列,1,3)+"-"+#sstr(&編集文字列,4)
end
手続き定義終了
----------------------------------------------------------------------------
こんな形でも可能です。
あとは入力モードの制御や項目制限で補強してもいいですが、ただやはり面倒くさいという点は否めませんね。(^^;

最近また桐を触りだした「にせほりかわ」

7973 Re:アクセスの定型入力を実現 じゃすみん 2000/10/07-01:58
記事番号7956へのコメント
宮城さん、初めまして。

>あれ? 入力モードで指定できますし、変換したっていいんですけど。
>

入力モードでは、「半角英数」までは指定できても、大文字小文字までは制御できないのではありませんか?

勘違いでしたらすみません。

7974 Re:アクセスの定型入力は じゃすみん 2000/10/07-02:00
記事番号7957へのコメント
佐田 守弘さんこんばんは

>Accessの定型入力機能に相当する入力文字列の編集機能は、桐にはありません。

やっぱり、標準機能にはないのですね。残念です。SP7あたりで追加にならないものでしょうか。

7975 Re:アクセスの定型入力を実現 じゃすみん 2000/10/07-02:02
記事番号7964へのコメント
にせほりかわさんこんにちわ。

早速のコメント、ありがとうございました。さすが、質問してみるものだと思いました。
早速実験してみます。

戻る