none
option和combo搭配使用 RRS feed

  • 問題

  • 有個問題想要請教一下 目前是用6.0 有一個畫面 http://i.imgur.com/fnt62.png

    上面所有的篩選條件目前是沒功能的 現在只是把所有欄位都顯示出來

    後來我想要加入篩選條件 就加入了以上兩個option和combobox

    option指的是sam_type欄位 只有兩個值(STM和SAM)

    而combobox指的是sam_ids欄位 有五個不同的值(出貨、退貨、廠進、廠退、銷貨)

    我就先在原本的sql查詢字串上面來做動作

    Dim WhereType As String

    Dim squery As String

    If Option1.value Then '如果選擇的是廠商(預設)

    WhereType = "SAM_TYPE = 'STM' "

    End If

    If Option2.value Then '如果選擇的是客戶

    WhereType = "SAM_TYPE = 'SAM' "

    End If

    squery = "select sad_k1,sad_k2,sad_inv,sam_key,sam_dte,sam_cus,sad_qty,sam_ids,sam_type " _
    & "from sadf join samf on sad_k1=sam_key " _
    & "where " & WhereType & "" _
        & " order by sam_dte,sam_key"

    然後我想到 那要怎麼對combo作變化呢??

    我希望的是在option篩選sam_type之後 combobox會顯示剩下的sam_ids值

    如果我點選的是STM 那麼combobox顯示"廠進"和"廠退"兩個值

    如果我點選的是SAM 那麼combobox顯示"出貨"、"退貨"和"銷貨"兩個值

    最後再按查詢鍵 把篩選完後的結果顯示出來

    然後不能在combobox控制項的List直接打項目進去

    因為sam_ids值不可能永遠是5個 所以不能直接寫死

    想請問這樣的事 有辦法做到嗎?

    • 已編輯 Qoo 2012年7月31日 上午 08:15
    2012年7月31日 上午 07:01

解答

  • 1. SQL Injection ..... 請改用參數化查詢

    2. 多建一個資料表 兩個欄位 SAM_TYPE跟SAM_IDS

        存那五筆資料

       然後在 option的click事件 去更新combobox的內容(記得先呼叫 Clear方法) 及datagrid的內容


    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度

    • 已標示為解答 Qoo 2012年8月1日 上午 02:01
    2012年7月31日 下午 04:40

所有回覆

  • 您好,您可在資料庫中建立相對應的Table,再依您的選擇取出那些選項(出貨、退貨、廠進、廠退、銷貨)

    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年7月31日 上午 08:15
  • 請問如果可以的話

    combobox控制項的List直接打項目進去

    然後用if去判斷option抓到的值 再來隱藏combobox的項目

    這樣是最快的方法嗎?



    • 已編輯 Qoo 2012年7月31日 上午 09:05
    2012年7月31日 上午 08:38
  • 可以的!

    就原本是從資料庫來,也可改從INI檔,或是寫在程式之中!


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年7月31日 上午 08:54
  • If Option1.value Then '如果選擇的是廠商(預設)

    WhereType = "SAM_TYPE = 'STM' "

    Combo1.AddItem "廠進"
    Combo1.AddItem "廠退"

    End If

    If Option2.value Then '如果選擇的是客戶

    WhereType = "SAM_TYPE = 'SAM' "

    Combo1.AddItem "出貨"
    Combo1.AddItem "退貨"
    Combo1.AddItem "銷貨"


    End If

    請問這樣寫的話 是不是不太好呢??

    因為每次更換option 然後combo的item都會累加 把上一次選的給加進去..

    2012年7月31日 上午 10:07
  • 1. SQL Injection ..... 請改用參數化查詢

    2. 多建一個資料表 兩個欄位 SAM_TYPE跟SAM_IDS

        存那五筆資料

       然後在 option的click事件 去更新combobox的內容(記得先呼叫 Clear方法) 及datagrid的內容


    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度

    • 已標示為解答 Qoo 2012年8月1日 上午 02:01
    2012年7月31日 下午 04:40
  • 謝謝您的解答!
    2012年8月1日 上午 02:01