🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

2回答

558閲覧

Access 式ビルダー 修正

Yoshikun_0945

総合スコア224

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2019/10/13 04:32

前提・実現したいこと

Accessのレポートにクエリの値を表示する際に、クエリの値のうち一部の文字だけ表示するというシステム作成しています。

現在、対象のフィールドの値に、『部』が含まれる場合、『部』の1つ手前までを表示し、『部』が含まれない場合は、文字列のすべてを表示することに成功したのですが、
これを改変し、『部』が含まれる文字列のうち、『部』の後ろに()がない文字列は、
『部』の1つ手前までを表示し、『部』の後ろに()がある文字列は、()で囲まれた文字列だけを表示したいのですが、どのように修正すればよろしいでしょうか?
()がある場合、(の文字位置は、毎回異なります。

該当のソースコード

Access

1=Left([係名],InStr(1,[係名] & "部","部",0)-1)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

iif()を使用して、like で()があるか判定し、instr()で抽出すれば良さそうですけど。
今後も変更がありそうなら、式が複雑になりそうですから、ユーザー関数で対応した方が良さそうですけどね。

投稿2019/10/13 05:10

編集2019/10/13 05:15
sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yoshikun_0945

2019/10/13 05:27

ご回答いただきまして誠にありがとうございました。 大変助かりました。
guest

0

ベストアンサー

テキストボックスを2つ追加して下記のように設定します。

名前 P1
コントロールソース =InStr(1,[係名],"(",0)
可視 いいえ

名前 P2
コントロールソース =InStr(1,[係名],")",0)
可視 いいえ

現状のテキストボックスのコントロールソースを下記のように変更します。

=IIf([P1]>0 And [P2]>[P1],Mid([係名],[P1]+1,[P2]-[P1]-1),Left([係名],InStr(1,[係名] & "部","部",0)))

同様の処理が他にもあったり、変更の可能性があるなら、ユーザー定義関数を作成しておくといいでしょう。
標準モジュールに下記の関数を作成します。

vba

1Public Function get係名(v As Variant) As String 2 3 If IsNull(v) Then Exit Function 4 5 Dim P1 As Long: P1 = InStr(1, v, "(", vbBinaryCompare) 6 If P1 > 0 Then 7 Dim P2 As Long: P2 = InStr(1, v, ")", vbBinaryCompare) 8 If P1 < P2 Then 9 get係名 = Mid(v, P1 + 1, P2 - P1 - 1) 10 Exit Function 11 End If 12 End If 13 14 get係名 = Left(v, InStr(1, v & "部", "部", vbBinaryCompare)) 15 16End Function

テキストボックスのコントロールソースに下記の式を設定

=get係名([係名])

投稿2019/10/13 05:05

編集2019/10/13 05:24
hatena19

総合スコア34073

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yoshikun_0945

2019/10/13 05:27

ご回答いただきまして誠にありがとうございました。 大変助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問