Baza podataka Library

poruka: 46
|
čitano: 4.239
|
moderatori: XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
13 godina
neaktivan
offline
Re: Baza podataka Library

Valjda upit?

 

UPDATE [Books] SET Quantity = (Quantity - 1)  WHERE BookId = @Id

 

Naravno prvo provjeri da li te knjige ima na stanju, tj da li je polje quantity veće od 0.

14 godina
neaktivan
offline
Re: Baza podataka Library
royalhero kaže...

Valjda upit?

 

UPDATE [Books] SET Quantity = (Quantity - 1)  WHERE BookId = @Id

 

Naravno prvo provjeri da li te knjige ima na stanju, tj da li je polje quantity veće od 0.

 

Ovaj mi upit radi kada unesem u Sql , ali u c# mi ne radi, kako da povezem da mi ubaci u Quantity.

 

string Query2 = "UPDATE [Books] SET Qunatity = (Quantity-1) WHERE Book_ID=@Book_ID";

 

SqlCommand sqlCom2 = new SqlCommand(Query2,sqlConn);

 

sqlCom.Parameters.AddWithValue("@Book_ID", Int32.Parse(book_id.Text));

sqlCom2.Parameters.AddWithValue("@Quantity",*);

 

 

Šta trebam dodati jos kao argument umjesto ovog boldanog pošto ja nemam tex box u ovom prozoru da dodam quantity, jer bi mi se on na klik posudba trebao sam dekrementiarati?

Poruka je uređivana zadnji put pon 8.7.2013 12:31 (Broken).
13 godina
neaktivan
offline
Re: Baza podataka Library
Broken kaže...

Šta trebam dodati jos kao argument umjesto ovog boldanog pošto ja nemam tex box u ovom prozoru da dodam quantity, jer bi mi se on na klik posudba trebao sam dekrementiarati?

Ništa. To je dekrementiranje.

14 godina
neaktivan
offline
Baza podataka Library

Da ali izbaciva mi error: No overload for method 'AddWithValue' takes 1 arguments

 try

       {

         sqlConn.Open();

         string Query = "INSERT INTO Library(Person_ID, Book_ID, StartDate, EndDate) VALUES (@Person_ID, @Book_ID, @StartDate, @EndDate)";

         string Query2 = "UPDATE [Books] SET Qunatity = (Quantity-1) WHERE Book_ID=@Book_ID";

 

         SqlCommand sqlCom2 = new SqlCommand(Query2,sqlConn);

         SqlCommand sqlCom = new SqlCommand(Query,sqlConn);

 

 

 

 

 

         sqlCom.Parameters.AddWithValue("@Person_ID", Int32.Parse(person_id.Text));

         sqlCom.Parameters.AddWithValue("@Book_ID", Int32.Parse(book_id.Text));

         sqlCom.Parameters.AddWithValue("@StartDate", start_date.Text);

         sqlCom.Parameters.AddWithValue("@EndDate", end_date.Text);

         sqlCom2.Parameters.AddWithValue("@Quantity");

 

         sqlCom.ExecuteNonQuery();

         sqlCom2.ExecuteNonQuery();

         MessageBox.Show("Posuđeno");

         sqlConn.Close();

       }

 
0 0 hvala 0
13 godina
neaktivan
offline
Re: Baza podataka Library
Broken kaže...

Da ali izbaciva mi error: No overload for method 'AddWithValue' takes 1 arguments

 

Ali ti ta metoda i ne treba. Nema parametra Quantity, jedini parametar u tom upitu je primarni ključ zapisa.

14 godina
neaktivan
offline
Re: Baza podataka Library

Hvala, radi mi :)

 

Ovo što si rekao da provjerim ima li knjiga tj da broj knjiga ne smije biti manji od nule to sam napravio preko constraina da bude quantity > (-1)

Poruka je uređivana zadnji put pon 8.7.2013 13:42 (Broken).
15 godina
offline
Re: Baza podataka Library
Broken kaže...

Hvala, radi mi :)

 

Ovo što si rekao da provjerim ima li knjiga tj da broj knjiga ne smije biti manji od nule to sam napravio preko constraina da bude quantity > (-1)

Mislim da ti quantitiy mora biti veće od 0 pa bi ti uvjet trebao glasiti quantity > (0).

14 godina
neaktivan
offline
Re: Baza podataka Library
captain_soap_McTawish kaže...
Broken kaže...

Hvala, radi mi :)

 

Ovo što si rekao da provjerim ima li knjiga tj da broj knjiga ne smije biti manji od nule to sam napravio preko constraina da bude quantity > (-1)

Mislim da ti quantitiy mora biti veće od 0 pa bi ti uvjet trebao glasiti quantity > (0).

Da ali ako tako ostavim onda mi pise da ima quantity 1 tj. da tu jednu knjigu ne mogu uzeti iz knjiznice, a ako stavim >-1 kada posudim zadnju knjigu pise mi nula te kada iduci put sezlim posudii javi mi se prozor da je postavljen constraint

13 godina
neaktivan
offline
Re: Baza podataka Library
Broken kaže...

Ovo što si rekao da provjerim ima li knjiga tj da broj knjiga ne smije biti manji od nule to sam napravio preko constraina da bude quantity > (-1)

A šta ako ti je stanje 0, uslov će biti ispunjen i količina će se dekrementirati, pa ćeš imati stanje -1.

14 godina
neaktivan
offline
Re: Baza podataka Library

Sad imam problem radi mi ovo s constraintom , ali ako stavim da osoba 2 posuđuje knjigu 6 i ako je broj knjiga 0 javi mi se poruka za constraint kada kliknem te mi se pri tome izvrši i posudba, kako da napravim nešto tipa if ako imam Quantity =0 da mi iskoci prozor nije omogućena posudba te da mi se posudba dalje ne izvršava.

 

 

try

       {

         sqlConn.Open();

         string Query = "INSERT INTO Library(Person_ID, Book_ID, StartDate, EndDate) VALUES (@Person_ID, @Book_ID, @StartDate, @EndDate)";

         string Query2 = "UPDATE Books SET Quantity = (Quantity-1) WHERE Book_ID='" + this.book_id.Text + "'";

 

         SqlCommand sqlCom2 = new SqlCommand(Query2,sqlConn);

         SqlCommand sqlCom = new SqlCommand(Query,sqlConn);

 

         sqlCom.Parameters.AddWithValue("@Person_ID", Int32.Parse(person_id.Text));

         sqlCom.Parameters.AddWithValue("@Book_ID", Int32.Parse(book_id.Text));

         sqlCom.Parameters.AddWithValue("@StartDate", start_date.Text);

         sqlCom.Parameters.AddWithValue("@EndDate", end_date.Text);

 

         sqlCom2.Parameters.AddWithValue("@Quantity", Int32.Parse(book_id.Text));

 

         sqlCom.ExecuteNonQuery();

         sqlCom2.ExecuteNonQuery();

         MessageBox.Show("Posuđeno");

         sqlConn.Close();

       }

13 godina
neaktivan
offline
Re: Baza podataka Library

SELECT Quantity FROM Books WHERE BookId = @Id

 

Vrijednost koju ti vrati provjeri.

if(stanje>0)

{

  //izvrsi posudbu

}

else

{

  MessageBox("Trenutno te knjige nema na stanju!");

}

14 godina
neaktivan
offline
Re: Baza podataka Library

Znaci pod ovim //izvrsi posudbu stavljam ovo svoje pod try {}, stanje mi je varijabla u koju ću spremati Quantity kako cu ga dovestit do te varijable?

13 godina
neaktivan
offline
Re: Baza podataka Library
Broken kaže...

Znaci pod ovim //izvrsi posudbu stavljam ovo svoje pod try {}, stanje mi je varijabla u koju ću spremati Quantity kako cu ga dovestit do te varijable?

U izvrši posudbu smanjuješ (dekrementiraš) količinu i ako je još nešto potrebno.

 

Možeš preko SqlDataReader klase. Npr.

var con = new SqlConnection(cstring);

var com = new SqlCommand("SELECT Quantity FROM Books WHERE BookId = @Id", con);

//popuni id parametar

var reader = com.ExecuteReader();

reader.Read(); //stavi ili ovako ili u while-petlju, zavisi od upita

var quantity = reader.GetInt32(0); //0 je index, možeš i naziv polja, ako se ne varam

14 godina
neaktivan
offline
Baza podataka Library

 

Javlja mi error: An unhandled exception of type 'System.InvalidOperationException' occurred in System.Data.dll

 

Additional information: ExecuteReader requires an open and available Connection. The connection's current state is closed.

 

 

private void btPosudba_Click(object sender, RoutedEventArgs e)

     {

       string dBConnection = @"Data Source=M4CHIN3-PC\SQLEXPRESS;Initial Catalog=Library;Integrated Security=True;";

       SqlConnection sqlConn = new SqlConnection(dBConnection);

 

       var con = new SqlConnection(dBConnection);

       var com = new SqlCommand("SELECT Quantity FROM Books WHERE BookId = '" + this.book_id.Text + "'", con);

       //popuni id parametar

       var reader = com.ExecuteReader();

       reader.Read(); //stavi ili ovako ili u while-petlju, zavisi od upita

       var quantity = reader.GetInt32(2); //0 je index, možeš i naziv polja, ako se ne varam

 

       if (quantity > 0)

       {

         try

         {

           sqlConn.Open();

           string Query = "INSERT INTO Library(Person_ID, Book_ID, StartDate, EndDate) VALUES (@Person_ID, @Book_ID, @StartDate, @EndDate)";

           string Query2 = "UPDATE Books SET Quantity = (Quantity-1) WHERE Book_ID='" + this.book_id.Text + "'";

 
0 0 hvala 0
13 godina
neaktivan
offline
Re: Baza podataka Library

Moja greška. Prije linije gdje deklarišeš komandu stavi

con.Open();

14 godina
neaktivan
offline
Re: Baza podataka Library

Prepravio sam izbacilo mi je jos error nisam primjetio da si ti ostavio BookId umjesto moga Book_ID-a te mi sada radi kako treba, hvala.

Nova poruka
E-mail:
Lozinka:
 
vrh stranice