設(shè)為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

12下一頁
返回列表 發(fā)新帖
查看: 5005|回復(fù): 13
打印 上一主題 下一主題

[窗體] 【Access小品】代碼咱們?nèi)ツ模?- 出發(fā)于假設(shè)達到于場景

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2015-2-13 15:07:57 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 todaynew 于 2015-2-13 15:26 編輯

  版友正在隱身同志,希望對我很早以前寫的《一塌糊涂》做一個修改,想要實現(xiàn)選擇幾個字段拼出篩選語句來,對此種想法我頗不以為然。

  關(guān)于通用的篩選方法,有很多版友做過研究,也給出了很多精彩絕倫的處理方案,其中采用字段列表和邏輯運算符拼出邏輯表達式的處理方法確實有人做出來過。不過對于此方法的實用性,我是表示懷疑的。為什么表示懷疑呢?我以為問題出在假設(shè)和前提上。一般來說,我們對于系統(tǒng)某個功能的使用對象--用戶,是需要做出恰當(dāng)?shù)呐袛嗟。也就是說,我們要從假設(shè)出發(fā),來構(gòu)建一種使用的場景,然后在這個基礎(chǔ)上來確立解決問題的方案。

  對于SQL語句的特定邏輯表達式,會出現(xiàn)三類用戶,第一類是完全搞球不清,第二類是滿腦袋門清,第三類是似懂非懂。那么針對這三類用戶就會有三種不同的處理方案。其中似懂非懂的這一類是比較難以處理的,因為你不知道他們具體掌握了多少,他們中的每個個體的程度都會有差異。所以一般來講,這一類用戶你要么歸并到第一類,要么歸并到第二類,不要指望能寫出滿足第三類用戶的東西來。

  通過字段列表和邏輯運算符拼出邏輯表達式的處理方法,實際上是針對第三類用戶來寫的。正如前所述,這是沒必要也達不成目地的。所以實際上通用的篩選方法的處理方案,只是需要針對前兩類用戶處理。而且,從技術(shù)上來說,這種處理方案繁雜,不僅對于編程如此,對于操作也是如此。

  我在《一塌糊涂》一文中所做的示例,它所假設(shè)的用戶實際上是第一類用戶。如果針對第二類用戶寫處理方案,其邏輯會更加簡單。為了說明這兩種處理方案的不同,我在這個示例上略微做了些修改,分別做出針對前兩類用戶的處理邏輯,供初學(xué)者參考。

  總結(jié)一下:問題處理方法的優(yōu)劣,很大程度上不取決于技巧,而取決于合理的假設(shè)。請初學(xué)者時刻記。捍a咱們?nèi)ツ模?br />
示例:

視圖:



本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊

x

本帖被以下淘專輯推薦:

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享分享 分享淘帖1 訂閱訂閱

點擊這里給我發(fā)消息

2#
發(fā)表于 2015-2-13 15:42:59 | 只看該作者
強!
回復(fù)

使用道具 舉報

3#
發(fā)表于 2015-2-13 15:54:39 | 只看該作者
todaynew 老師謝謝分享要是添加一個命令將模糊查詢的結(jié)果輸出到EXCEL更完美了
4#
發(fā)表于 2015-2-13 16:12:13 | 只看該作者
{:soso_e179:}
5#
 樓主| 發(fā)表于 2015-2-13 16:19:00 | 只看該作者
本帖最后由 todaynew 于 2015-2-13 16:25 編輯
yanwei82123300 發(fā)表于 2015-2-13 15:54
todaynew 老師謝謝分享要是添加一個命令將模糊查詢的結(jié)果輸出到EXCEL更完美了

這很簡單呀。你加一個按鈕,然后在按鈕的單擊事件中寫如下代碼:
Private Sub 導(dǎo)出E_Click()
    Dim Qdef As QueryDef  '定義查詢對象
    Dim Queryname As String '定義查詢名稱字符串
    Queryname = "tempQuery"   '可以用任何你喜歡的名稱做為查詢名稱只要不與你的實際數(shù)據(jù)庫中的查詢同名即可
    If DCount("*", "MSysObjects", "Name='" & Queryname & "' and Type=5") = 0 Then   '判斷查詢是否存在
        Set Qdef = CurrentDb.CreateQueryDef(Queryname)  '創(chuàng)建查詢對象
    Else
        Set Qdef = CurrentDb.QueryDefs(Queryname)          '獲取查詢對象
    End If
    Qdef.Sql = Me.數(shù)據(jù)列表.RowSource                               '以列表框的數(shù)據(jù)源修改查詢語句
    DoCmd.OutputTo acOutputQuery, Queryname             '按向?qū)?dǎo)出需要的格式
   
    Qdef.Close: Set Qdef = Nothing   '關(guān)閉查詢對象并置空
End Sub

點擊這里給我發(fā)消息

6#
發(fā)表于 2015-2-15 04:47:52 來自手機 | 只看該作者
學(xué)習(xí)學(xué)習(xí),謝謝分享!
7#
發(fā)表于 2015-2-15 08:19:18 | 只看該作者
todaynew 發(fā)表于 2015-2-13 16:19
這很簡單呀。你加一個按鈕,然后在按鈕的單擊事件中寫如下代碼:
Private Sub 導(dǎo)出E_Click()
    Dim Q ...

老師看看系統(tǒng)提示未聲明,是什么原因?謝謝

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊

x
8#
 樓主| 發(fā)表于 2015-2-15 08:29:41 | 只看該作者
yanwei82123300 發(fā)表于 2015-2-15 08:19
老師看看系統(tǒng)提示未聲明,是什么原因?謝謝

要引用DAO 3.6,估計你少這個引用
9#
發(fā)表于 2015-2-15 12:31:31 | 只看該作者
todaynew 發(fā)表于 2015-2-15 08:29
要引用DAO 3.6,估計你少這個引用

謝謝幫助。
10#
發(fā)表于 2015-2-20 09:47:02 | 只看該作者
挺不錯。

那個數(shù)據(jù)列表用子窗體是不是更具通用性?

還有打開文件對話框沒有錯誤處理,如果沒有選擇文件會報錯
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

QQ|站長郵箱|小黑屋|手機版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2025-7-17 01:18 , Processed in 0.083627 second(s), 36 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表