Cómo personalizar la consulta SQL al vincular la base de datos de Access en vb2010 y mostrar los resultados en datagradview
Importa System.Data.SqlClient
Importa System.Data
Importa System.Data.OleDb
Clase pública Form1
Dim odCnn como OleDbConnection
Dim odApter como OleDbDataAdapter
Dim dataPath como cadena
Dim passWord como cadena
Dim cnnStr As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data source="
Dim selectTabel As String
Dim sqlStr As String
Dim dataSet As DataSet
Atenuar dataTable como DataTable
Atenuar openFileDlg como OpenFileDialog
Atenuar dataGridView como DataGridView
Atenuar CB como OleDbCommandBuilder
Atenuar myTable como tabla de datos
Función dlg(Índice ByVal como entero) como cadena
openFileDlg = Nuevo OpenFileDialog
Con openFileDlg
.Title = "Programa de base de datos Zhang Zhichen V2012"
.Filter = "Base de datos Aaccess07-10|*.accdb|base de datos access97-03|*.mdb| Todos los tipos|*.*"
.FilterIndex = index
.ShowDialog()
Devolver .FileName
Terminar con
Función final
Subbotón privado1_Click(ByVal remitente como System.Object, ByVal e As System.EventArgs) maneja Button1.Click
Label1.Text = dlg(1)
dataPath = Label1 Texto
passWord = ""
cnnStr = cnnStr amp dataPath "JET OLEDB: Base de datos
Contraseña=" amp; contraseña
odCnn = Nueva OleDbConnection(cnnStr)
odCnn.Open()
getTableName()
odApter = Nuevo OleDbDataAdapter
End Sub
Función getTableName()
'Obtener la lista de la tabla de datos
'El tipo incluye: "TABLE, VER, TABLA DE ACCESO, TABLA DEL SISTEMA",
Dim dt como DataTable
Dim i como entero
dt = odCnn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, _
Nuevo Objeto() {Nada, Nada, Nada, "TABLE"})
'DataGridView2.DataSource = dt'.....Muestra toda la información de la tabla p >
For i = 0 To dt.Rows.Count - 1 'Número de registros, es decir, número de filas
ComboBox1.Items.Add(dt.Rows(i).Item( "TABLE_NAME") )
'El nombre del campo mostrado es TABLE_NAME El valor de la fila de la columna es el nombre de la tabla creada por el usuario
Siguiente
MsgBox("Hay ***" amp; dt .Rows.Count amp; "tablas" en la base de datos)
Función final
Función fillData()
Dim sql As String = "seleccionar * de " amp; selectTabel 'Crear tipo de carácter de consulta
''''Tenga en cuenta aquí: Dim sql As String = "select * from MyTanle When [age]gt; 45 And [education]=大本" p>
odApter = New OleDb.OleDbDataAdapter(sql , odCnn) 'Bridge
dataSet = New DataSet 'Instancia de base de datos virtual en memoria
odApter.Fill(dataSet, "table ") 'La instancia anterior está completa
dataGridView.DataSource = dataSet.Tables("table")
dataGridView.AutoResizeColumns()
dataGridView.AutoResizeRows()
'myTable = New DataTable
'odApter.Fill(myTable)
'dataGridView.DataSource = myTable
'Obtiene el nombre del campo y completa la lista
getField()
CB = New OleDb.OleDbCommandBuilder(odApter) 'Usado Registre automáticamente sus cambios en los datos
Si CB no es nada, entonces
CB.DataAdapter = New OleDb.OleDbDataAdapter
odApter.DeleteCommand = CB.DataAdapter.DeleteCommand
odApter.InsertCommand = CB.DataAdapter.InsertCommand
odApter.UpdateCommand = CB.DataAdapter.UpdateCommand
End If
'MsgBox ( "***Número de registros:" amp; dataSet.Tables("table").Rows.Count, vbOKOnly, "Abrir correctamente")
Función final
Función getField( )
Para i Como entero = 0 Para dataSet.Tables("table").Columns.Count - 1
ComboBox2.Items.Add(dataSet.Tables("table ") .Columns(i).Caption)
Siguiente
Función final
'Crear una cuadrícula
Private Sub Form1_Load( ByVal remitente como System.Object, ByVal y As System.EventArgs) Maneja MyBase.Load
dataGridView = Nuevo DataGridView
Me.Controls.Add(dataGridView)
Con dataGridView
.Arriba = 60
.Izquierda = 0
.Ancho = Yo.Ancho - 20
.Alto = Yo.Alto
- 40 - 60
.Visible = True
End With
End Sub
'Abre la tabla especificada
Private Sub Button2_Click(ByVal remitente As System.Object, ByVal e As System.EventArgs) Maneja Button2.Click
selectTabel = ComboBox1.Text
fillData()
Finalizar sub
Sub botón privado3_Click(ByVal remitente como System.Object, ByVal y como System.EventArgs) Maneja el botón3.Click
save_sub()
End Sub
'Guardar datos
Función save_sub()
Dim temptb As DataTable
temptb = dataGridView.DataSource.GetChanges( ) 'Obtener la información de cambio
Si temptb no es nada Entonces 'Si hay cambios
odApter.Update(dataGridView.DataSource) 'Guardar los cambios, en esencia, cambiar los datos de la publicación volver a la base de datos
MsgBox("¡Sus cambios se han enviado de nuevo a la base de datos!", , "Programa general de base de datos")
Else
MsgBox( "¡No cambiaste ningún dato!", , "Programa de base de datos genérico")
Función de salida
Fin si
Función de fin
Private Sub Button4_Click(ByVal remitente como System.Object, ByVal e As System.EventArgs) maneja Button4.Click
Dim sr como nuevo DataView
sr = dataSet.Tables("table " ).DefaultView
sr.RowFilter = ComboBox2.Text amp; "='" amp; TextBox1.Text amp; "'" 'Esta es otra consulta personalizada
ListBox1 .DataSource = sr
Fin Sub
Fin Clase