這與數據庫編程有什麼關系?關系可大了。同志們學過Pascal、BASIC、C(C )沒有?假如沒有,FOXBASE、FOXPRO應該學過吧?按以上這些語言編程,都是過程化的,說白一點就是一個數據一個數據、一條記錄一條記錄去處理(FOXBASE、FOXPRO不完全這樣,但書上也經常是這樣介紹的),當初我接觸Access97時,一下子沒有了IF、FOR這些語句(指數據處理),都用SQL語句,真是找不到北了,好在我學SQL語言時,也盡量忘掉這個IF、FOR,到我忘得差不多時,功夫也進了一大步,原來要編一大段程序,現在一兩條SQL語句搞定,就算用多幾條SQL語句,由於是在圖形界面下做,可視化操作,拉拉扯扯,再修改一下生成的SQL語句,也就省事多了。
由於Access具備完整的SQL語言(FOXBASE沒有、FOXPRO不完整),我從Access97開始用Access編程,到現在為止,DAO、ADO很少用,加上最近從愛賽思上接觸的一些技術,基本上不用DAO、ADO都可以了,可以從我的“未完工的庫存治理”中看出,只是在非凡情況下才偶然用一下。(少用,但不是不用,還得學,不要誤解)
如何學好數據庫編程?下面介紹一下本人的一些經驗,僅供參考:
1.首先要把原來一個數據一個數據、一條記錄一條記錄的數據處理方式忘掉,越徹底越好。
現在用成批處理了。少用記錄集一條記錄一條記錄地處理,盡量用SQL語句。
2.學好關系數據庫的理論,尤其是規范化理論,表的設計一定要規范化,最起碼要規范化到第三范式。集合運算(並、交、差)。關系運算(選擇、投影、連接)。其中連接與規范化是緊密結合的。
3.運用面向對象的技術:面向對象的分析OOA、面向對象的設計OOD、面向對象的編程OOP,根據表的關系,用窗體和子窗體、報表和子報表,仿真面向對象,這樣可以增加程序的可讀性和可維護性。(這是高級技術,同志們不要輕視,做大項目你就知道有用了)
4.用查詢時,通常一步做不出來,可以分幾步做,本人通常是這麼做的,從我給網友回復的例子中也可以看得出。為什麼要這樣做?(1)有些是SQL語言的限制,沒辦法一步做出來,逼的;(2)可以檢查每一步查詢的結果,輕易調試;(3)增加可讀性,便於日後維護。
5.查詢的結果用窗體顯示或用報表打印,兩者的技術差不多。通常改變打開窗體或報表的條件就可控制顯示或打印的記錄范圍。另外用查詢做數據源時,動態改變查詢中的SQL語句,比在查詢中引用窗體的控件要方便,因為SQL語句生成是在VBA中,可以先存放在字符變量中,然後再更新查詢的SQL語句,這樣就可以用斷點來檢查變量值對不對,假如在查詢中引用窗體的控件,尤其是包含IIF()函數時,調試是很困難的。
6.開發一個系統,首先要解決技術問題,即算法,用簡單例子,把算法弄懂了,再具體設計,這一點從網友的提問中可以看出,有很多人問題表達不清楚,有的人其中夾了很多與算法無關的東西,尤其是很專業的東西,別人不輕易看得明白,由於算法沒搞清楚,程序就無法編了。
7.不要使用過多的工具特性,使用過多的工具特性會使可讀性降低,可維護性差,要別人幫忙時難以得到幫助,更要命的是可移植性差,從MDB到ADP就可以體會到了,所以在編程時可讀性很重要,可移植性更重要,你甘心自己的程序就固定在一個環境下運行嗎?你甘心永遠用一個工具搞開發嗎?為了你的“錢途”,不要玩弄太多的技巧,當然技術研究是另外一碼事。