Hej sidder lige med et program som jeg laver i skolesammenhæng, men den bliver ved med at sige jeg har en åben forbindelse og har kigget alle koder igennem og synes ikke at kunne finde den
det har virket før, men ligepludselig stoppede det.
The connection was not closed. The connection's current state is open.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.IO;
namespace SuperDataAS
{
public partial class Lager : Form
{
private static SqlCommand objCmd;
static string SqlConn = "Data Source=localhost\\SQLEXPRESS;Initial Catalog=TestDatabase;Integrated Security=SSPI;";
private static SqlConnection ObjConn = new SqlConnection(SqlConn);
private static SqlDataAdapter objDataAdapter;
static DataTable dtResult = new DataTable();
static DataTable dtResult2 = new DataTable();
static DataTable dtResult3 = new DataTable();
const string InputFile = "C:\\Users\\Munken\\Desktop\\Datamatiker\\Eksamensopgave 1. Semester\\Lagerstatus.txt";
static int SamletVærdi = 0;
public Lager()
{
InitializeComponent();
}
private bool TjekforBogstaver(SqlConnection ObjConn, string Temp, bool TjekSvar)
{
const string Lovligetegn = "123456789";
int start = 0;
while (start < Temp.Length)
if (Lovligetegn.IndexOf(Temp[start]) == -1)
{
start = Temp.Length;
return false;
}
else
{
start++;
return true;
}
return TjekSvar;
}
private void TilføjVare(SqlConnection ObjConn)
{
// Tjekker her hvilken en af varetyperne man har valgt og laver det så om til en integer, som jeg skal bruge senere
int Varetype = 0;
if (VareTypeComboBox.SelectedIndex == 0)
{
Varetype = 1;
}
if (VareTypeComboBox.SelectedIndex == 1)
{
Varetype = 2;
}
if (VareTypeComboBox.SelectedIndex == 2)
{
Varetype = 3;
}
if (VareTypeComboBox.SelectedIndex == 3)
{
Varetype = 4;
}
if (VareTypeComboBox.SelectedIndex == 4)
{
Varetype = 5;
}
// Opretter et command-object som fortæller hvilken type sql command jeg vil foretage, og så den konkrete kommando
string Temp = ("INSERT INTO VARE (Styk_Pris, Vare_Type, Vare_Tekst, Lager_Antal) VALUES ('" + StkTextBox.Text + "', '" + Varetype + "', '" + VareTekstTxtBox.Text + "', '" + Convert.ToInt32(LagerAntalTxtBox.Text) +"')");
objCmd = ObjConn.CreateCommand();
objCmd.CommandType = System.Data.CommandType.Text;
int i = 0;
// Executer min insert into sql kommando
try
{
objCmd.CommandText = string.Concat(Temp);
i = objCmd.ExecuteNonQuery();
}
catch
{
}
}
private void TilføjVareKnap_Click(object sender, EventArgs e)
{
bool TjekSvar = false;
if (TjekforBogstaver(ObjConn, StkTextBox.Text, TjekSvar) == true)
{
if (TjekforBogstaver(ObjConn, LagerAntalTxtBox.Text, TjekSvar) == true)
{
ObjConn.Open();
TilføjVare(ObjConn);
ObjConn.Close();
}
else
{
MessageBox.Show("Lager Antal skal være tal");
}
}
else
{
MessageBox.Show("Stk. Pris skal være tal");
}
}
private void HentLagerstatus(SqlConnection ObjConn)
{
dtResult.Clear();
string Temp = ("SELECT Styk_Pris, Lager_Antal FROM VARE");
objCmd = ObjConn.CreateCommand();
objCmd.CommandType = System.Data.CommandType.Text;
objCmd.CommandText = string.Concat(Temp);
objDataAdapter = new SqlDataAdapter(objCmd);
try
{
objDataAdapter.Fill(dtResult);
}
catch
{
}
}
private void HentLagerAntal(SqlConnection ObjConn)
{
dtResult.Clear();
string Temp = ("SELECT SUM(Lager_Antal) AS [LagerAntal] FROM VARE WHERE Lager_Antal > 0");
objCmd = ObjConn.CreateCommand();
objCmd.CommandType = System.Data.CommandType.Text;
objCmd.CommandText = string.Concat(Temp);
objDataAdapter = new SqlDataAdapter(objCmd);
try
{
objDataAdapter.Fill(dtResult2);
}
catch
{
}
}
private void HentLagerOpgørelse(SqlConnection ObjConn)
{
dtResult.Clear();
string Temp = ("SELECT * FROM VARE");
objCmd = ObjConn.CreateCommand();
objCmd.CommandType = System.Data.CommandType.Text;
objCmd.CommandText = string.Concat(Temp);
objDataAdapter = new SqlDataAdapter(objCmd);
try
{
objDataAdapter.Fill(dtResult);
}
catch
{
}
}
private void AjourFøring(SqlConnection ObjConn)
{
dtResult3.Clear();
string Temp = ("SELECT Vare_Nr, Styk_Pris FROM VARE");
objCmd = ObjConn.CreateCommand();
objCmd.CommandType = System.Data.CommandType.Text;
objCmd.CommandText = string.Concat(Temp);
objDataAdapter = new SqlDataAdapter(objCmd);
try
{
objDataAdapter.Fill(dtResult3);
}
catch
{
}
}
private void Lager_Load(object sender, EventArgs e)
{
ObjConn.Open();
HentLagerstatus(ObjConn);
int AntalVarer = 0;
int AntalRækker = dtResult.Rows.Count;
for (int i = 0; i < AntalRækker; i++)
{
SamletVærdi += Convert.ToInt32(dtResult.Rows[i][0]) * Convert.ToInt32(dtResult.Rows[i][1]);
}
SamletVærdiBox.Text = Convert.ToString(SamletVærdi);
HentLagerAntal(ObjConn);
AntalVarer = Convert.ToInt32(dtResult2.Rows[0][0]);
AntalVarerBox.Text = Convert.ToString(AntalVarer);
ObjConn.Close();
}
private void TekstDokuBtn_Click(object sender, EventArgs e)
{
ObjConn.Open();
HentLagerOpgørelse(ObjConn);
ObjConn.Close();
StreamWriter Input = new StreamWriter(InputFile);
int AntalRækker = dtResult.Rows.Count;
for (int i = 0; i < AntalRækker; i++)
{
Input.Write(Convert.ToString(dtResult.Rows[i][4]) + "\nVareNr: ");
Input.Write(Convert.ToString(dtResult.Rows[i][2]) + "\tStk Pris: ");
Input.Write(Convert.ToString(dtResult.Rows[i][0]) + "\tLager Antal: ");
Input.Write(Convert.ToString(dtResult.Rows[i][3]) + "\n\n");
}
Input.Write("\n\nSamlet Værdi Af Lageret: " + Convert.ToString(SamletVærdi) + "Kr.");
}
private void AjourFøringUpdate(SqlConnection ObjConn, double PrisTilUpdate, int VareNr)
{
PrisTilUpdate = PrisTilUpdate * 1.02;
string Temp = ("UPDATE VARE SET Styk_Pris = '" + Convert.ToString(PrisTilUpdate) + "' WHERE Vare_Nr = '" + VareNr + "'");
objCmd = ObjConn.CreateCommand();
objCmd.CommandType = System.Data.CommandType.Text;
objCmd.CommandText = string.Concat(Temp);
int i = 0;
try
{
objCmd.CommandText = string.Concat(Temp);
i = objCmd.ExecuteNonQuery();
}
catch
{
}
}
private void AjourBtn_Click(object sender, EventArgs e)
{
ObjConn.Open();
AjourFøring(ObjConn);
ObjConn.Close();
dataGridView1.DataSource = dtResult3;
int AntalRækker = dtResult3.Rows.Count;
int i = 1;
if (AntalRækker == 0)
{
MessageBox.Show("Der er ingen varer at opdatere");
}
if (AntalRækker < 20001)
{
while (i-1 < AntalRækker)
{
int VareNr = Convert.ToInt32(dtResult3.Rows[i - 1][0]);
double PrisTilUpdate = Convert.ToDouble(dtResult3.Rows[i-1][1]);
ObjConn.Open();
AjourFøringUpdate(ObjConn, PrisTilUpdate, VareNr);
ObjConn.Close();
i++;
}
}
if (AntalRækker > 50000 || AntalRækker < 80000)
{
}
}
}
}