表單上分別有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
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
文章標籤
全站熱搜

不好意思 我已解決第二個問題 不過我還是不知道該怎麼處理第一個問題 我重述一下我的問題好了 在表單上加了一個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 不知有沒有人能教教我如何解決...謝謝...
又沒人理我 只好再自問自答 我用的方法是當判斷沒有第二層node(代表資料表名稱的node)被選擇時 set datagrid.datasource = nothing 不知道有沒有人知道比較好的方法可以教教我...敬請賜教...