📄 filter.inc
字号:
FilterInitComBo proto hWin:dword
.CONST
IDC_CBO_LENCOMPARE equ 1006
IDC_CHK_SAVEAS equ 1018
IDC_EDT_EG_KW equ 1010
IDC_EDT_EXPLAIN_KW equ 1008
IDC_EDT_LEGEND_KW equ 1011
IDC_EDT_NEWTABLENAME equ 1019
IDC_EDT_PHRASE_KW equ 1009
IDC_EDT_SQLINPUT equ 1016
IDC_EDT_WORDINITIAL equ 1007
IDC_EDT_WORDLEN equ 1014
IDC_FILTER_BTN_EXIT equ 1022
IDC_FILTER_BTN_OK equ 1021
IDC_GRP1 equ 1012
IDC_GRP2 equ 1015
IDC_GRP3 equ 1017
IDD_DLG_FILTER equ 3000
.data?
;全局变量
hEditNewTable dd ?
.code
FilterInitAll proc hWin:dword
invoke FilterInitComBo,hWin
invoke GetDlgItem,hWin,IDC_EDT_NEWTABLENAME
mov hEditNewTable,eax
invoke ShowWindow,hEditNewTable,SW_HIDE
ret
FilterInitAll endp
FilterInitComBo proc hWin:dword
LOCAL thd:dword
;初始化组合框
;得到组合框句柄
invoke GetDlgItem,hWin,IDC_CBO_LENCOMPARE
mov thd,eax
;追加数据
invoke SendMessage,thd,CB_ADDSTRING,0,SADD("=")
invoke SendMessage,thd,CB_ADDSTRING,0,SADD("!<")
invoke SendMessage,thd,CB_ADDSTRING,0,SADD("!<=")
invoke SendMessage,thd,CB_ADDSTRING,0,SADD("!>")
invoke SendMessage,thd,CB_ADDSTRING,0,SADD("!>=")
ret
FilterInitComBo endp
FilterGetFilterStrings proc hWin
;作用:根据当前选择,生成完整的SQL语句
;参数:
;返回值:
;
;开发日期:
;备注:
LOCAL ltbuf[4096]:byte
LOCAL tbuf[256]:byte
LOCAL tbuf_endstring[8]:byte
;单词
invoke lstrcpy,addr ltbuf,SADD(" where true ")
invoke lstrcpy,addr tbuf_endstring,SADD("%'")
;例句
invoke GetDlgItemText,hWin,IDC_EDT_EG_KW,addr tbuf,255
.if eax
invoke lstrcat,addr ltbuf,SADD(" and 例句 LIKE '%")
invoke lstrcat,addr ltbuf,addr tbuf
invoke lstrcat,addr ltbuf,addr tbuf_endstring
.endif
;解释
invoke GetDlgItemText,hWin,IDC_EDT_EXPLAIN_KW,addr tbuf,255
.if eax
invoke lstrcat,addr ltbuf,SADD(" and 解释 LIKE '%")
invoke lstrcat,addr ltbuf,addr tbuf
invoke lstrcat,addr ltbuf,addr tbuf_endstring
.endif
;联想
invoke GetDlgItemText,hWin,IDC_EDT_LEGEND_KW,addr tbuf,255
.if eax
invoke lstrcat,addr ltbuf,SADD(" and 联想 LIKE '%")
invoke lstrcat,addr ltbuf,addr tbuf
invoke lstrcat,addr ltbuf,addr tbuf_endstring
.endif
;词组
invoke GetDlgItemText,hWin,IDC_EDT_PHRASE_KW,addr tbuf,255
.if eax
invoke lstrcat,addr ltbuf,SADD(" and 词组 LIKE '%")
invoke lstrcat,addr ltbuf,addr tbuf
invoke lstrcat,addr ltbuf,addr tbuf_endstring
.endif
;单词
invoke GetDlgItemText,hWin,IDC_EDT_WORDINITIAL,addr tbuf,255
.if eax
invoke lstrcat,addr ltbuf,SADD("and 单词 LIKE '")
invoke lstrcat,addr ltbuf,addr tbuf
invoke lstrcat,addr ltbuf,addr tbuf_endstring
.endif
;词长
invoke GetDlgItemText,hWin,IDC_EDT_WORDLEN,addr tbuf,255
.if eax
invoke lstrcat,addr ltbuf,SADD("and len(单词)")
invoke GetDlgItemText,hWin,IDC_CBO_LENCOMPARE,addr tbuf_endstring,4
INVOKE lstrcat,addr ltbuf,addr tbuf_endstring
invoke lstrcat,addr ltbuf,addr tbuf
;invoke lstrcat,addr ltbuf,addr tbuf_endstring
.endif
;结束
lea eax,ltbuf
ret
FilterGetFilterStrings endp
FilterDoSearch proc hWin:dword,lpText:dword
;作用:直接执行搜索
;参数:SQL语句地址
;返回值:无
;
;开发日期:06:51:28 2005-04-09
;备注:
LOCAL lSQL[1024]:byte
LOCAL ltbufnewtable[256]:byte
LOCAL tdbname[256]:byte
invoke lstrcpy,addr lSQL,lpText
invoke GetDlgItemText,hWin,IDC_EDT_NEWTABLENAME,addr ltbufnewtable,sizeof ltbufnewtable
invoke lstrlen,addr ltbufnewtable
.if eax
;check if there is a table exist with the same name.
invoke SendMessage,hCombo,CB_FINDSTRINGEXACT,-1,addr ltbufnewtable
.if eax!=CB_ERR
MyDebug "所输入新表名已经存在,请重新输入!"
ret
.else
;在Combo中添加此表名
invoke SendMessage,hCombo,CB_ADDSTRING,0,addr ltbufnewtable
.endif
.endif
invoke ODBCExeDirect,addr lSQL
invoke MyMainWindowHide,hList
invoke SendMessage,hList,LB_RESETCONTENT,0,0
invoke FillData
invoke MyMainWindowShow,hList
invoke GetWindowText,hCombo,addr tdbname,sizeof tdbname
invoke SendMessage,hList,LB_GETCOUNT,0,0
invoke StatusBarSetText,addr tdbname,eax
ret
FilterDoSearch endp
FilterSaveAs proc hWin:dword,lpTextCondition:dword
;作用:在SQL语句中加入能实现SaveAs的内容
;参数:
;返回值:
;
;开发日期:17:51:44 2005-04-10
;备注:
;若CheckButton未选中或IDC_EDT_NEWTABLENAME内的字符长度为0,则不另存为.
;0.检查所输入的新表名是否己存在
;1.得到搜索条件,比如select * from WhichTable where Condition
;2.生成完整的SQL语句,select * into NewTable from WhichTable where Condition
;3.执行
LOCAL lbuf[1024]:byte
LOCAL tdbname[256]:byte
LOCAL lSQL[1024]:byte
LOCAL ltbufnewtable[256]:byte
LOCAL flag:dword ;若flag为0,则不另存为;若非0,则另存为
invoke lstrcpy,addr tdbname,lpTextCondition
mov flag,1
invoke GetDlgItemText,hWin,IDC_EDT_NEWTABLENAME,addr ltbufnewtable,sizeof ltbufnewtable
.if !eax ;IDC_EDT_NEWTABLENAME内的字符长度是否为0
mov flag,0
.endif
invoke GetWindowText,hCombo,addr tdbname,256
.if !eax
PrintText "get windowtext err in filter do filter function"
.endif
mov eax,flag
.if eax
invoke wsprintf,addr lSQL,SADD("select * into %s from %s %s"),addr ltbufnewtable,\
addr tdbname,lpTextCondition
.else
invoke wsprintf,addr lSQL,SADD("select * from %s %s"),\
addr tdbname,lpTextCondition
.endif
lea eax,lSQL
ret
FilterSaveAs endp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -