谢谢热心帮助
问题出在Public ds As New Data.DataSet() 上了,是吗?
现在cmbfiled_SelectedIndexChanged,显示该字段的数据类型,现在需要重新打开数据表了,这种方法我实现了
Public Class frm_data
'Private ds As New Data.DataSet()
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdopen.Click
Dim ds As New Data.DataSet()
Dim dbaname As String = txtdba.Text '指定数据库文件路径及名称
Dim connStr As String = "provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & CurDir() & dbaname
Dim tabname As String = cmbtable.Text
Dim conn As OleDb.OleDbConnection = New OleDb.OleDbConnection(connStr)
Dim cmd As OleDb.OleDbCommand = New OleDb.OleDbCommand
Dim sql As String = "select * from " & tabname
conn.Open()
cmd.Connection = conn
Dim da As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(sql, conn)
ds.Clear()
da.Fill(ds, "pylj")
DataGridView1.DataSource = Nothing
Dim k As Integer = DataGridView1.ColumnCount - 1
'For j As Integer = 0 To k
'DataGridView1.Columns.Clear()
' DataGridView1.Columns.Remove(DataGridView1.SelectedColumns(j))
'Next
DataGridView1.Refresh()
MsgBox("d")
DataGridView1.DataSource = ds.Tables(0)
DataGridView1.Refresh()
Dim n As Integer = ds.Tables(0).Columns.Count - 1
Dim y As Integer = cmbfiled.Items.Count - 1
For x As Integer = 0 To y
cmbfiled.Items.Clear()
Next
cmbfiled.Refresh()
For i As Integer = 0 To n
cmbfiled.Items.Add(ds.Tables(0).Columns(i).ColumnName)
Next
cmbfiled.SelectedIndex = 0
End Sub
Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
End Sub
Private Sub DataGridView1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.DoubleClick
MsgBox(DataGridView1.CurrentCell.Value)
End Sub
Private Sub frm_data_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
txtdba.Text = "\data\py.mdb"
End Sub
Private Sub butconn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butconn.Click
cmbtable.Items.Clear()
For i As Int16 = 0 To GetAllTableName.Count - 1
cmbtable.Items.Add(GetAllTableName.Item(i).ToString)
'MsgBox(GetAllTableName.Item(i).ToString)
Next
cmbtable.SelectedIndex = 0
End Sub
Private Sub cmbfiled_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbfiled.SelectedIndexChanged
Dim i As Integer = cmbfiled.SelectedIndex
Dim ds As New Data.DataSet()
Dim dbaname As String = txtdba.Text '指定数据库文件路径及名称
Dim connStr As String = "provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & CurDir() & dbaname
Dim tabname As String = cmbtable.Text
Dim conn As OleDb.OleDbConnection = New OleDb.OleDbConnection(connStr)
Dim cmd As OleDb.OleDbCommand = New OleDb.OleDbCommand
Dim sql As String = "select * from " & tabname
conn.Open()
cmd.Connection = conn
Dim da As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(sql, conn)
ds.Clear()
da.Fill(ds, "pylj")
txtfieldtype.Text = ds.Tables(0).Columns(i).DataType.Name
End Sub
Function GetAllTableName() As System.Collections.ArrayList
Dim t As New System.Collections.ArrayList()
Dim Rs As New ADODB.Recordset()
Dim dbaname As String = txtdba.Text
'指定数据库文件路径及名称
Dim connStr As String = "provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & CurDir() & dbaname
Dim conn As New ADODB.Connection
conn.Open(connStr)
Rs = conn.OpenSchema(ADODB.SchemaEnum.adSchemaTables)
Do While Not rs.EOF
If rs("TABLE_TYPE").Value = "TABLE" Then
t.Add(rs("TABLE_NAME").Value)
End If
rs.MoveNext()
If rs.EOF Then Exit Do
Loop
Rs.Close()
Rs = Nothing
Return t
End Function
End Class
现在我想把ds 定义成全局的,这样一句
txtfieldtype.Text = ds.Tables(0).Columns(i).DataType.Name
就可以
--------
现在我发现问题是ds里面数据没有清除,这个应该怎么办??