none
vb6用ado存資料,如何設成自動? RRS feed

  • 問題

  • 原本vb6用ado存資料,大概是用以下方式:

    sql1 = "select * from table1"

    rs1.Open sql1, cnn2, adOpenStatic, adLockOptimistic

    rs1!date1= txtDate.Text

    rs1!username= txtNmae.Text

    rs1!kind= cmbType.Text

    ..... (假設很多欄位)

    rs1.Update

    rs1.Close

    -------------------

    可否改設成自動方式?

    先將相關資料,設在各欄的 .tag 中,再以下式

    For Each Control In Controls

        ......  → 此段不會寫!

    Next

    for i = 0 to 欄位數

        rs1.fields(i) = ......  → 此段不會寫!

    next i

    請問有可能做到嗎?

    謝謝!

    2012年10月19日 上午 07:56

解答

  • 您好,
    如果都是TextBox的話,如下, tag是對應到RS1的順序哦

    Dim ctl For Each ctl In Controls If TypeOf ctl Is TextBox Then

    rs1.fields(ctl.Tag) = ctl.Text End If Next

    或是您的TextBox是Array,您可以用

    dim nIdx
    For nIdx = txtFields.LBound To txtFields.UBound
        rs.Fields(nIdx) = txtFields(nIdx).Text
    Next nIdx


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



    • 已編輯 亂馬客 2012年10月19日 上午 08:38
    • 已標示為解答 symis 2012年10月24日 上午 06:38
    2012年10月19日 上午 08:31

所有回覆

  • 您好,
    如果都是TextBox的話,如下, tag是對應到RS1的順序哦

    Dim ctl For Each ctl In Controls If TypeOf ctl Is TextBox Then

    rs1.fields(ctl.Tag) = ctl.Text End If Next

    或是您的TextBox是Array,您可以用

    dim nIdx
    For nIdx = txtFields.LBound To txtFields.UBound
        rs.Fields(nIdx) = txtFields(nIdx).Text
    Next nIdx


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



    • 已編輯 亂馬客 2012年10月19日 上午 08:38
    • 已標示為解答 symis 2012年10月24日 上午 06:38
    2012年10月19日 上午 08:31
  • 您的方法可行,感謝!
    2012年10月24日 上午 06:37