先放上按鈕,將按鈕的visible設為.f.,再用一image(其中圖形與按鈕一樣)放在按鈕的位置,在圖片的mousemove事件中寫入將按鈕visible設為.t.的語句,在表單的mousemove事件中寫入將按鈕visible設為.f.的語句。
[返回]
2.使用 SQL,我正在設法將一個表與多個表建立左聯接。當查詢需要的所有表打開時,該查詢可以工作。但是當有些表沒有打開時,就會產生錯誤。而且當所有表打開時,盡管沒有產生錯誤信息,但結果不正確。為什么?
當試圖建立一個表對多個表的左聯接時,您也許使用了下面語句,該語句用表別名進行了“自聯接”。您的 SQL 語句可能如下所示:
select one.firstname as first, one.lastname as second,;
two.firstname as third, two.lastname as fourth;
from FirstTable; left outer join SecondTable one;
left outer join SecondTable two; left outer join ThirdTable;
on ThirdTable.ThirdID=FirstTable.FirstID;
on Two.SecondID=FirstTable.FirstID;
on one.SecondID=FirstTable.FirstID;
order by 4,3,2,1
這里的查詢試圖將臨時表 One、Two 以及 ThirdTable 左聯接到 FirstTable 上,但是沒有得到預期的效果。查詢分析器從最里面的聯接開始分析查詢(在上面語句中為 "left outer join ThirdTable"),但是不能定位 FirstTable 表,該表名字位于此語句的上面。因此,如果沒有打開表,您就會發現錯誤,如 "SQL: Column `ThirdID` 沒有找到",同時輸出也不正確。當表打開時,"couple.coupleid" 綁定到外部(非SQL)臨時表 "couple" 的字段上。此查詢也是合法的,但是得不到預期的效果。為了避免此錯誤,并能夠得到正確結果,可以使用類似如下的 SQL 語句:
select one.firstname as first, one.lastname as second,;
two.firstname as third, two.lastname as fourth;
from (((FirstTable;
left outer join SecondTable One;
on one.SecondID = FirstTable.FirstID);
left outer join SecondTable Two;
on Two.SecondID = FirstTable.FirstID);
left outer join ThirdTable;
on ThirdTable.ThirdID = FirstTable.FirstID);
order by 4,3,2,1
語句中的括號不是必須的,但推薦您加上它。通過如上的語句結構,如果所有的表全部是關閉的,也不會出錯,結果也是正確的。
[返回]
3.如何加密表DBF文件數據
本人用VFP代碼編了一個DBF加密小程序,以供大家參考:
入口參數說明:
filename 表文件名
jm =1 加密 =0 解密
加密思想:用低級文件函數改寫數據庫第一個字節
程序代碼如下:
parameters filename,jm
*處理文件名
if at('.',filename)=0
filename=filename+'.dbf'
endif
if jm=1 &&加密
handle=fopen(filename,2) &&打開文件
keybite=fread(handle,1) &&讀表頭第一個字節
=fseek(handle,0) &&指針移回第一個字節
=fwrite(handle,chr(asc(keybite)+2)) &&用比原來高2的ASCII字符改寫
=fclose(handle) &&關閉文件
else &&解密
handle=fopen(filename,2)
keybite=fread(handle,1)
=fseek(handle,0)
=fwrite(handle,chr(asc(keybite)-2)) &&用比原來低2的ASCII字符改寫
=fclose(handle)
endif
經過這樣處理過的表就不能用USE打開,優點是加密速度快,但不徹底但用
一個文本編輯器打開還是可以看到一些東西,怎樣進一步加密還有待探討。
|