03. april 2006 - 04:35Der er
10 kommentarer og 1 løsning
Lave SQL-kald og vise i datagrid
Jeg har en database med over 10.000 adresser og kontaktoplysninger. For at kunne søge heri, ønsker jeg at der kan søges på en eller flere kolonner. I én søgning kræver jeg f.eks. at postnummeret skal være mellem 8000 og 8200, samt at navnet skal være LIKE 'Jensen'. I en anden søgning kunne søgningen gå på telefonnummeret alene.
Jeg har derfor brug for at kunne sammensætte et SQL-kald helt som det passer mig. Vigtigt er det så at resultatet kan vises i et datagrid bagefter.
Jeg har forsøgt at lave noget med paramere, men det går ikke helt, når hvert kald kan indeholde forskellige krav.
Ok, jeg har startet med at lave Imports af System og System.Data.OleDB
Herefter, Dim strsql As String = "SELECT * FROM Kontakter" 'Altså uden para i første omgang. Dim cmd As OleDbCommand 'SqlCommand findes ikke (underligt)?
cmd.CommandText = strsql Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd) da.Fill(ds)
Jeg kan ikke få lov til at bruge SqlDataAdapter og SqlCommand
Jeg går ud fra at ds skal oprettes på en eller anden måde (bare uden indhold)?
Men har nu siddet 2 dage og forsøgt frem og tilbage. Har ikke fået det til at virke, men det tætteste jeg er kommet frem til er følgende - dog uden parametre da jeg bare gerne vill kalde en sqlstreng og få den ind i et dataset:
Dim strsql As String = "SELECT * FROM Kontakter" Dim cmd As OleDbCommand cmd.CommandText = strsql Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd) da.Fill(DataSet1)
Dette er så koden. Derudover har jeg så også oprettet DataSet1 som tomt skema.
Imports System Imports System.Data Imports System.Data.OleDb Imports System.Drawing Imports System.Windows.Forms
Namespace DefaultNamespace Public Class MainForm Inherits Form Private dg As DataGrid Private save As Button Private con As OleDbConnection Private cmd As OleDbCommand Private da As OleDbDataAdapter Private cb As OleDbCommandBuilder Private ds As DataSet
Public Shared Sub Main Dim fMainForm As New MainForm fMainForm.ShowDialog() End Sub
Public Sub New() MyBase.New Me.InitializeComponent End Sub
Private Sub InitializeComponent() con = New OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Databases\MSAccess\Test.mdb") con.Open cmd = New OleDbCommand("SELECT * FROM T1 WHERE F1 >= ?", con) cmd.Parameters.Add("@F1", OleDbType.Integer) cmd.Parameters("@F1").Value = 2 da = New OleDbDataAdapter(cmd) cb = New OleDbCommandBuilder(da) da.UpdateCommand = cb.GetUpdateCommand ds = New DataSet da.Fill(ds, "T1") dg = New DataGrid save = New Button SuspendLayout dg.Location = New Point(50, 50) dg.Size = New Size(300, 200) dg.SetDataBinding(ds, "T1") save.Location = New Point (50, 300) save.Size = New Size (100, 25) save.Text = "Save" AddHandler save.Click, AddressOf SaveClick ClientSize = New Size(400, 400) Controls.Add(dg) Controls.Add(save) Text = "Main Form" ResumeLayout(false) End Sub
Sub SaveClick(ByVal sender As Object, ByVal e As EventArgs) da.Update(ds, "T1") ds.AcceptChanges dg.Refresh End Sub End Class End Namespace
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.