表單上分別有treeview adodc datagrid控制項
treeview上的Node可以分兩層 第一層顯示的是我所選擇的.mdb檔案的完整路徑及檔名(可一次選擇二個以上的.mdb檔)
第二層顯示的是每個資料庫檔案所包含的資料表名稱
我的目的在於當我核取treeview上第二層node時(代表資料表名稱) datagird所顯示的資料也能跟著改變
我現在遇到的問題有兩個
第一個:當我核取treeview上第一層node時(代表資料庫檔案完整路徑) 我利用下面的程式碼先將選取Node.checked設為false 然後再利用msgbox出現警告標語 但是當我將msgbox按下確定後 選取的node.checked卻又變成true
第二個:我利用for next迴圈使treeview上只能單選(因為我希望datagrid只顯示一個資料表) 當treeview沒有第二層node被選取時我利用datagird.clearfields來清除datagrid上的資料 但是這個方法行不通
以上就是我的問題 衷心盼望哪位好心人士能教教我...
Private Sub treListOfTables_NodeCheck(ByVal Node As MSComctlLib.Node)
Dim ConnStr As String
 
 If Node.Checked = True And Node.Children >= 1 Then
  Node.Checked = False
  MsgBox "請選擇資料表", , "錯誤"
 ElseIf Node.Checked = True Then
  ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0" & ";Data Source=" & Node.Parent.Text
  For i = 1 To frmListOfRecord.treListOfTables.Nodes.Count
   If i <> Node.Index Then
    frmListOfRecord.treListOfTables.Nodes(i).Checked = False
   End If
  Next i
  frmListOfRecord.Adodc1.ConnectionString = ConnStr
  frmListOfRecord.Adodc1.CommandType = adCmdTable
  frmListOfRecord.Adodc1.RecordSource = Node.Text
  frmListOfRecord.Adodc1.Refresh
 Else
  If Node.Checked = False Then
   frmListOfRecord.DataGrid1.ClearFields
  End If
 End If

End Sub
創作者介紹
創作者 vbqa 的頭像
vbqa

小吳 VBQA 程式設計討論

vbqa 發表在 痞客邦 留言(2) 人氣()


留言列表 (2)

發表留言
  • beastieboys
  • 不好意思 我已解決第二個問題 不過我還是不知道該怎麼處理第一個問題 我重述一下我的問題好了
    在表單上加了一個treeview控制項 treeview上的node可以分兩層(第二層node為第一層node的children的意思) 利用nodecheck事件來判斷當第一層node的node.ckecked屬性如果是true的話
    利用
    node.checked = false
    msgbox "請選擇資料表", ,"錯誤"
    使被選取的第一層node.checked屬性變成false
    因為node.checked = false先執行
    所以當msgbox出現的時候 node.checked的確是false
    但是當我按下msgbox的確定鈕後 node.checked屬性又自動恢復成true
    不知有沒有人能教教我如何解決...謝謝...
  • beastieboys
  • 又沒人理我 只好再自問自答
    我用的方法是當判斷沒有第二層node(代表資料表名稱的node)被選擇時
    set datagrid.datasource = nothing
    不知道有沒有人知道比較好的方法可以教教我...敬請賜教...