Avatar billede al_pacone Nybegynder
25. maj 2005 - 01:40 Der er 8 kommentarer

Data fra Access ind i en listbox

Jeg har oprettet en forbindelse til en Access database, ved hjælp af Tools, Connect to database..

I Server explorer kan jeg se databasen med tabeller forespørgsler og det hele, så forbindelsen er ok.

Jeg er helt ny i VB.NET, så det er ikke sikkert at det hedder sådan i daglig tale.

Nu til opgaven.
Hvordan får jeg hentet data over i en listbox?
Gerne med en sql sætning.
Avatar billede arne_v Ekspert
25. maj 2005 - 08:49 #1
du laver en data adapter, filler et data set og bruger det som data source
til din list box
Avatar billede arne_v Ekspert
25. maj 2005 - 08:53 #2
Jeg havde lige et eksempel med combo box på lager:

Imports System
Imports System.Data
Imports System.Data.OleDb
Imports System.Drawing
Imports System.Windows.Forms

Namespace DefaultNamespace
    Public Class MainForm
    Inherits Form
        Private comboBox1 As ComboBox

        Public Sub New()
            InitializeComponent
        End Sub

        <STAThread()> _
        Public Shared Sub Main(ByVal args As String())
            Application.Run(New MainForm)
        End Sub

        Private Sub InitializeComponent()
            comboBox1 = New ComboBox
            SuspendLayout
            comboBox1.Location = New Point(50, 50)
            comboBox1.Size = New Size(150, 25)
            Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Databases\MSAccess\Test.mdb")
            con.Open
            Dim da As OleDbDataAdapter = New OleDbDataAdapter("SELECT * FROM T1", con)
            Dim ds As DataSet = New DataSet
            da.Fill(ds, "T1")
            comboBox1.DataSource = ds.Tables("T1")
            comboBox1.DisplayMember = "F2"
            comboBox1.ValueMember = "F1"
            ClientSize = New Size(250, 400)
            Controls.Add(comboBox1)
            Text = "Combobox test"
            ResumeLayout(False)
        End Sub
    End Class
End Namespace
Avatar billede al_pacone Nybegynder
25. maj 2005 - 13:48 #3
Jeg har ikke lige fået afprøvet dit eksempel endnu.

Bliver der ikke skabt en ny forbindelse til Access hver gang koden bliver brugt?
Det var egentlig det jeg gerne ville undgå, og i stedet bruge den forbindelse jeg allerede har skabt. Se mit første indlæg.

Den forbindelse du laver med kode, kan man nøjes med at kører den en gang, feks. i form load, og så holde forbindelsen åben, en gang for alle? Frem for at skulle oprette en forbindelse, hver gang der er brug for et opslag i Access databasen?
Avatar billede arne_v Ekspert
25. maj 2005 - 13:58 #4
du kan sagtens genbruge en forbindelse

pointen er disse linier:

            Dim da As OleDbDataAdapter = New OleDbDataAdapter("SELECT * FROM T1", con)
            Dim ds As DataSet = New DataSet
            da.Fill(ds, "T1")
            comboBox1.DataSource = ds.Tables("T1")
            comboBox1.DisplayMember = "F2"
            comboBox1.ValueMember = "F1"

resten er bare fyld
Avatar billede al_pacone Nybegynder
25. maj 2005 - 14:05 #5
Er dit eksempel måden og gøre det på?
VB.NET har jo i forvejen indbygget fuktionen som jeg beskriver i mit første indlæg.
Jeg tænkte bare at det måske var nemmere.
Avatar billede arne_v Ekspert
25. maj 2005 - 18:53 #6
jeg tror ikke at jeg forstår hvad det er du leder efter
Avatar billede al_pacone Nybegynder
31. maj 2005 - 22:27 #7
Det er vist også mig der er helt galt på den.
Den finesse jeg har fundet, er vist ikke beregnet til det jeg gerne vil ha lavet.
Beklager. Sådan er det når man er helt ny i noget. Al begyndelse er svær.

Nu har jeg afprøvet dit forslag, desværre med lidt problemer.
Når jeg stepper igennem koden og når til følgende linie.

lConn = CreateObject("ADODB.Connection")

Får jeg denne fejlmeddelelse.

An unhandled exception of type 'System.Security.SecurityException' occurred in WindowsApplication1.exe
Additional information: Request for the permission of type System.Security.Permissions.SecurityPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 failed.

Hvad skyldes det?
Avatar billede nielle Nybegynder
31. maj 2005 - 22:30 #8
Sådan noget som:

lConn = CreateObject("ADODB.Connection")

- er ASP - hvilket *ikke* er det samme som ASP.NET. Ikke så underligt at der kommer en fejl på det.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester