bjornidar Skrevet 3. desember 2010 Del Skrevet 3. desember 2010 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
caid Skrevet 4. desember 2010 Del Skrevet 4. desember 2010 Du må legge til tabellen du ønsker til datasettet dit, dette kan gjøres på mange måter. Eks: DataSet dSet = new DataSet(); DataTable daTable = dSet.Tables.Add("TableName"); Lenke til kommentar
bjornidar Skrevet 5. desember 2010 Forfatter Del Skrevet 5. desember 2010 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå