- ベストアンサー
accessでテキスト型のフィールドサイズについて…
accessで作った受注管理のデータを抜き出してクロネコヤマトのi-cats(b2)に入力するように作りました。 b2のデータ交換規約(?)の方のテキスト型のフィールドサイズの指定が 半角英数字10文字 となっていたり、 15文字/30文字 全角/半角 というようになっています。 質問なんですが このフィールドサイズにぴったり合うようにフィールドサイズの設定をするにはどうしたらいいでしょうか? また、半角英数字・半角カタカナ・数字等、特定の文字の種類だけ入力できるようにたりしたいです。 もうひとつ別の質問です VBAで、設定したフィールドサイズよりも大きいテキストを入れようとするとエラーが出るんですが、VBAで後ろを切り捨てたりして入るサイズに縮める方法を教えてください。 長くなりましたが宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>15文字/30文字 全角/半角 フォームから入力するのであればテーブルのフィールドの入力規則に LenB(StrConv(([フォームのコントロール名]),vbFromUnicode))<=30 とすればフィールドには30Byteまでしか入力できなくなります。これで全角15文字・半角30文字まで。 >半角英数字・半角カタカナ・数字等、特定の文字の種類だけ入力できるようにたりしたいです フォームでならコントロールのプロパティのIME入力モードをそのフィールドに合ったものに設定すれば良いと思います。 >VBAで後ろを切り捨てたりして入るサイズに縮める方法 Mid関数で切り抜きます。バイト数で切り出す場合はMidB関数でできます。 MidB([フィールド名やコントロール名],1,10) で1バイトから10バイト切り出します。
その他の回答 (1)
- nicotinism
- ベストアンサー率70% (1019/1452)
Q1このフィールドサイズにぴったり合うようにフィールドサイズの設定をするには AccessではUnicodeが採用されていますので、 半角(1byte)・全角(2byte)の区別が無くなっています。 なので「15文字/30文字 全角/半角」のような場合には テーブルデザインのフィールドサイズでは、30(文字)と設定するしか無いのでは。 Q2 また、半角英数字・半角カタカナ・数字等、特定の文字の種類だけ入力できるようにたりしたいです。 フォームのテキストボックスの更新前あたりでチェックして「警告」を出すくらいでは? IME入力モードで設定できるかもしれませんが、数字等の「等」が気になります。 ↓は参考にでも Function asc2chr(Optional ascScope As Integer = 256) Dim i As Integer For i = 1 To ascScope Debug.Print i & "," & Chr(i) Next i End Function Q3 VBAで、設定したフィールドサイズよりも大きいテキストを入れようとすると エラーが出るんですが、VBAで後ろを切り捨てたりして入るサイズに縮める方法を教えてください。 フィールドタイプがテキストなら CurrentDb.TableDefs("テーブル名").Fields("フィールド名").Size でフィールドサイズ(テーブルデザインの処で出てくる)が求められますので 更新前処理あたりで、Len 、Left と組み合わせては?
お礼
ありがとうございます。 教えていただいた方法でがんばります! 「等」、にはあまり意味は無いです。
お礼
ありがとうございます。 具体的な方法でとても勉強になりました。 入力規則の使い方をはじめて知りました! こんな風に使うんですね。 いろいろと試してみたいと思います。 ありがとうございました。