using System; using System.Collections.Generic; using System.Collections; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Data; using System.Data.SqlClient; using System.Windows.Media.Animation; using System.Windows.Controls.DataVisualization.Charting; //using System.Data.OleDb; //pro OleDB - jedna z možností pro tvorbu XLS souboru using ExcelLibrary.SpreadSheet; //přidány kvůli WinForms Hostování namespace PM_view { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { string aaa = "Ahoj"; int bbb = 20; string name_of_server = "initial"; ////////////////////////////////////Deklarace proměnných///////////////////////////////////////////////// //připojovací řetězec string connString = @"Data Source=VLADIMÍR-PC;Initial Catalog=COST_mesta;Integrated Security=True"; //string connString2 = @"Data Source=" + name_of_server + ";Initial Catalog=COST_mesta;Integrated Security=True"; /// jak to rozepsat do jednitlivych casti DataSet dSet = new DataSet(); public MainWindow() { InitializeComponent(); var CB_dataSource = new List(); CB_dataSource.Add(new Dotazy() { Alias = "Vyber vše z roku 1965", Dotaz = @"SELECT * FROM [COST_mesta].[dbo].[1965]" }); CB_dataSource.Add(new Dotazy() { Alias = "Vyber obce, rok 1965", Dotaz = @"SELECT obec FROM [COST_mesta].[dbo].[1965]" }); CB_dataSource.Add(new Dotazy() { Alias = "Vyber obyvatelstvo, rok 1965", Dotaz = @"SELECT obyvatelstvo FROM [COST_mesta].[dbo].[1965]" }); CB_dotazy.ItemsSource = CB_dataSource; CB_dotazy.DisplayMemberPath = "Alias"; CB_dotazy.SelectedValue = "Dotaz"; CB_dotazy.SelectedIndex = 0; } //private void ConnectDB_Click(object sender, RoutedEventArgs e) private void Menu_ConnectDB_Click(object sender, RoutedEventArgs e) { //nejdřív vymaže ten InfoBox InfoText.Clear(); //vytvoření proměnné pro připojení SqlConnection conn = new SqlConnection(connString); //dekalrace dotazu string sql_dotaz = null; //dotaz zapsaný do do řádky //sql_dotaz = @SQL_dotaz_Text.Text; if (CB_dotazy.SelectedIndex < 0) { MessageBox.Show("Není zadán žádný dotaz"); } else { sql_dotaz = CB_dotazy.SelectedItem.ToString(); } //Vytvoření příkazu pomocí konstruktoru SqlCommand cmd = new SqlCommand(sql_dotaz, conn); InfoText.Text += ("Příkaz vytvořen a připojen" + "\n"); try { //otevři spojení conn.Open(); InfoText.Text += ("Připojení otevřeno" + "\n"); //příprava Datasetu SqlDataAdapter adapter = new SqlDataAdapter(sql_dotaz, conn); ; //naplnění datového adaptéru //i když to může být až za Close adapter.Fill(dSet); //adaptér se automaticky uzavře this.DataContext = dSet.Tables[0].DefaultView; //pocet sloupcu int pocet_sloupcu = dSet.Tables[0].Columns.Count; int pocet_radku = dSet.Tables[0].Rows.Count; for ( int i = 0; i < pocet_sloupcu; i++ ) { druhy.Items.Add(dSet.Tables[0].Columns[i].ToString()); } for (int j = 0; j < pocet_radku; j++) { prvni.Items.Add(dSet.Tables[0].Rows[j][0]); //.Items.Add(dSet.Tables[0].Columns[i].ToString()); } ///////ulozeni EXCELU pomoci JET.OLEDB/////////////////////////////do budoucna se na to podivat////////////////////////////// SqlDataReader reader = cmd.ExecuteReader(); //tady už ten reader bude fungovat, protože: adapter se zavře jakmile něco naplní, ale reader je nutný zavřít!!!!! string hodnota = dSet.Tables[0].Columns[1].ColumnName.ToString(); string a = dSet.Tables[0].Compute("max(obyvatelstvo)", "").ToString(); //chodí string column_max = dSet.Tables[0].Compute("max(" + reader.GetName(1).ToString() + ")", "").ToString(); //chodí string column_min = dSet.Tables[0].Compute("min(" + reader.GetName(1).ToString() + ")", "").ToString(); //chodí //string obec = dSet.Tables[0].Select("Top(obec)", "").ToString; //MessageBox.Show(column_max); /// do listboxu - tam se zobrazi seznam mest / a ve druhym bude seznam sloupcu } catch (Exception err) { InfoText.Text += ("Chyba" + err); } finally { //vždy je nutné uzavřít spojení conn.Close(); InfoText.Text += sql_dotaz; InfoText.Text += "Připojení uzavřeno"; } } private void graf_Click(object sender, RoutedEventArgs e) { string jmeno = "nic"; double hodnota = -1; jmeno = prvni.SelectedItem.ToString(); hodnota = Double.Parse((dSet.Tables[0].Rows[druhy.SelectedIndex][druhy.SelectedItem.ToString()]).ToString()); //MessageBox.Show(hodnota); //(BarSeries)mcChart.Series[0]).ItemsSource = prvky; ((BarSeries)mcChart.Series[0]).ItemsSource = new KeyValuePair[]{ //new KeyValuePair(prvni.SelectedItem.ToString(), double.Parse(druhy.SelectedItem.ToString())), new KeyValuePair(jmeno, hodnota), // //new KeyValuePair("CEO", 25), // //new KeyValuePair("Software Engg.", 5), // //new KeyValuePair("Team Leader", 6), // //new KeyValuePair("Project Leader", 10), // //new KeyValuePair("Developer", 4) }; } private void Menu_Close_Click(object sender, RoutedEventArgs e) { this.Close(); } private void Menu_ClearTab_Click(object sender, RoutedEventArgs e) { //doplni název metody } private void Connect_DB_win_Click(object sender, RoutedEventArgs e) { spojeniDB(); } private void create_XML_Click(object sender, RoutedEventArgs e) { //XML výstup z DataSetu Microsoft.Win32.SaveFileDialog save_dlg = new Microsoft.Win32.SaveFileDialog(); save_dlg.FileName = "Document"; var dialog = save_dlg.ShowDialog(); string XML_cesta = save_dlg.FileName; dSet.WriteXml(XML_cesta + ".xml"); } private void create_XLS_Click(object sender, RoutedEventArgs e) { ///////ulozeni EXCELU pomoci excel Library///////////////////////////////add reference k té ExcelLibrary.dll //opravená funkce - je definována dole (implicitni neumí s DBNULL) Microsoft.Win32.SaveFileDialog save_dlg = new Microsoft.Win32.SaveFileDialog(); save_dlg.FileName = "Document"; var dialog = save_dlg.ShowDialog(); string cesta = save_dlg.FileName; CreateWorkbook2(cesta + ".xls", dSet); } //////////////////pokusna olbast pro metodu, která připojuje okno/////////////////////---funguje to private void spojeniDB() { DB_conn_win okno = new DB_conn_win(); okno.Title = "Nový výrobek"; if (okno.ShowDialog().Value) { aaa = okno.textBox1.Text; } } //opravena funkce pro tvorbu worksheet - help by http://code.google.com/p/excellibrary/issues/detail?id=99#c2 public static void CreateWorkbook2(String filePath, DataSet dataset) { if (dataset.Tables.Count == 0) throw new ArgumentException("DataSet needs to have at least one DataTable", "dataset"); Workbook workbook = new Workbook(); foreach (DataTable dt in dataset.Tables) { Worksheet worksheet = new Worksheet(dt.TableName); for (int i = 0; i < dt.Columns.Count; i++) { // Add column header worksheet.Cells[0, i] = new Cell(dt.Columns[i].ColumnName); // Populate row data for (int j = 0; j < dt.Rows.Count; j++) worksheet.Cells[j + 1, i] = new Cell(dt.Rows[j][i] == DBNull.Value ? "" : dt.Rows[j][i]); } workbook.Worksheets.Add(worksheet); } workbook.Save(filePath); } private void checkBox_tab_Checked(object sender, RoutedEventArgs e) { SlidePanel1.Visibility = Visibility.Visible; } private void checkBox_tab_UnChecked(object sender, RoutedEventArgs e) { SlidePanel1.Visibility = Visibility.Collapsed; } private void checkBox_graf_Checked(object sender, RoutedEventArgs e) { mcChart.Visibility = Visibility.Visible; } private void checkBox_graf_UnChecked(object sender, RoutedEventArgs e) { mcChart.Visibility = Visibility.Collapsed; } } }