16,554
社区成员
发帖
与我相关
我的任务
分享
Imports System.Data.OleDb
Public Class Form1
Private Const ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DB\Database.mdb;Persist Security Info=True"
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
QueryData()
BindData()
End Sub
Private mobjDataSet As DataSet
Private Sub QueryData()
Using objConn As OleDbConnection = New OleDbConnection(ConnectionString)
mobjDataSet = New DataSet("Data")
Dim strSql As String = "select * from user_sheng"
Dim objDbAdapter As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(strSql, objConn)
objDbAdapter.Fill(mobjDataSet, "user_sheng")
Dim emptyRow = mobjDataSet.Tables("user_sheng").NewRow
mobjDataSet.Tables("user_sheng").Rows.InsertAt(emptyRow, 0)
objDbAdapter.SelectCommand.CommandText = "select * from user_shi"
objDbAdapter.Fill(mobjDataSet, "user_shi")
objDbAdapter.SelectCommand.CommandText = "select district_name, district_id, b.city_id as city_id from user_qu a, user_shi b where a.city_id = b.city_id"
objDbAdapter.Fill(mobjDataSet, "user_qu")
mobjDataSet.Relations.Add("省市关系",
mobjDataSet.Tables("user_sheng").Columns("province_id"),
mobjDataSet.Tables("user_shi").Columns("provice_id"))
mobjDataSet.Relations.Add("市区关系",
mobjDataSet.Tables("user_shi").Columns("city_id"),
mobjDataSet.Tables("user_qu").Columns("city_id"))
End Using
End Sub
Private Sub BindData()
If mobjDataSet Is Nothing Then Return
BindingSourceSheng.DataSource = mobjDataSet
BindingSourceSheng.DataMember = "user_sheng"
BindingSourceShi.DataSource = BindingSourceSheng
BindingSourceShi.DataMember = "省市关系"
BindingSourceQu.DataSource = BindingSourceShi
BindingSourceQu.DataMember = "市区关系"
ComboBox1.DataSource = BindingSourceSheng
ComboBox1.DisplayMember = "province_name"
ComboBox1.ValueMember = "province_id"
ComboBox2.DataSource = BindingSourceShi
ComboBox2.DisplayMember = "city_name"
ComboBox2.ValueMember = "city_id"
ComboBox3.DataSource = BindingSourceQu
ComboBox3.DisplayMember = "district_name"
ComboBox3.ValueMember = "district_id"
End Sub
End Class
Private Sub frmclient_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim ConnString As String = "provider=microsoft.jet.oledb.4.0;data source=|DataDirectory|\XinqiData.mdb"
Dim SQLString1 As String = "Select * From 列表_省"
Dim oledbconn1 As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection(ConnString) '创建一个oledbconnection对象
Dim DataSet1 As New DataSet() '创建一个dataset对象
Dim OleDbDataAdapter1 As System.Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter(SQLString1, oledbconn1) '创建一个OleDbDataAdapter对象
oledbconn1.Open() '打开连接
OleDbDataAdapter1.Fill(DataSet1, "列表_省") '通过OleDbDataAdapter对象填充数据集
Dim DataTable1 As New DataTable()
DataTable1 = DataSet1.Tables("列表_省")
Me.CboProvince.DataSource = DataTable1
Me.CboProvince.ValueMember = "provinceID"
Me.CboProvince.DisplayMember = "province"
End Sub
'省下拉列表
Private Sub CboProvince_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CboProvince.SelectedIndexChanged
If CboProvince.SelectedIndex > -1 Then
Dim ConnString As String = "provider=microsoft.jet.oledb.4.0;data source=|DataDirectory|\XinqiData.mdb"
Dim oledbconn1 As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection(ConnString)
Dim DataSet1 As New DataSet()
Dim drv As DataRowView = CType(Me.CboProvince.SelectedItem, DataRowView)
Dim ID As String = drv.Row("provinceID").ToString()
Dim SQLString1 As String = "select * from 列表_市 where father like '%" & ID & "%'"
Dim OleDbDataAdapter1 As System.Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter(SQLString1, oledbconn1)
oledbconn1.Open()
OleDbDataAdapter1.Fill(DataSet1, "列表_市")
Dim DataTable1 As New DataTable()
DataTable1 = DataSet1.Tables("列表_市")
CboCity.DataSource = DataTable1
CboCity.DisplayMember = "city"
CboCity.ValueMember = "cityID"
Else
Me.CboCity.Text = ""
Me.CboArea.Text = ""
End If
End Sub
'市下拉列表
Private Sub CboCity_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CboCity.SelectedIndexChanged
If CboCity.SelectedIndex > -1 Then
Dim ConnString As String = "provider=microsoft.jet.oledb.4.0;data source=|DataDirectory|\XinqiData.mdb"
Dim oledbconn1 As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection(ConnString)
Dim DataSet1 As New DataSet()
Dim drv As DataRowView = CType(Me.CboCity.SelectedItem, DataRowView)
Dim ID As String = drv.Row("cityID").ToString()
Dim SQLString1 As String = "select * from 列表_县 where father like '%" & ID & "%'"
Dim OleDbDataAdapter1 As System.Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter(SQLString1, oledbconn1)
oledbconn1.Open()
OleDbDataAdapter1.Fill(DataSet1, "列表_县")
Dim DataTable1 As New DataTable()
DataTable1 = DataSet1.Tables("列表_县")
CboArea.DataSource = DataTable1
CboArea.DisplayMember = "area"
CboArea.ValueMember = "areaID"
Else
Me.CboArea.Text = ""
End If
End Sub
CboCity.DataSource = DBNull.Value
CboCity.Items.Clear()
CboCity.DataSource = DBNull.Value
CboArea.Items.Clear()
Imports System.Data.OleDb
Public Class Form1
Private Const FindPovince As String = "select povince from 列表_省"
Private Const FindCity As String = "select city from 列表_市 where father={0}"
Private Const FindArea As String = "select area from 列表_县 where father={0}"
Private Const FindPovinceID As String = "select povinceid from 列表_省 where povince='{0}'"
Private Const FindCityID As String = "select cityid from 列表_市 where father={0} and city='{1}'"
Private opdata As OperatData
Private povinceid As Integer
Private cityid As Integer
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
opdata = New OperatData("文件路径", "密码")
opdata.OpenData()
Dim dt As DataTable = opdata.GetDataTable(Findpovince)
For i As Integer = 0 To dt.Rows.Count - 1
cbopovince.Items.Add(dt.Rows(i).Item("povince")) '加载省列表
Next
End Sub
Private Sub cbopovince_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cbopovince.SelectedIndexChanged
cbocity.Items.Clear()
cboarea.Items.Clear()
povinceid = opdata.GetResultScalar(String.Format(FindPovinceID, cbopovince.Text))
Dim dt As DataTable = opdata.GetDataTable(String.Format(FindCity, povinceid))
For i As Integer = 0 To dt.Rows.Count - 1
cbocity.Items.Add(dt.Rows(i).Item("city")) '加载指定省的市列表
Next
End Sub
Private Sub cbocity_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cbocity.SelectedIndexChanged
cboarea.Items.Clear()
cityid = opdata.GetResultScalar(String.Format(FindCityID, povinceid, cbocity.Text))
Dim dt As DataTable = opdata.GetDataTable(String.Format(FindArea, cityid))
For i As Integer = 0 To dt.Rows.Count - 1
cboarea.Items.Add(dt.Rows(i).Item("area")) '加载指定市的县列表
Next
End Sub
Public Class OperatData
Private Const linkstr As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}; Jet OLEDB:Database Password={1};"
Private olecon As OleDbConnection
Private olecomm As OleDbCommand
Private DataFilePath As String = ""
Private Password As String = ""
Public Sub New(ByVal DataFilePath As String, Optional ByVal Password As String = "")
Me.DataFilePath = DataFilePath
Me.Password = Password
End Sub
''' <summary>
''' 打开指定的数据库文件,成功返回true,否则为false
''' </summary>
''' <returns></returns>
''' <remarks></remarks>
Public Function OpenData() As Boolean
Try
olecon = New OleDbConnection
If olecon.State = ConnectionState.Open Then Return True
Dim str As String = String.Format(linkstr, DataFilePath, Password)
olecon.ConnectionString = str
olecon.Open()
Return True
Catch ex As Exception
Return False
End Try
End Function
''' <summary>
''' 根据命令返回数据表对象
''' </summary>
''' <param name="commandstr">命令文本</param>
''' <returns></returns>
''' <remarks></remarks>
Public Function GetDataTable(ByVal commandstr As String) As DataTable
Try
If olecon.State <> ConnectionState.Open Then olecon.Open()
olecomm = New OleDbCommand(commandstr, olecon)
Dim da As New OleDbDataAdapter(olecomm)
Dim dt As New DataTable("data")
da.Fill(dt)
Return dt
Catch ex As Exception
Return Nothing
End Try
End Function
''' <summary>
''' 执行命令,返回第一行第一列的内容
''' </summary>
''' <param name="commandstr">命令文本</param>
''' <returns></returns>
''' <remarks></remarks>
Public Function GetResultScalar(ByVal commandstr As String) As Object
Try
If olecon.State <> ConnectionState.Open Then olecon.Open()
olecomm = New OleDbCommand(commandstr, olecon)
Return olecomm.ExecuteScalar
Catch ex As Exception
Return Nothing
End Try
End Function
End Class
End Class