システムwiki

アクセス-行が10文字に制限されているテキストボックス?

cokisto 受付中 最終更新日:2022-02-11 14:46

こんにちはコミュニティ、

ユーザーが同じボックスに複数のID(10桁)を入力できるようにするコントロールテキストボックスを作成しようとしています.

私たちの目標は、tableビューの同じフィールドにすべてのIDを含めることですが、ユーザーが1行に複数のIDを入力できないようにする必要があります.

アクセス中のプロパティシートを介して文字の総数を制限することは可能ですが、行ごとに許可される文字数を制限する方法が見つかりません.

誰かが私にこれを手に入れることができますか?よろしくお願いします.

具体的には:

テキストボックスで許可する必要があります:

1234567890xxxx<-行あたり最大10桁.Enterキーを押すと、次の行に移動します.

1234567890xxxx

1234567890xxxx

ありがとう!

返信リスト(回答:9)

7 #
Scottge

これがあなたのためにどのように機能すると思われるか説明できますか?次のようなものが表示されることを期待していますか:

RecordID ID

1 0123456789

1234567890

2345678901

2 9876543210

8765432109

7654321098

もしそうなら、なぜこれが必要なのか説明できますか?

考えられる解決策は、ユーザーに|のような区切り文字を使用してIDを入力させることです.次に、その文字を改行に置き換えます.

応答7# ->にスキップ
6 #
cokisto

データをホモロゲーションしてレポートを作成する方法です.また、ユーザーが間違いを犯したり、間違った区切り文字を追加したり、別の区切り記号を使用したりする傾向があることに気付いた経験に基づいて、レコードを簡単に検索できます.テキストボックスに10文字ごとに区切り文字を追加する方法がある場合は、このトリックも実行できます.ただし、複数の行がある方が見栄えがよい場合があります

応答6# ->にスキップ
5 #
Scottge

まず、なぜこれが必要なのかまだわかりません.レポートを私が投稿した例のように見せたい場合は、子tableを使用する必要があります.次のようなtableが必要です:

tblSelIDs

SelIDPK(PK自動番号)

ParentID(FK)

SelID

次に、ユーザーはサブフォームの行ごとに1つのIDを入力します.次に、親レコードに関連付けられたIDごとに行を表示するクエリを作成できます.レポートでは、重複の非表示機能を使用して、私が示したようにレポートを表示できます.

ループ内でMID関数を使用して、10文字を取得し、改行文字を追加できます.このようなもの:

i= 1の場合Len(IDlist)ステップ10

strList= strLIst&Mid(Me.List、i、10)&Chr(10)

次は

応答5# ->にスキップ
4 #
cokisto

ありがとうスコット、 フォームはさらに多くの入力テキストボックスとコンボボックスで構成されているため、子tableが役立つとは思いません.

フォームのテキストボックスには255文字の制限があり、ユーザーはテキストボックスの制限に達する可能性のあるケースを入力できます.tableがあると、これらのシナリオにフォームに大量のスペースが割り当てられます.

ボックス内のすべての文字をXXXXXXXXXX-XXXXXXXXXX-...に沿ってフォーマットする方法があるかどうか、または行を10桁に制限できる場合は、それらのいずれかが役立ちます.

>

応答4# ->にスキップ
1 #
GroverP

PMFJI:

IDに親tableと子tableを持つ標準のリレーショナルデータベース設計を使用しない唯一の理由は、そうすることが可能であるということです.リレーショナルデータベースApplicationの設計に対する標準的なアプローチは、リレーショナルデータベースApplicationを設計するための最も効果的で安全かつ信頼性の高い方法であるために生まれました.

私が最近よく使っている例えは、川のカヌーに関するものです.コース修正のためにパドルを使用して、現在の流れで下流に浮かぶことができます.または、流れに逆らって狂ったように漕いで上流に移動することもできます.すべてのIDをtableの1つのフィールドに配置し、それらを「何らかの方法で」制御することは、そのパドルを狂ったように使用して、現在に逆らって上流にプッシュすることです.大変な作業ですが、まあ、それは可能です.

応答4# ->にスキップ
2 #
Scottge 1

さらに、ここでは子tableが道だと思います.サブフォームを作成できます.これにより、既存のテキストボックスコントロールよりも多くのスペースを占有することはありません.IDの数が255文字の制限を超える可能性がある場合は、子tableとサブフォームを使用する理由がさらにあります.

申し訳ありませんが、これまでに説明したことはすべて、子tableを求めています.

応答4# ->にスキップ
3 #
DanielP 1

これは、私が正しく理解していれば、メインフォームにサブフォームを持つ親子tableを作成して、複数のエントリを作成できるようにする正確なシナリオです. tableのフィールドサイズを制御します.

レポートの場合、サブレポートのアイデアが気に入らない場合は、値を単純に連結できますが、データ入力と関連tableのクエリが解決策です.

9 #
DanielP

「アクセス中のプロパティシートを介して文字の総数を制限することは可能ですが、行ごとに許可される文字数を制限する方法が見つかりません.」

しかし、あなたの例に基づいて、それはまさにあなたが実装すべきものです. table定義でフィールドサイズを設定します.

他のオプションは、VBAとおそらく変更イベントのコントロールを使用することです.

応答9# ->にスキップ
8 #
cokisto

ありがとう、でもどうやってやるのかわからない.ボックスを10文字に制限すると、2行目が許可されません.VBAについて私はまだ書面で非常に新しいです.