Laden...

Winforms - Access an Datagridview binden

Erstellt von Neggi vor 9 Jahren Letzter Beitrag vor 9 Jahren 2.356 Views
N
Neggi Themenstarter:in
4 Beiträge seit 2015
vor 9 Jahren
Winforms - Access an Datagridview binden

Hallo,

ich komme bei meinem Programm gerade leider nicht weiter, vielleicht könnt ihr mir behilflich sein:

ich habe eine Form mit einem Datagridview in dem ich eine gefilterte Access-Tabelle anzeige.(zeigt unterschiedliche Übungen an). Nun will ich per Combobox eine Anzahl an Übungen auswählen die ich machen will. Sprich wenn im DatagridView 10 Übungen angezeigt werden will ich im Combobox feld zum Beispiel die Zahl 5 auswählen und dann soll die Tabelle nur mehr 5 der 10 Übungen anzeigen.

wie funktioniert das? Natürlich mit if- Verzweigung, aber wie er mir dann nur 5 Übungen anzeigt, das schaff ich nicht.

Bitte um Hilfe, DANKE!!!

Ich schicke im Anhang einen Screenshot der Form mit zum besseren verständnis

J
11 Beiträge seit 2014
vor 9 Jahren

Um ehrlich zu sein, verstehe ich nicht wo das genaue Problem liegt. Wie hast du den das DataGridView gefüllt? Wenn es an eine Liste oder ähnliches gebunden ist, lässt du dir von der Liste eine Kopie geben. Kürze die Kopie der Liste auf 5 Einträge und binde sie wieder an dein DataGridView. Das wäre eine Möglichkeit.

Wäre übrigens nett wenn du den Titel anpasst, ich würde sagen der ist objektiv nicht aussagekräftig.

edit:
Lesen will gelernt sein, heute habe ich es nicht damit. Tut mir leid, habe übersehen das es sich um ein Zusammenspiel mit Access handelt.

Zwar habe ich nicht viel mit Access am Hut, doch sollte dein Problem recht einfach zu lösen sein. Ich würde da auch nicht groß einen anderen Weg als oben gehen. Daten komplett abfragen und dann zurecht schneiden.

N
Neggi Themenstarter:in
4 Beiträge seit 2015
vor 9 Jahren

Aber das Zusammenspiel is eigentlich unwichtig....nachdem die tabelle ins datagridview eingelesen ist, muss nicht mehr auf die Datenbank zugegriffen werden. Ich will nur wissen wie man mit einer Combobox die Anzahl der in der Liste befindlichen Übungen reduzieren kann!

bitte um Hilfe beim Code!

Danke

J
11 Beiträge seit 2014
vor 9 Jahren

Wie wäre es, wenn du postest was du so weit hast? Wie immer so schön im Forum gesagt wird: es soll geholfen werden, nicht die Arbeit übernommen werden.

N
Neggi Themenstarter:in
4 Beiträge seit 2015
vor 9 Jahren
private void button2_Click(object sender, EventArgs e)
        {

            if (checkBox1.Checked)
            {

                connection.Open();

                OleDbCommand command = new OleDbCommand();
                command.Connection = connection;

                string query = "select Bezeichnung,Bild from Uebungen where Körperregionen = '" + checkBox1.Text + "' ";
                command.CommandText = query;

                OleDbDataAdapter da = new OleDbDataAdapter(command);
                DataTable dt = new DataTable();
                da.Fill(dt);
                dataGridView1.DataSource = dt;

Hier filter ich mit den checkboxen und jetzt gehört noch eine if-Verzweigung das die Anzahl der Übungen durch die Combobox geändert werden kann.

J
11 Beiträge seit 2014
vor 9 Jahren

Du hast dort ein Objekt vom Typ DataTable (namentlich dt) erstellt. Mit einem Blick in die tolle MSDN Doku kannst du dir ansehen, was die DataTable-Klasse (MSDN) dir so bietet.

Mit einem Blick in die Eigenschaften findest du "Rows". Das sollte dir weiterhelfen. Wie schon von dir angesprochen, kannst du Ja versuchen es mit einem IF umzusetzen. Im IF selbst, begrenzt du dann die Rows wie benötigt. Suche ggf. mit Google, wie eine DataRow aus einer DataTable gelöscht wird.

Hoffe das konnte dir helfen 😃

Angemerkt sei noch, das es fraglich ist ob das so best practice ist. Allerdings lernt man Ja auch etwas, wenn man es auf diese Art umsetzt und lernen ist nie verkehrt.

H
523 Beiträge seit 2008
vor 9 Jahren

Du könntest auch einfach die SQL-Abfrage nochmal laufen lassen und diese um die Anzahl der auszugebenden Datensätze begrenzen. Das geht bei Access, soweit ich mich erinnern kann, mit der TOP-Funktion.

Beispiel:


select top 5 Bezeichnung,Bild from Uebungen 

N
Neggi Themenstarter:in
4 Beiträge seit 2015
vor 9 Jahren

Danke euch für die Hilfe. Klappt soweit ganz gut.

Jetzt tritt das Problem auf dass mir die Tabelle im DataGridview nur mehr die Buchstabenanzahl der Wörter die in der jeweiligen Zelle stehen angezeigt! 😃

So filter ich die Anzahl mittels Combobox:

int anzahl = Convert.ToInt32(comboBox1.Text);

                string[] datensatz = new string[anzahl];
                for (int i = 0; i < anzahl; i++)
                {
                    datensatz[i] = dt.Rows[i][0].ToString();
                }
                dataGridView1.DataSource = datensatz;

Echt komisch...habt ihr da eine Idee?

Danke

463 Beiträge seit 2009
vor 9 Jahren

Hallo Neggi,

schau dir doch mal bitte die Themen [Artikelserie] SQL: Parameter von Befehlen und DataBinding an.

Grüße
Stefan

H
523 Beiträge seit 2008
vor 9 Jahren

Echt komisch...habt ihr da eine Idee?

Jop, den Debugger benutzen und jeden Schritt einzeln debuggen ([Artikel] Debugger: Wie verwende ich den von Visual Studio?). Dann kannst Du genau nachvollziehen wo die falschen Werte entstehen.