Witam wszystkich, to mój pierwszy wątek na tym forum, nie znam jeszcze dobrze tutejszych obyczajów, ale mam nadzieję, że nie zostanę na wstępie zlinczowany ;)
Chciałbym prosić o sprawdzenie kodu. Problem polega na tym, że jeżeli kliknę jakiś button bez wcześniejszego wpisania danych do textbox'ów program wyrzuca komunikat "Połączenie nie zostało zamknięte, obecny stan połączenia: otwarte" po czym program przestaje odpowiadać
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace WymianaOlejow
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=F:\Pojazdy.mdf;Integrated Security=True");
private void button1_Click(object sender, EventArgs e)
{
try
{
con.Open();
SqlCommand com = new SqlCommand("INSERT INTO Przebieg (IdSamochod, StanLicznika, Data) values ((SELECT IdSamochod FROM Samochody WHERE NrRej = @NrRej),@Przebieg, @Data) ", con);
com.Parameters.AddWithValue("@NrRej", comboBox1.Text);
com.Parameters.AddWithValue("@Przebieg", Convert.ToInt32(textBox2.Text));
com.Parameters.AddWithValue("@Data", textBox4.Text);
com.ExecuteNonQuery();
con.Close();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
//SqlDataAdapter sda = new SqlDataAdapter();
//sda.SelectCommand = com;
//DataTable dbdataset = new DataTable();
//sda.Fill(dbdataset);
//BindingSource bSource = new BindingSource();
//bSource.DataSource = dbdataset;
//dataGridView1.DataSource = bSource;
}
private void button2_Click(object sender, EventArgs e)
{
try
{
con.Open();
SqlCommand com3 = new SqlCommand("INSERT INTO Wymiana (IdSamochod, StanLicznika, Data) values ((SELECT IdSamochod FROM Samochody WHERE NrRej = @NrRej),@Przebieg, @Data) ", con);
com3.Parameters.AddWithValue("@NrRej", comboBox1.Text);
com3.Parameters.AddWithValue("@Przebieg", Convert.ToInt32(textBox3.Text));
com3.Parameters.AddWithValue("@Data", textBox5.Text);
com3.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'pojazdyDataSet.Samochody' table. You can move, or remove it, as needed.
this.samochodyTableAdapter.Fill(this.pojazdyDataSet.Samochody);
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBox1.SelectedItem != null)
{
con.Open();
//zapełnianie DataGridView'a
SqlCommand com = new SqlCommand("Select Samochody.NrRej, Przebieg.StanLicznika, Przebieg.Data From Samochody inner join Przebieg on Samochody.IdSamochod = PRzebieg.IdSamochod WHERE NrRej = '" + comboBox1.Text + "'", con);
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = com;
DataTable dbdataset = new DataTable();
sda.Fill(dbdataset);
BindingSource bSource = new BindingSource();
bSource.DataSource = dbdataset;
dataGridView1.DataSource = bSource;
con.Close();
}
try
{
con.Open();
//zapełnianie textbox'a
SqlCommand com2 = new SqlCommand("SELECT Samochody.CoIleWymiana - (tb1.stan-tb2.wymiana) as MoznaJeszcze FROM (SELECT max(StanLicznika) as stan, IdSamochod FROM Przebieg GROUP BY IdSamochod) as tb1 inner join (SELECT max(StanLicznika)as wymiana, IdSamochod FROM Wymiana GROUP BY IdSamochod) as tb2 on tb1.IdSamochod = tb2.IdSamochod inner join Samochody on Samochody.IdSamochod = tb2.IdSamochod WHERE NrRej ='" + comboBox1.Text + "'", con);
int sprawdz = Convert.ToInt32(com2.ExecuteScalar().ToString());
if (sprawdz > 0)
{
textBox1.Text = Convert.ToString(sprawdz);
}
else
{
textBox1.Text = "Należy wymienić olej";
}
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void button3_Click(object sender, EventArgs e)
{
monthCalendar1.Visible = true;
}
private void button4_Click(object sender, EventArgs e)
{
monthCalendar2.Visible = true;
}
private void monthCalendar2_DateSelected(object sender, DateRangeEventArgs e)
{
textBox5.Text = monthCalendar2.SelectionStart.ToShortDateString();
monthCalendar2.Visible = false;
}
private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
{
textBox4.Text = monthCalendar1.SelectionStart.ToShortDateString();
monthCalendar1.Visible = false;
}
private void button5_Click(object sender, EventArgs e)
{
try
{
con.Open();
SqlCommand com4 = new SqlCommand("INSERT INTO Samochody (NrRej, Marka, Model, CoIleWymiana) values (@NrRej, @Marka, @Model, @Wymiana) ", con);
com4.Parameters.AddWithValue("@NrRej", textBox6.Text);
com4.Parameters.AddWithValue("@Marka", textBox7.Text);
com4.Parameters.AddWithValue("@Model", textBox8.Text);
com4.Parameters.AddWithValue("@Wymiana", Convert.ToInt32(textBox9.Text));
com4.ExecuteNonQuery();
SqlCommand com5 = new SqlCommand("Select * FROM Samochody", con);
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = com5;
DataTable dbdataset = new DataTable();
sda.Fill(dbdataset);
BindingSource bSource = new BindingSource();
bSource.DataSource = dbdataset;
dataGridView2.DataSource = bSource;
label12.Visible = true;
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void button6_Click(object sender, EventArgs e)
{
try
{
con.Open();
SqlCommand com5 = new SqlCommand("Select * FROM Samochody", con);
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = com5;
DataTable dbdataset = new DataTable();
sda.Fill(dbdataset);
BindingSource bSource = new BindingSource();
bSource.DataSource = dbdataset;
dataGridView2.DataSource = bSource;
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}