foxtable帮助中的“自定义录入窗口”是个非常经典的应用。我也是拿来主义,把里面的代码粘来就用。
但今天下午给一个朋友测试时,发现一个很严重的错误:只要在查询条件中输入半角的单引号,查询就会出错。经仔细检查,原来老六提供的代码并不完美,当查询条件中出现单引号时,就会造成SQl语句错误。
“完美的”代码应该是:
Dim txt As
String = e.Form.Controls("TextBox1").Value
Dim dst As WinForm.DataList = e.Form.Controls("DataList1")
If txt = "" Then
dst.RowFilter = ""
Else
txt = "'*" & txt.Replace("'","''") & "*'" '如果用户输入的条件中带单引号,自动将其替换为两个单引号
dst.RowFilter = "客户ID Like " & txt & " Or 公司名称 Like " & txt & " Or 地址 Like " & txt & " Or 联系人 Like " & txt
End
If
特别提醒各位狐友注意,包括各种SQL语句中,只要查询条件中存在单引号,就一定要2个单引号代替。