verschiedene Commands für DataGrid



  • Hallo,

    ich habe folgendes Problem:
    ich muss aus einer Datenbank Werte in einem Datagrid anzeigen. Es sollen unterschiedliche SELECT commands verwendet werden. Bis jetzt habe ich folgendes:

    string strSQL;
             if (checkBox12.Checked == true)
             {
                strSQL = "select [Name] as Machine, Start, Ende as [Ende], Sollzeit," + 
                   " Temperatur, CD_Spuelzone, CD_Tank, [Text] from dhss" +
                   " LEFT OUTER JOIN maschinen ON dhss.Maschine = maschinen.Nr";
             }
             else
             {
                strSQL = "select Start, Ende as [End], Sollzeit as [time]," + 
                   " Temperatur, CD_Spuelzone, CD_Tank, [Text] from dhss";
             }
             SqlCommand cmd = new System.Data.SqlClient.SqlCommand(strSQL, sqlConnection1);
    
             daDHSS_sngl.SelectCommand = cmd;
             dataGrid3.DataSource = this.dsDHSS_sngl1.dhss;
             dsDHSS_sngl1.Clear();
             daDHSS_sngl.Fill(dsDHSS_sngl1);
    

    Wenn ich mit der Checkbox umschalte werden die Spalten - die anderen Namen - mit (NULL) angezeigt. Die "neuen" Spalten werden am rechten Ende des Grids angezeigt (auch die Spalte Maschine).
    Ändere ich die Abfrage der Checkbox von true auf false - so dass beim Start also erstes das andere Command eingesetzt wird funktioniert es im Prinzip andersrum.
    Was muss ich tun, um die Commands im laufenden Programm umschalten zu können?
    Offensichtlich muss irgendwas gelöscht oder neu initialisiert werden?

    Ober bin ich generell auf der falschen Fährte?

    Danke

    Jürgen



  • JuergenR schrieb:

    Was muss ich tun, um die Commands im laufenden Programm umschalten zu können?
    Offensichtlich muss irgendwas gelöscht oder neu initialisiert werden?

    JuergenR,
    ich muß mal blöd nachfragen: Hat Dein Problem irgendwas mit dem SQL-Kram zu tun oder willst Du nur wissen, wie Du zur Laufzeit in diesen Quellcode-Abschnitt gelangst?
    Falls dem so ist: das Click- oder CheckedChanged-Ereignis der Checkbox verwenden.
    BTW, die DataSource mußt Du bestimmt nicht jedes mal neu zuweisen.



  • @dschensky er will nur wissen (wenn ich mich nicht irre), wie er die leeren spalten wegkrigt, bzw. andersrum 😉

    @JuergenR
    So wie du das gemacht hast, geht nicht, weil du hast, wie ich es aus deinem quelcode entziffern kann, eine tabelle mit "festen" spalten drine. mit dem Designer erstellt vermutte ich. und wenn dein SQL Statement weniger Felder hat, als die Tabelle Spalten so werden, die mit null gefüllt, und andersrum werden die gar nicht angezeigt.

    probiere mal so:

    string strSQL; 
      if (checkBox1.Checked == true) 
      { 
        strSQL = "SELECT ARTIKEL_NR, BEZ, ZBEZ, KBEZ FROM abv.ARTIKEL"; 
      } 
      else 
      { 
        strSQL = "SELECT BEZ, ZBEZ, KBEZ FROM abv.ARTIKEL";
      } 
      SqlCommand cmd = new System.Data.SqlClient.SqlCommand(strSQL, sqlConnection1); 
    
      sqlDataAdapter1.SelectCommand = cmd; 
      DataSet ds = new DataSet();  // neuen dataset
      ds.Tables.Add(new DataTable()); // neue tabelle
      dataGrid1.DataSource = ds.Tables[0]; 
      ds.Clear(); 
      sqlDataAdapter1.Fill(ds.Tables[0]);
    


  • Klasse - Danke!!!!!!

    Jürgen


Anmelden zum Antworten