maker 发表于 2011-12-9 11:28:40

求教mdb数据库的like搜索错误的问题

本帖最后由 maker 于 2011-12-10 13:13 编辑

请教各位前辈,为什么会出错,怎么处理这样的情况?
出错原因:
如果数据中含有某一类的特殊字符,就会报错,如:道道ヴ冷酷到底,如果把其中的“ヴ”去掉的话就不会报错了,请各位高人赐教如何处理,谢谢


错误如图:



测试代码:Dim $caiw_path = @ScriptDir & '\aaa.mdb',$mdb_data_pwd='',$tblname='aaa'

data()
cha_jl_MDB()

Func cha_jl_MDB()
        $addfld = ObjCreate("ADODB.Connection")
        $addfld.open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $caiw_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
        $RS = ObjCreate("ADODB.Recordset")
        $RS.ActiveConnection = $addfld
        $RS.open("Select * From " & $tblname & " where jues like '%星%'")
        While Not $RS.eof And Not $RS.bof
                If @error = 1 Then ExitLoop
                $re = $RS.Fields(0).value
                $re &= '|' & $RS.Fields(1).value
                MsgBox(0,0,$re)
                $RS.movenext
        WEnd
        $RS.close
        $addfld.Close
EndFunc   ;==>cha_jl_MDB

Func data()
        If Not FileExists($caiw_path) Then
                $newMdb = ObjCreate("ADOX.Catalog")
                $newMdb.Create("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $caiw_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
                $newMdb.ActiveConnection.Close;建数据库
                        $addtbl = ObjCreate("ADODB.Connection")
                        $addtbl.open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $caiw_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
                        $addtbl.Execute("CREATE TABLE " & $tblname)
                        $addtbl.Close;建表
                        $addfld = ObjCreate("ADODB.Connection")
                        $addfld.open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $caiw_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
                        $addfld.Execute("ALTER TABLE " & $tblname & " ADD xu identity(1, 1) primary key,jues varchar")
                        $addfld.Close;建列表名
                TrayTip('完成', '本月数据库', 3)
        EndIf
EndFunc   ;==>data

nivisde 发表于 2011-12-9 13:42:07

本帖最后由 nivisde 于 2011-12-9 13:43 编辑

日期请用 关系运算符< > <> =
搜索介于2个日期之间的数据请用 $data<XX and $data>XX

maker 发表于 2011-12-9 14:03:36

回复 3# nivisde


   谢谢,可能我表达的不够清楚,我一开始设计数据库表的时候是以日为表,月为文件,年为文件夹的格式创建的,所以不能在某一个表内用语句搜索日期段,并且我搜的索引也不是在日期字段,而是模糊搜索一个字符串的字段

nivisde 发表于 2011-12-9 16:26:54

数据库设计不合理,既然是数据库,还要分年月日份文件存放,自己搞复杂了。
你这样弄还不如再弄个自动备份。
自己给自己的工作增加麻烦。
一个数据库中也可以添加多个表。

auto 发表于 2011-12-9 19:02:27

你的数据量有多大,这么分表和和文件?

maker 发表于 2011-12-10 11:12:44

回复 6# auto


    10多个字段,一般有100-200条数据,月头自动创建以月份为文件名的mdb文件,以1-30或31的天数创建30个左右的表

maker 发表于 2011-12-10 11:15:31

回复 5# nivisde


    一开始的时候可以搜,难道这个和文件创建格式有关系?

maker 发表于 2011-12-10 13:14:27

回复 5# nivisde


    经测试,不是因此出现的错误,出错原因:
如果数据中含有某一类的特殊字符,就会报错,如:道道ヴ冷酷到底,如果把其中的“ヴ”去掉的话就不会报错了,请各位高人赐教如何处理,谢谢

auto 发表于 2011-12-10 20:14:50

回复 7# maker


    一个文件和一个表完全可以满足,数据量并不大啊
想不到按每日一表和每月一文件有好处????

maker 发表于 2011-12-10 20:31:17

本帖最后由 maker 于 2011-12-10 20:33 编辑

回复 10# auto


    编写的时候考虑到为了方便查找打开当天的数据库修改某一项不方便用软件修改的项目,而且还要经常网络传输文件,太大不方便传,所以就这样划分了,只是现在问题所在和文件没有关联,这让人很郁闷

auto 发表于 2011-12-10 21:33:37

回复auto


    编写的时候考虑到为了方便查找打开当天的数据库修改某一项不方便用软件修改的项目,而 ...
maker 发表于 2011-12-10 20:31 http://www.autoitx.com/images/common/back.gif


   完全可以在字段添加日期和时间字段来区分,看你数据也不多。就一个月下来数据也不大,最多几M吧,
如需网络可以按日期生成MDB或XLS文档来传送。
不知道这个分表和文件,使用一年下来,让你统计一下一年数据,你要怎么统计?

maker 发表于 2011-12-10 21:41:51

回复 12# auto


    恩,当时考虑的过多了,后面看看有时间的话把数据导出重新搞一下
页: [1]
查看完整版本: 求教mdb数据库的like搜索错误的问题