非高手請勿嚐試,此題很坑,慎試。
舉例:我有三個資料表
借閱表
欄位名稱為:「ID」、「借閱人」、「書本大綱」、「書本細目」、「大綱ID」、「細目ID」
大綱表
欄位名稱為:「綱ID」、「大綱名稱」
細目表
欄位名稱為:「目ID」、「細目名稱」
我製作了表單,目地:「查詢借閱人」。
我利用了VBA的方式
把表單的查詢資料表加入了「借閱表」,並使「大綱ID」的準則設定如下:
大綱()
VBA用法,內文如下:
Public bookMainrule
Public Function 大綱(){ 大綱=bookMainrule}
這樣方便我在表單,用下拉式清單,讓使用者可以選「大綱」來查詢。
利用VBA傳「綱ID」讓:下拉式選單傳值給「表單查詢表」
問題來了
做到這裡,只能查「大綱」,有哪些「借閱人」借走。
比如說(使用者在表單按完下拉式):
動物類->小明、大德、阿美
史記類->明太、林一
我想再加入細目名稱
列出「大綱」的「細目名稱」,有哪些「借閱人」借走。
動物類(金絲雀)->小明、大德
史記類(大清傳)->林一
這下有二個下拉式選單,我都是用VBA的方式傳值給「查詢表」
目前都很成功,我也有做出來。
但是我要的是,
選完「大綱」時可列出所有人
以及
選完「大綱」「細目名稱」時可列出相關人
這時就做不到了
變成
選完「大綱」時不列出(因為「未選」細目名稱)
以及
選完「大綱」「細目名稱」時可列出相關人
求解
已經嚐試利用判斷準則如下,都不俱效用:
IIF(細目ID()="","Is Not Null",細目ID())
IIF(細目ID()="","*",細目ID())
IIF(細目ID()="",char(34)&*&char(34),細目ID())
就連VBA設定,也不行。
bookMainrule = "Is Not Null"
bookMainrule = "*"
bookMainrule = char(34)&*&char(34)
沒有很難啊,這真正的問題是資料儲存跟需求差距太大,調整資料庫架構,使其更直覺,ER Model如下:
透過分類建立綱目的tree狀架構,看會員要借閱"綱"還是"目"都可以。
感謝分享解惑
沒錯
我可以很簡單用其他的語言,
比方PHP+MYSQL或ASP.NET+ACCESS,
或是visual basic直接做一個EXE來執行,
就可以達到我的目標!
但是今天,我是用純Acesss來做。
來回答我的,只有三種答案。
一:不可能做到,我白問了(答案:準則只支援INT、String)。
二:成功給了一個可以傳*或Is Not Null的方式。
三:不走準則過濾,直接用VBA連資料庫調資料(這就像PHP+MYSQL了)。
答案是GOOGLE不到的。
大學的專科書可能也沒寫。
所以只有這領域專業的能回答我。
答案也只會有這三種。
懂的人一看就知道答案了…
其它的還是先路過吧...時間省下來…
我的中文造詣可能沒有很好,聽不太懂你的意思...
我的建議是更改資料庫設計(所以只有ER Model),因為很明顯你資料存放的設計跟需求差異挺大的,跟其他程式語言沒有關係阿。
謝謝您的回答...
但我不是問資料庫的結構....
我舉例的借閱表、大綱表、細目表
在access裡面,借閱表是提供查詢用的「主表」。
大綱表、細目表是給下拉式選單用的「材料表」......
所以除非你很懂Access表單,不然很難懂我在說什麼…
像是在EXCEL,你要給人去用下拉式選單,給人去選。
你還是要給程式表格資料,不然它哪知道要秀哪些東西。
我或許知道你真正的問題了....
借閱
是當人
去借書
才會產生的資料,我應該是先有人
和書
,然後人和書產生借閱
行為後才有借閱資料。在這範例中,人、書為Entity
,這些資料室在生活中可以對應到實際的東西;借閱是Relationship
,是實際物體之間互動時所產生的資料,當沒有Entity,Relationship將沒有任何意義。我一開始看你的論述,還以為你對資料庫有一定程度的了解,才會覺得給ER Model已經足夠,看來是我誤會了。
關於那個ER Model的設計,大致觀念詳細如下:
ID | Name | Type |
---|---|---|
1 | 動物類 | 綱 |
2 | 史記類 | 綱 |
3 | 金絲雀 | 目 |
4 | 大清傳 | 目 |
ID1 | ID2 |
---|---|
1 | 3 |
2 | 4 |
ID | Name |
---|---|
1 | 小明 |
2 | 大德 |
3 | 阿美 |
4 | 明太 |
5 | 林一 |
CID | MID |
---|---|
3 | 1 |
3 | 3 |
4 | 5 |
這樣子的設計,可以根據你的需求去撈資料,而欄位可以自己思考要那些:
select * --
from 分類 as C, 借閱 as B, 會員 as M
where C.ID = B.CID and B.MID = M.ID
select *
from 分類 as C1, 綱目 as I, 分類 as C2
where C1.ID = I.ID1 and I.ID2 = C2.ID
大哥,Access是資料庫沒有錯。
我前面也都有講,
我可以做成PHP+Mysql或Asp.net+ACE。
非常簡單就能完成。
你說的也都很好。
但它Access也是微型程式啊!!!
它是可以做成一個,電腦白痴都會用的微EXE檔啊!!
可以手點一點輸入資料、查詢的好用東西啊!
就像EXCEL的樞紐分析表啊!!
我問的是表單,不是資料庫的結構。
Access不是只有資料庫而已。
你看看上面影片,
有什麼資料庫正規化的東西嗎?
沒有吧??!!你是不是沒看到這些東西?
這東西在台灣,很多地方都有在使用。
工程事務所、會計事務、昌儲管理、中小企業、醫療體系。
包括早期的銀行、農會
因為它是閉包,不用連網
隨處可見,是很常見的東西!!
(當然也有公司製作成純VB.EXE的那例外)
15年前,很多大學都在教這些東西。
Excel、Acess 含VBA
一本500~900頁分上下冊
一頁字體只有12點,沒圖的一頁就有1200字。
上下本總計10萬字以上(不含圖)。
現在大學都改教python+AI了(微笑..)
教這個畢業等於失業的東西。
希望你看完會覺得很離譜。
學習曲線很低,就可以達到用戶的一般需求。
畢竟市場隨處可見
你們的競爭對手,就是這些東西。
很多商家,寧願繼續使用這些東西。
也不要去用PHP、ASP.NET、RUB什麼的
用一用,一下子被僵屍DDOS
一下資安被駭。
這些東西就是方便用戶「搞自閉」做帳用的。
為什麼要線上化??
一邊要面對ChatGPT,一邊要面對VBA。
所以辛苦你們了
你看看現在的大學生,學什麼Python。
頂多車牌辯視、人臉辨視這種保全用的以外。
有什麼用途呢?
不信你去各所大學,找應屆畢業生。
要他們用Python寫一個微型的計帳系統。
看是不是一整大片的人,原地愣在那裡。
所以我....
不是在問結構的東西,拜托您了,謝謝您真誠的回答。
我要給你最佳解答,也很奇怪。不符題意。
以上謝謝。
那影片第14集的客戶資料,也沒有正規化啊,你怎麼不去YOUTUBE留言一下?
我三個表,有二個表是拿來做下拉式表格的,沒有要關聯用,是要正規化什麼
主表是查詢表,沒有正規化的意義。
通篇探討正規化,能解決問題嗎?
查詢表的意思是,已經inner join好的表,給表單呈現用。
表單沒有在用資料表的,都是查詢表。
1主(查詢表) 2材(按鍵用)
總共3表
雖然離題很遠了,還是謝謝你們的回答。
這是寫在表單,改變表單資料來源
me.RecordSource="select a.ID, a.借閱人, a.書本大綱, a.書本細目, a.大綱ID, b.大綱名稱, a.細目ID, c.細目名稱
from 借閱表 as a left join
大綱表 as b on a.大綱ID=b.綱ID left join
細目表 as c on a.細目ID=c.目ID
where a.大綱ID like '" & nz(me.大綱ID查詢欄位,"*") & "'
or a.細目ID like '" & nz(me.細目ID查詢欄位,"*") & "'"
你也可以修改一下放到查詢裡面