Form 내에서 검색을 하기 위해 sub procedure를 짰습니다.
두 개의 검색필드에 대해서 각각 동일한 방식으로 코드를 만들었는데요, 이상하게 한 곳은 무리없이 작동하는데, 다른 하나는 검색을 못합니다.
우선, 제대로 작동하는 sub의 코딩은 다음과 같습니다.
Private Sub s_ecrivain_AfterUpdate()
Dim mySet As Recordset
Dim criteria, rEcrvain
Dim Message, Title
Dim scQ, scR
scQ = Chr(34)
scR = Chr(13) & Chr(10)
rEcrvain = Trim(Me![s_ecrivain])
Set mySet = Me.Recordset
With mySet
.MoveFirst
criteria = "Ecrits.Nom like " & scQ & "\*" & rEcrvain & "\*" & scQ
.FindFirst criteria
If .NoMatch Then
Message = "찾는 글이 없습니다."
Title = "검색 실패!"
Msgbox Message
Exit Sub
End If
End With
End Sub
위 서브는 'Ecrit.nom'이라는 필드에서 검색하기 위한 서브입니다. 무리없이 작동합니다.
그런데 아래 서브는 검색이 안 됩니다.
Private Sub s_ecrit_AfterUpdate()
Dim mySet As Recordset
Dim criteria, rEcrit
Dim Message, Title
Dim scQ, scR
scQ = Chr(34)
scR = Chr(13) & Chr(10)
rEcrit = Trim(Me![s_ecrit])
Set mySet = Me.Recordset
With mySet
.MoveFirst
criteria = "Ecrit like " & scQ & "*" & rEcrit & "*" & scQ
.FindFirst criteria
If .NoMatch Then
Message = "찾는 글이 없습니다."
Title = "검색 실패!"
Msgbox Message
Exit Sub
End If
End With
End Sub
위 서브는 'Ecrit'라는 필드에서 검색하기 위해서 만든 겁니다.
그런데 여기서는 항상 "찾는 글이 없습니다"로 나옵니다.
분명 찾는 단어가 있는 필드가 존재하는 데도 불구하고 말입니다.
두 sub의 유일한 차이는 field이름을 첫 번째에서는 table이름이 포함되어 있고(Ecrits.Nom) 두 번째 서브에서는 table이름이 포함되어 있지 않다(Ecrit)는 것 뿐입니다. 첫 서브에서 테이블 이름을 포함한 것은, 다른 테이블의 동일한 이름의 필드가 Recordset에 있기 때문입니다. 따라서 이 차이가 문제의 원인이 될 것 같지는 않은데요.
즉 두 번째 서브에서 'Ecrit'를 'Ecrits.Ecrit'(Table이름 포함)로 바꾸어도 여전히 문제는 해결되지 않습니다.
혹시 이런 문제에 대해 알고 계시거나, 위 코딩에 문제점을 발견하신 분은 알려주시면 감사하겠습니다.