Gå til innhold

Anbefalte innlegg

Hei!

 

Sliter litt med en kode som har som funksjon å legge et utvalg til et DataSet.

Det som skjer er at jeg først benytter en listView hvor man kan velge X-antall verdier.

Disse valgte verdiene benyttes så til å hente frem alle data for hver verdi (gjennom en SQL-spørring). Disse mellomlagres i en DataTable med én rad for hver verdi.

 

Til slutt skal den komplette DataTable legges i et DataSet som sendes til en excelgenerator.

 

Har forsøkt utallige metoder, men finner ingen som fungerer... Noen som kan hjelpe?

 

Her er koden:

 

       public void saveToExcel(string chosen)
       {

           // Kobler til database C:\Data\Access
           OleDbConnection Con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Data\Access\" + (string)comboBox1.SelectedItem + ".mdb;" + sb.ToString() + "");
           // Forsøker valgt tilkobling
           try
           {
               // Lager dagens dato
               string dtNow = dtToday.ToString("yyyyMMdd");

               if (chosen == "1")
               {
                   // Oppretter et dataset for å holde på dataene
                   DataSet dSet = new DataSet();
                   DataTable daTable = new DataTable();
                   DataTable allData = new DataTable();
                   for (int cnt = 0; cnt <= listBox1.SelectedItems.Count - 1; cnt++)
                   {
                       DataRowView ln = listBox1.SelectedItems[cnt] as DataRowView;
                       string chQuery = "SELECT * FROM " + (string)comboBox1.SelectedItem + " WHERE " + listBox1.ValueMember + " = " + ln[listBox1.ValueMember.ToString()] + ";";
                       OleDbDataAdapter chdAdapter = new OleDbDataAdapter(chQuery, Con);
                       // Bygger kommandoen til dataadapteret
                       OleDbCommandBuilder chcBuilder = new OleDbCommandBuilder(chdAdapter);
                       chdAdapter.Fill(daTable);

                       allData.ImportRow(daTable.Rows[cnt]);
                   }
                   //TRENGER EN HJELPENDE HÅND I DETTE PUNKTET (KANSKJE DET SOM STÅR OVER OGSÅ)
                   // Kaller på funksjon "exportToExcel" og sender med datasettet og plassering for lagring av excel-ark
                   exportToExcel(dSet, @"" + (string)comboBox2.SelectedItem + "" + (string)comboBox1.SelectedItem + "_" + dtNow + ".xls");
               }
               else // DENNE FUNGERER
               {
                   // Oppretter SQL-spørring
                   string query = "SELECT * FROM " + (string)comboBox1.SelectedItem + " ;";

                   // Oppretter et dataadapter
                   OleDbDataAdapter dAdapter = new OleDbDataAdapter(query, Con);
                   // Bygger kommandoen til dataadapteret
                   OleDbCommandBuilder cBuilder = new OleDbCommandBuilder(dAdapter);
                   // Oppretter et dataset for å holde på dataene
                   DataSet dSet = new DataSet();
                   // Fyller dataset med dataadapterets spørring
                   dAdapter.Fill(dSet);

                   // Kaller på funksjon "exportToExcel" og sender med datasettet og plassering for lagring av excel-ark
                   exportToExcel(dSet, @"" + (string)comboBox2.SelectedItem + "" + (string)comboBox1.SelectedItem + "_" + dtNow + ".xls");
               }



               // Tømmer sb og queryBuilder hvis de inneholder data
               if (sb.Length > 0)
               {
                   sb.Remove(0, sb.Length);
               }
               if (queryBuilder.Length > 0)
               {
                   queryBuilder.Remove(0, queryBuilder.Length);
               }
           }
           catch (Exception ex)
           {
               MessageBox.Show(ex.ToString(), "Feil i filbane!", MessageBoxButtons.OK, MessageBoxIcon.Warning);

           }
       }

Lenke til kommentar
Videoannonse
Annonse

Takk, takk! :)

 

Følgende fungerer strålende:

 

               if (chosen == "1")
               {
                   // Oppretter et dataset for å holde på dataene
                   DataSet dSet = new DataSet();
                   DataTable daTable = dSet.Tables.Add("daTable");
                   DataTable allData = new DataTable();
                   for (int cnt = 0; cnt <= listBox1.SelectedItems.Count - 1; cnt++)
                   {
                       DataRowView ln = listBox1.SelectedItems[cnt] as DataRowView;
                       string chQuery = "SELECT * FROM " + (string)comboBox1.SelectedItem + " WHERE " + listBox1.ValueMember + " = " + ln[listBox1.ValueMember.ToString()] + ";";
                       OleDbDataAdapter chdAdapter = new OleDbDataAdapter(chQuery, Con);
                       // Bygger kommandoen til dataadapteret
                       OleDbCommandBuilder chcBuilder = new OleDbCommandBuilder(chdAdapter);
                       chdAdapter.Fill(daTable);


                   }

                   // Kaller på funksjon "exportToExcel" og sender med datasettet og plassering for lagring av excel-ark
                   exportToExcel(dSet, @"" + (string)comboBox2.SelectedItem + "" + (string)comboBox1.SelectedItem + "_" + dtNow + ".xls");
               }

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...