簡體   English   中英

用SQL Server后端替換Access中的查找貸款的有效方法

[英]Efficient way to replace find loan in Access with SQL Server back-end

我有一個用於數據輸入的訪問前端用戶表單,該表單通過ODBC連接鏈接到SQL Server后端。 用戶當前正在使用Access中的“查找記錄”功能來查找數據記錄,但是隨着表中記錄數量的增加,此過程變得相當緩慢。 我知道有一種查找記錄的更有效的方法,我相信通過讓SQL Server而不是Access來完成工作,但是我找不到能夠描述最佳方法的任何東西。 謝謝!

當然,在表單上執行某些篩選是太遲了,因為您只能篩選已經加載的表單!

最好的方法是去一個公共汽車站,向90歲的女士咨詢。 她的回答將為您提供解決方案並解決此問題。

因此,讓我們首先問這位90歲的女士以下問題:

使用即時櫃員機時,下載所有帳戶對即時櫃員機有意義,然后問您要使用哪個帳戶?

老太太會回答:那真是愚蠢–您想問一下要使用哪個帳戶,然后再下載一個帳戶!

當您使用Google搜索互聯網時,情況也是如此-您無需將整個互聯網下載到計算機中,然后使用ctrl-f搜索下載到該網絡瀏覽器中的所有內容。

因此,對於Access,如果您使用表單過濾器或ctrl-F,則只能搜索已經從SQL Server下載的表單。 由於公交車站的老太太會告訴您這很瘋狂,並且,如果您曾經使用過Google或幾乎其他任何軟件,則關鍵概念是首先詢問用戶要搜索的內容,然后根據該請求下載結果。

因此,請勿將所有或什至任何記錄下載到用於搜索的表單中,直到您知道搜索內容為止!

該表格實際上應該是不受約束的(沒有數據源)。 然后,您可以在表單頂部附近簡單地放置一個文本框,並允許用戶鍵入姓氏(或僅鍵入該姓氏的前幾個字符)。 然后,您可以使用類似於此訪問表單的繼續表單來顯示搜索結果:

在此處輸入圖片說明

請注意,用戶在上面如何鍵入“ Smi”(正在尋找鐵匠)。

因此,即使在該文本框更新后的代碼也將是這樣:

dim strSQL   as string

strSQL = "select * from tblCustomer where LastName Like "'" & me.txtLastName & "*'"
me.RecordSource = strSQL

因此,您只需將SQL與用戶搜索的條件一起塞入SQL的“數據源”形式即可。 在這種情況下,如果該數據庫有100萬行或1000萬行,則僅提取請求的記錄。 這樣的搜索通常會在不到1秒的時間內發生-甚至對於具有數百萬行的大型表也是如此。

因此,請勿使用過濾器,因為那樣只能過濾您下載到該表單中的現有記錄。 而且不要使用ctrl -f進行搜索,因為那樣只能再次搜索已經下載到表單中的記錄。 但是,在上述形式中,盡管ctrl-f(內置的Access搜索)可基於史密斯搜索進行50場左右的匹配,但仍可用於搜索-因此,我們可以在提取了SQL服務器中的記錄。

因此,每次簡單地從頭開始進行STUFF檢索就形成SQL,將SQL放入表單記錄源中-結果是訪問只會將這些記錄從SQL Server中拉出-而且即使對於大型表,它也會相當快地發生。 (當然,假設您已索引了用於快速搜索的公共列)

如您在上面的Access示例中所看到的,已經進行了搜索並顯示了結果“列表”。 在上面,我們還提供了一個“編輯”按鈕來編輯一個記錄。 因此,在上方,用戶可以單擊該按鈕,然后我們打開編輯表單以編輯該記錄的“詳細信息”。 只要我們使用“ where子句”表格,那么該表格只會加載一條記錄,因此再次啟動該表格以編輯一條記錄將立即發生-即使對於1或500萬行的表也是如此。

請注意,此編輯表單可以直接綁定到您擁有的巨大鏈接表。 “ where”子句將限制為您提取的數據,盡管該格式已綁定到大表,但僅提取一條記錄。

因此,按照上面的代碼啟動窗體,該窗體僅按“眼鏡”按鈕后面的上方加載的一條記錄來編輯一條記錄,如下所示:

 dim strWhere   as String

 strWhere = "ID = " & me!ID

 docmd.OpenForm "frmCustomers",,,strWhere

SQL直通查詢用於將命令直接發送到SQL Server。 通過使用SQL直通查詢,您可以直接使用服務器表,而不是讓Microsoft Jet數據庫引擎處理數據。

這是指向Microsoft文章的鏈接,該文章顯示了如何在Access中創建SQL傳遞查詢: https : //support.microsoft.com/zh-cn/kb/303968

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM