Autor Beitrag
Scooby2007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Do 23.08.07 14:58 
Hallo miteinander,

Ich hätte mal eine Frage an euch.Ich bastel gerad an einem Programm zu Verwaltung von DVD.Als Datenbank dient mir eine Access Datei.Die grafische Oberfläche wird mit C# erstellt.Nun hab ich eben eine Verbindung zur Datenbank erstellt, und lasse mir nun Daten aus eben EINER Tabelle in Textboxen anzeigen.Nun ist es aber so das ich noch Daten in anderen Tabellen habe die ich auf derselben grafischen Oberfläche angezeigt haben will. Wie kann ich eine Verbindung zu mehreren Tabellen erstellen.
Hier mal mein bisheriger Code :


ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace DVDDatenbank
{
    using System.Data.OleDb;

    public partial class Form1 : Form
    {
        private DataView dv = null;
        public Form1()
        {
            InitializeComponent();
        }

        private void schliessenToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            DialogResult dr =

                MessageBox.Show("Wollen sie die Anwendung beenden ?",
                        "Anwendungsmeldung",
                        MessageBoxButtons.YesNo,
                        MessageBoxIcon.Question,
                        MessageBoxDefaultButton.Button2);

            if (dr == DialogResult.No)
                e.Cancel = true;

        }


        private void neueDVDToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // öffnet eine neue Form
            Form2 frm = new Form2();
            frm.Show();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: Diese Codezeile lädt Daten in die Tabelle "dVDDatenbankDataSet.tblRegie". Sie können sie bei Bedarf verschieben oder entfernen.
            this.tblRegieTableAdapter.Fill(this.dVDDatenbankDataSet.tblRegie);
            fillListControl(listBox1);
        }

        private void fillListControl(ListControl lc)
        {
            OleDbConnection conn = new OleDbConnection(
                                   "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=DVDDatenbank.mdb;");
            OleDbDataAdapter da = new OleDbDataAdapter("Select * FROM tblFilm ORDER BY F_Titel", conn);
            DataTable dt = new DataTable("DVDListe");
            da.Fill(dt);
            dv = dt.DefaultView;
            lc.DataSource = dv;
            lc.DisplayMember = "F_Titel";
            lc.SelectedValueChanged += new System.EventHandler(listControl_SelectedIndexChanged);
        }

        private void listControl_SelectedIndexChanged(object sender, EventArgs e)
        {
            ListControl lc = (ListControl)sender;
            textBox1.Text = dv[lc.SelectedIndex].Row["F_Titel"].ToString();
            textBox2.Text = dv[lc.SelectedIndex].Row["F_OTitel"].ToString();
            textBox7.Text = dv[lc.SelectedIndex].Row["F_Länge"].ToString();

        }
    }
}



Es exestiert bis jetzt nur eine Verbindung zur Tabelle tblFilm.Ich möchte aber auch in meine Tabelle Regiesseur greifen und mir dort daten rausholen.

Moderiert von user profile iconraziel: C#-Tags hinzugefügt
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 23.08.07 16:04 
Hallo,

ich rate davon ab, in Deiner jetzigen Konstruktion etwas "herumzupfuschen" und andere Tabellen hinzuzufügen. Die Tabelle "F_Titel" hat ja wohl nichts mit der Tabelle "Regisseur" zu tun (außer dass sie in derselben Datei steckt).

Es wäre möglich, ein und dieselbe DataGridView wahlweise mit der einen oder anderen Tabelle zu füllen (mit AutoGenerateColumns werden auch die Spalten angepasst). Aber das ändert das Hauptproblem nicht.

Empfehlung: Erstelle Dir für jede Tabelle eine eigenständige Oberfläche (DataGridView, GroupBox mit TextBoxen oder was auch immer Dir gefällt) und eine eigenständige Datenmenge (DataTable innerhalb eines gemeinsamen DataSet) mit getrenntem DataAdapter; vielleicht genügen auch zwei getrennte TableAdapter. Die DbConnection kann natürlich identisch verwendet werden (unter Berücksichtigung variabler Zugriffsparameter).

Falls Dir Grundlagen fehlen: OpenBook C# Kap.26.

Gruß Jürgen

PS. Bitte formatiere Quellcode künftig selbst: auf "Bereiche" klicken, Text markieren, auf das Plus neben "C#" klicken. Das kannst Du auch nachträglich erledigen.