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;
}
}
}