Imam bazu koja se zove Veleprodaja i polja sifraproizvoda, nazivproizvoda, kolicina. Baza nema primarni kljuc. Bazu punim na dve strane. Od strane dobavljaca i od strane kupca. Kako da kad mi se pojavi na primer kod dobavljaca ista sifraproizvoda, da modifikujem samo vrstu u kojoj je postojeca sifraproizvoda (znaci da ne dodajem novu vrstu) tj. da zamenim postojecu vrednost kolicine tako sto cu na nju dodati vrednost te sto treba, a kad kod kupca vrsim upis za takodje postojecu sifruproizvoda, da modifikuje vrednost samo za kolicinu tako sto ce postojecu vrednost u bazi umanjiti za vrednost koju treba.
SQL baza, modifikacija, C#
Zaključano
Zakačeno
Napravi dve metode:
Prva:izvršava UPDATE komandu koja će da izvrši izmenu količine za određenu šifru proizvoda
Druga: izvršava INSERT komandu za novu šifru proizvoda.
Prvo pretpostaviš da postoji artikal, pa pokreneš UPDATE komandu i ispitaš vrednost koju ti vrati komanda.ExecuteNonQuery().
Ukoliko je ova vrednost nula, znači da ne postoji ta šifra proizvoda i u tom slučaju pokrećeš INSERT komandu.
Jasno?
Prva:izvršava UPDATE komandu koja će da izvrši izmenu količine za određenu šifru proizvoda
Druga: izvršava INSERT komandu za novu šifru proizvoda.
Prvo pretpostaviš da postoji artikal, pa pokreneš UPDATE komandu i ispitaš vrednost koju ti vrati komanda.ExecuteNonQuery().
Ukoliko je ova vrednost nula, znači da ne postoji ta šifra proizvoda i u tom slučaju pokrećeš INSERT komandu.
Jasno?
Potpis
Ashes to ashes - dust to dust. Zejtin to ulje - mast to mast.
I nije mi bas nesto najjasnije
, jel bi mogao da mi objasnis preko koda?
Evo ti jedna metoda na brzaka, pa se igraj malo sa modifikovanjem i prilagođavanjem. Ovo je neka logika kojom bih ja to uradio.
Code:
private void NapuniBazu()
{
string konekcioniString = "";
SqlConnection konekcija = new SqlConnection(konekcioniString);
int kolicina = 0;
int sifra = 0;
string naziv = "";
int rezultat = 0;
using (SqlCommand komanda = new SqlCommand())
{
komanda.Connection = conn;
string updateString = "UPDATE Veleprodaja SET kolicina=@kolicina WHERE sifraproizvoda = @sifraproizvoda";
string insertString = "INSERT INTO Veleprodaja(sifraproizvoda, nazivproizvoda, kolicina)
VALUES (@sifraproizvoda,@naziv, @kolicina)";
komanda.CommandText = updateString;
komanda.Parameters.AddWithValue("@kolicina", kolicina);
komanda.Parameters.AddWithValue("@sifraproizvoda", sifra);
try
{
konekcija.Open();
rezultat = komanda.ExecuteNonQuery();
if (rezultat = 0)
{
komanda.CommandText = insertString;
komanda.Parameters.Clear();
komanda.Parameters.AddWithValue("@kolicina", kolicina);
komanda.Parameters.AddWithValue("@sifraproizvoda", sifra);
komanda.Parameters.AddWithValue("@naziv", naziv);
komanda.ExecuteNonQuery();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
private void NapuniBazu()
{
string konekcioniString = "";
SqlConnection konekcija = new SqlConnection(konekcioniString);
int kolicina = 0;
int sifra = 0;
string naziv = "";
int rezultat = 0;
using (SqlCommand komanda = new SqlCommand())
{
komanda.Connection = conn;
string updateString = "UPDATE Veleprodaja SET kolicina=@kolicina WHERE sifraproizvoda = @sifraproizvoda";
string insertString = "INSERT INTO Veleprodaja(sifraproizvoda, nazivproizvoda, kolicina)
VALUES (@sifraproizvoda,@naziv, @kolicina)";
komanda.CommandText = updateString;
komanda.Parameters.AddWithValue("@kolicina", kolicina);
komanda.Parameters.AddWithValue("@sifraproizvoda", sifra);
try
{
konekcija.Open();
rezultat = komanda.ExecuteNonQuery();
if (rezultat = 0)
{
komanda.CommandText = insertString;
komanda.Parameters.Clear();
komanda.Parameters.AddWithValue("@kolicina", kolicina);
komanda.Parameters.AddWithValue("@sifraproizvoda", sifra);
komanda.Parameters.AddWithValue("@naziv", naziv);
komanda.ExecuteNonQuery();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
Potpis
Ashes to ashes - dust to dust. Zejtin to ulje - mast to mast.
Code:
private void NapuniBazu()
{
string konekcioniString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\bazaweldgas.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
SqlConnection konekcija = new SqlConnection(konekcioniString);
float kolicina = Convert.ToSingle(txtKol.Text) ;
int sifra = Convert.ToInt32(txtSP.Text);
string naziv = Convert.ToString(txtNazivP.Text);
DateTime datum = Convert.ToDateTime(parent.dtpDatumFK.Text);
int rezultat = 0;
using (SqlCommand komanda = new SqlCommand())
{
komanda.Connection = konekcija;
string updateString = "UPDATE VELNOVO SET KOLICINA=@kolicina WHERE SIFRAPROIZVODA = @sifraproizvoda";
string insertString = "INSERT INTO VELNOVO(SIFRAPROIZVODA, NAZIVPROIZVODA, KOLICINA, DATUMFK) VALUES (@sifraproizvoda,@nazivproizvoda, @kolicina, @datumfk)";
komanda.CommandText = updateString;
//kolicina = Convert.ToSingle(dsVeleKup1.Tables["VELNOVO"].Rows["KOLICINA"]) - kolicina;
komanda.Parameters.AddWithValue("@kolicina", kolicina);
komanda.Parameters.AddWithValue("@sifraproizvoda", sifra);
try
{
konekcija.Open();
rezultat = komanda.ExecuteNonQuery();
if (rezultat == 0)
{
komanda.CommandText = insertString;
kolicina = 0 - kolicina;
komanda.Parameters.Clear();
komanda.Parameters.AddWithValue("@kolicina", kolicina);
komanda.Parameters.AddWithValue("@sifraproizvoda", sifra);
komanda.Parameters.AddWithValue("@nazivproizvoda", naziv);
komanda.Parameters.AddWithValue("@datumfk", datum);
komanda.ExecuteNonQuery();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
private void NapuniBazu()
{
string konekcioniString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\bazaweldgas.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
SqlConnection konekcija = new SqlConnection(konekcioniString);
float kolicina = Convert.ToSingle(txtKol.Text) ;
int sifra = Convert.ToInt32(txtSP.Text);
string naziv = Convert.ToString(txtNazivP.Text);
DateTime datum = Convert.ToDateTime(parent.dtpDatumFK.Text);
int rezultat = 0;
using (SqlCommand komanda = new SqlCommand())
{
komanda.Connection = konekcija;
string updateString = "UPDATE VELNOVO SET KOLICINA=@kolicina WHERE SIFRAPROIZVODA = @sifraproizvoda";
string insertString = "INSERT INTO VELNOVO(SIFRAPROIZVODA, NAZIVPROIZVODA, KOLICINA, DATUMFK) VALUES (@sifraproizvoda,@nazivproizvoda, @kolicina, @datumfk)";
komanda.CommandText = updateString;
//kolicina = Convert.ToSingle(dsVeleKup1.Tables["VELNOVO"].Rows["KOLICINA"]) - kolicina;
komanda.Parameters.AddWithValue("@kolicina", kolicina);
komanda.Parameters.AddWithValue("@sifraproizvoda", sifra);
try
{
konekcija.Open();
rezultat = komanda.ExecuteNonQuery();
if (rezultat == 0)
{
komanda.CommandText = insertString;
kolicina = 0 - kolicina;
komanda.Parameters.Clear();
komanda.Parameters.AddWithValue("@kolicina", kolicina);
komanda.Parameters.AddWithValue("@sifraproizvoda", sifra);
komanda.Parameters.AddWithValue("@nazivproizvoda", naziv);
komanda.Parameters.AddWithValue("@datumfk", datum);
komanda.ExecuteNonQuery();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
Sve mi radi kako sam zamislila, hvala ti puno! Jedino ako mozes da mi kazes kako da u ovom kodu sto sam stavila, kada vrsim UPDATE, da mi od kolicine iz baze oduzme novu kolicinu koju sam dodala, a ne da zamenjuje kako si ti uradio.
Ja sam stavila ovo, ali naravno nece da radi.
kolicina = Convert.ToSingle(dsVeleKup1.Tables["VELNOVO"].Rows["KOLICINA"]) - kolicina;
Citat:
kolicina = Convert.ToSingle(dsVeleKup1.Tables["VELNOVO"].Rows["KOLICINA"]) - kolicina;
Ovo i ne može da radi!
Moraš da proslediš konkretnu ćeliju, a ne čitav red!
Navedeni kod bi trebalo da izgleda od prilike ovako:
Code:
kolicina = Convert.ToSingle(dsVeleKup1.Tables["VELNOVO"].Rows["ovde ubaciš red iz kojeg čitaš vrednost"]["KOLICINA"]) - kolicina;
kolicina = Convert.ToSingle(dsVeleKup1.Tables["VELNOVO"].Rows["ovde ubaciš red iz kojeg čitaš vrednost"]["KOLICINA"]) - kolicina;
Potrebno je da znaš id reda iz kojeg čitaš količinu i da ga, s' oproštenjem, staviš na navedeno mesto.
Potpis
Ashes to ashes - dust to dust. Zejtin to ulje - mast to mast.
Znam da ne moze tako, samo sam ga stavila, jer nisam znala sta vise da stavim
. Probala sam ja i onako da cita sa pozicije, ali nije hteo, nisam znala zasto i sad kad si mi kazao da tako uradim, probala sam ponovo i opet nije hteo i onda mi je sinulo da li sam izvrsila filovanje? Naravno nisam, mozak
.
Sad je sve u redu radi kako sam zamislila!
Hvala ti puno!
Pozdrav!
Sad je sve u redu radi kako sam zamislila!
Hvala ti puno!
Pozdrav!