@frswataru (本石 渉)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Access left関数上手くいかない

Q&A

Closed

解決したいこと

下図のようなAccesseで検索フォームを作成しました。🔍をクリックするとデーターを検出するフォームとなってます。例外としてテキストボックスのLenbの値が22より大きいときはテキストボックス左から数えて22までの文字列で検索を掛けたいのですが、、Left関数が効きません。
解決方法を教えてくだい。

image.png

該当するソースコード

Private Sub コマンド75_Click()
Dim strsearch As String, Find As String



strsearch = ""
If Me!FL検索 <> "" And LenB(Me.FL検索) > 22 Then
    Find = Left(FL検索, 22)

   strsearch = "(FL like '" & Find & "*')"

ElseIf Me!FL検索 <> "" And LenB(Me.FL検索) = 22 Then
    strsearch = "(FL like '" & Me.FL検索 & "*')"
End If
Me.Filter = strsearch

Me.FilterOn = True




End Sub

自分で試したこと

Findの返値が”” -> 789-003348にならない
image.png

0 likes

4Answer

下記のようなサンプルを書いて実装させたところ
Left関数が効かないということは無かったので、他が原因だと思います。

####画面
image.png

コード
Option Compare Database
Option Explicit

Private Sub コマンド75_Click()
    Dim strsearch As String, Find As String
    strsearch = ""

    If Len(Me.FL検索) > 22 Then
        Find = Left(FL検索, 22)
        strsearch = "(FL like '" & Find & "*')"
    Else
        strsearch = "(FL like '" & Me.FL検索 & "*')"
    End If

    MsgBox (strsearch)
End Sub

####実行1
image.png

####実行2
image.png

1Like

Comments

  1. @frswataru

    Questioner

    承知しました。
    他の原因探ってみます。

LenB関数を使うのであれば、LeftB関数を
Left関数を使うのであれば、Len関数を
使う方が、間違いが起きないと思います。

1Like

Comments

  1. @frswataru

    Questioner

    おっしゃる通り気をつけます

画像のブレイクポイントの位置だと、Findへ値が入る前な気がします。
もう一つ下の処理にブレイクポイントを置いた場合はどうでしょうか?

0Like

Comments

  1. @frswataru

    Questioner

    strsearch=""です
    引き続きどうぞよろしくお願いいたします。

トリムしたい文字数に誤りがありました
22 -> 11に変更することで上手く行きました。
お騒がせしてすみませんでした。

0Like

Your answer might help someone💌