在一個Groupbox里有多個多選框
如下圖:

資料表結構為

我設定好
A1 Checkbox 選中 就對資料表里的1 2 4 6 8 更新資料
A2 Checkbox 選中 就對資料表里的9 11 12 13 更新資料
例如
我選中了A1 Checkbox,數量是5 點提交就向資料表里插入一條記錄
表中的資料記錄為:

我選中了A2 Checkbox,數量是6 點提交就向資料表里插入一條記錄
表中的資料記錄為:

其它的Checkbox對應了其它的欄位,類似這種需求
我怎么方便寫到資料庫呢?實際程式中有12個多選框,對應的欄位也多,
請教這個一個好的方法!
uj5u.com熱心網友回復:
自己頂一下 !uj5u.com熱心網友回復:
可以結合 checkBox.hint (hint 里頭可以存盤欄位,比如采用格式 fieldA,fieldB,fieldC)來做處理,這樣就不需要寫一堆的代碼了。所有checkBox的onclick就可以統一處理
if (not TCheckBox(sender).checked) or (StrToIntDef(edtNum.text,0)<>5) then exit;
//決議欄位并拼裝SQL腳本
//寫入資料....
uj5u.com熱心網友回復:
看著圖片,是操作EXCEL表?本地的直接用RecordSet(ADOQuery之類的)的EDIT,然后POST就行了
提交那里加入代碼:
AdoQuery1.Edit;
for i := 0 to groupbox1.ControlCount-1 do
if groupbox1.Controls[i].ClassName='TCheckBox' then
begin
AdoQuery1.Fields[TCheckBox(groupbox1.Controls[i]).Tag].AsString:=edtSL.Text; //這里暫且用CHECKBOX的TAG來標記你的欄位,規則自己再想一下就好了。
end;
AdoQuery1.Post;
uj5u.com熱心網友回復:
樓主還是老老實實寫代碼吧,對每一個復選框寫一個SQL更新功能,在提交的時候看選了幾個就運行幾個.uj5u.com熱心網友回復:
你不覺得這樣做很蠢嗎?
uj5u.com熱心網友回復:
是啊,有了如此蠢的設計,才有如何笨的實作,一環套一環
uj5u.com熱心網友回復:
如果有規律,可以在代碼中實作這個規律。如果沒規律,要么將對應關系寫到代碼中,或是用一個表保存每個CheckBox對應表中的那些列,最后在代碼中通過這個表拼出Insert陳述句,執行。uj5u.com熱心網友回復:
如果有規律,可以在代碼中實作這個規律。如果沒規律,要么將對應關系寫到代碼中,或是用一個表保存每個CheckBox對應表中的那些列,最后在代碼中通過這個表拼出Insert陳述句,執行。
沒有規律啊
uj5u.com熱心網友回復:
沒有規律就不好處理了,只是簡單的幾個還可以,如果十個以上就比較多了。基本的方法還是使用回圈來處理:
1.可以把checkbox控制元件設定為陣列控制元件(D里面沒有控制元件陣列不方便)
2.針對每個checkbox指定對應欄位陣列
3.回圈判斷每個checkbok控制元件是否被選中,如果選中則根據對應的陣列長度回圈插入資料
uj5u.com熱心網友回復:
還是有一定的代碼量的。uj5u.com熱心網友回復:
如果有規律,可以在代碼中實作這個規律。如果沒規律,要么將對應關系寫到代碼中,或是用一個表保存每個CheckBox對應表中的那些列,最后在代碼中通過這個表拼出Insert陳述句,執行。
沒有規律啊
沒有規律,就將對應關系寫到代碼中,或是保存到資料庫的表中,然后拼SQL陳述句。
uj5u.com熱心網友回復:
還有什么方法?大神們


uj5u.com熱心網友回復:
比較 好的辦法是通過SQL 的Insert陳述句,進行插入操作。一條陳述句插入一行資料。
uj5u.com熱心網友回復:
說實話,有點不知所云uj5u.com熱心網友回復:
還是insert代碼寫吧,方法有不過寫起來也不必insert少。uj5u.com熱心網友回復:
比較 好的辦法是通過SQL 的Insert陳述句,進行插入操作。
一條陳述句插入一行資料。
一條一條的插 ,有沒有比這個更好的方法啊
uj5u.com熱心網友回復:
說實話,有點不知所云
很容易理解啊
就是一個Checkbox 對應數字庫里幾個欄位 選中這個Checkbox 就向資料庫插入這些欄位的值啊
uj5u.com熱心網友回復:
說一下我的思路1、首先需要一張表來保存Checkbox對應哪些欄位,并在程式運行的時候將對應的表資料加載到資料集或者記憶體表中。
2、重點就是寫一個程序遍歷checkBox,根據是否選中對應地從加載的資料集或者記憶體表中篩選出欄位。
3、對于提交資料就有兩種方案了,代碼量差不多,要么組織sql,要么先保存資料集然后提交。
不知道,大神有什么好的思路了。
uj5u.com熱心網友回復:
還是insert靠譜uj5u.com熱心網友回復:
比較 好的辦法是通過SQL 的Insert陳述句,進行插入操作。
一條陳述句插入一行資料。
一條一條的插 ,有沒有比這個更好的方法啊
插入資料,只能是一條一條的插入了。沒有捷徑可尋。
uj5u.com熱心網友回復:
我只提供思路哈:1,每個checkbox對應一個表,進行添加,比如:
A1 Checkbox 選中 就對資料表里的1 2 4 6 8 更新資料
理解為 table1 的 L1,L2,L4,L6,L8添加或者修改一條記錄;
A2 形成 table2,以此類推
2,根據Table1,Table2,....Tablen建立查詢,合并到一個表/視圖;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/84803.html
標籤:數據庫相關
上一篇:delphi 如何獲取MP3音頻檔案的時間長度,然后可以從任意一個時間點開始播放到某個時間點
下一篇:有一個奇怪的問題,尋高手解決
