Avatar billede lucifers Nybegynder
18. juni 2005 - 16:30 Der er 10 kommentarer og
1 løsning

Datagrid og database

Hvordan vises data fra en database i et datagrid?
Jeg vil gerne benytte en "OleDbDataAdapter" og en "OleDbConnection".
Databasen er en Access-database.
Avatar billede arne_v Ekspert
18. juni 2005 - 17:16 #1
jeg har et eksempel liggende
Avatar billede arne_v Ekspert
18. juni 2005 - 17:16 #2
C#:

using System;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Windows.Forms;

namespace DefaultNamespace
{
    public class MainForm : Form
    {
        private DataGrid dg;
        private Button save;
        private OleDbConnection con;
        private OleDbDataAdapter da;
        private OleDbCommandBuilder cb;
        private DataSet ds;

        public static void Main()
        {
            MainForm fMainForm = new MainForm();
            fMainForm.ShowDialog();
        }
        public MainForm()
        {
            InitializeComponent();
        }
        private void InitializeComponent()
        {
            con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\Database\\MSAccess\\Test.mdb;");
            con.Open();
            da = new OleDbDataAdapter("SELECT * FROM T1", con);
            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";
            save.Click += new EventHandler(SaveClick);
            ClientSize = new Size(400, 400);
            Controls.Add(dg);
            Controls.Add(save);
            Text = "Main Form";
            ResumeLayout(false);
        }
        void SaveClick(object sender, EventArgs e)
        {
            da.Update(ds, "T1");
            ds.AcceptChanges();
            dg.Refresh();
        }
    }
}
Avatar billede arne_v Ekspert
18. juni 2005 - 17:16 #3
VB.NET:

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 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=D:\Database\MSAccess\Test.mdb;UserId=admin;Password=")
            con.Open
            da = New OleDbDataAdapter("SELECT * FROM T1", con)
            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
Avatar billede arne_v Ekspert
19. juni 2005 - 20:19 #4
OK ?
Avatar billede lucifers Nybegynder
23. juni 2005 - 22:27 #5
Tak for et dejligt komplet svar!
Jeg kan dog ikke få linien:
dg.SetDataBinding(ds, "T1");
til at virke.
Men jeg har også nogle andre fejl, som jeg bare ikke kan lokalisere. Min kode ser nemlig meget ens ud i forhold til din kode.
Der er vel ikke mulighed for, at jeg kan maile dig min komplette kode, hvorefter du så lige vil gå den igennem?
Avatar billede arne_v Ekspert
23. juni 2005 - 22:29 #6
der udvælger jeg en tabel
Avatar billede arne_v Ekspert
23. juni 2005 - 22:29 #7
kan du ikke poste koden her ?
Avatar billede arne_v Ekspert
24. juli 2005 - 16:00 #8
Fået det til at virke ?
Avatar billede cogitans Nybegynder
24. juli 2005 - 16:08 #9
Yep, det virker nu. Lægger du lige et svar?
Avatar billede arne_v Ekspert
24. juli 2005 - 16:10 #10
det har jeg gjordt

og lucifers==cogitans eller ??
Avatar billede cogitans Nybegynder
24. juli 2005 - 16:21 #11
Næh, jeg så bare lige spørgsmålet, og ville lige gøre opmærksom på, at der manglede et svar ;-)
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