Click here to Skip to main content
15,915,975 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
private void prijavaAction()
       {
           if (textBox1.Text.All(char.IsDigit))

           {
               string selektujradnika = "SELECT ime_prezime  FROM radnici WHERE (bar_kod LIKE @FIND)";// pronaci radnika u bazi
               SqlCommand osobaId = new SqlCommand(selektujradnika);





               con = new SqlConnection(cs);
               con.Open();
               con.Close();


               {

                   con.Open();
                   osobaId = new SqlCommand(selektujradnika);
                   osobaId.Connection = con;


                   osobaId.Parameters.Add(new SqlParameter("@Find", System.Data.SqlDbType.VarChar, 50, "bar_kod")).Value = textBox1.Text;


                   osobaId.Parameters["@Find"].Value = textBox1.Text;
                   rdr = osobaId.ExecuteReader();
                   messageLabel.Text = " ";
                   readerresultTextbox.Text = " ";








                   if (rdr.Read())   //prijava radnika

                   {
                       notificationPanel.BackColor = System.Drawing.ColorTranslator.FromHtml("#FFE11A");
                       messageLabel.Text = (rdr["ime_prezime"].ToString()) + "  je prijavljen u \n " + DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss");
                       readerresultTextbox.Text = (rdr["ime_prezime"].ToString());

                       con.Close();

                       string selektujradnika2 = "SELECT ime_prezime  FROM radnici WHERE (bar_kod LIKE @Find)";
                       SqlCommand osobaId2 = new SqlCommand(selektujradnika2);
                       con.Open  ();

                       string provjeraprijavestring = "SELECT COUNT (*) FROM dbo.prijava_radnika WHERE radnik= " + osobaId + " and vrijemeodjave is null and status='prijavljen'";// pronaci radnika u bazi
                                                                                                                                                                                    //string provjeraprijavestring2 = "SELECT count(*) FROM dbo.prijava_radnika WHERE vrijemeodjave IS NULL and status = 'prijavljen'";// pronaci radnika u bazi
                       SqlCommand komandaprijave = new SqlCommand(provjeraprijavestring, con);

                       int userCount = (int)komandaprijave.ExecuteScalar();

                       if (userCount > 0)
                       {

                           ///////////////////////////////////
                           using (SqlConnection openCon3 = new SqlConnection(cs))
                           {


                               SqlCommand comm = new SqlCommand(cs);

                               comm.CommandText = "select max(brojprijavnice2) from dbo.prijava_radnika";
                               comm.Connection = openCon3;
                               openCon3.Open();
                               rdr = comm.ExecuteReader();
                               int max = 0;
                               while (rdr.Read())
                               {
                                   max = Convert.ToInt32(rdr[0].ToString());
                                   Console.WriteLine(max);

                               }
                               openCon3.Close();


                               String saveStaff = "UPDATE dbo.prijava_radnika SET vrijemeodjave=@vrijemeodjave, brojprijavnice2=" + (max + 1) + " WHERE radnik=" + osobaId;
                               using (SqlCommand querySaveStaff = new SqlCommand(saveStaff))
                               {
                                   querySaveStaff.Connection = openCon3;
                                   querySaveStaff.Parameters.Add("@vrijemeodjave", SqlDbType.DateTime).Value = DateTime.Now;

                                   openCon3.Open();
                                   querySaveStaff.ExecuteNonQuery();
                                   openCon3.Close();

                                 //  osobaId = new SqlCommand(selektujradnika);
                                 //  osobaId.Connection = con;




                                   notificationPanel.BackColor = System.Drawing.ColorTranslator.FromHtml("#76AB01");
                                   messageLabel.Text = selektujradnika + " je odjavljen u\n" + DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss");
                                   textBox1.Text = "";

                               }


                           }
                       }
                       else
                       {

                           string saveStaff = "INSERT into dbo.prijava_radnika (vrijemeprijave, radnik, status) VALUES(@vrijemeprijave,@radnik,'prijavljen')";
                           using (SqlCommand querySaveStaff = new SqlCommand(saveStaff))


                           {

                               querySaveStaff.Connection = con;
                               querySaveStaff.Parameters.Add("@vrijemeprijave", SqlDbType.DateTime).Value = DateTime.Now;
                               // querySaveStaff.Parameters.Add("@vrijemeodjave", SqlDbType.DateTime).Value = vrijemeodjaveDateTimePicker;
                               //querySaveStaff.Parameters.Add("@brojprijavnice", SqlDbType.VarChar, 255).Value = brojprijavnice2TextBox.Text;
                               querySaveStaff.Parameters.Add("@radnik", SqlDbType.VarChar, 255).Value = readerresultTextbox.Text;
                               // querySaveStaff.Parameters.Add("@id_fakture", SqlDbType.Int).Value = id_fakture;

                               con.Open();
                               querySaveStaff.ExecuteNonQuery();
                               con.Close();
                               osobaId = new SqlCommand(selektujradnika);
                               osobaId.Connection = con;
                           }

                       }

                       con.Close();
                   }




                   else
                   {
                       notificationPanel.BackColor = System.Drawing.ColorTranslator.FromHtml("#FD7400");
                       messageLabel.Text = "Ne postoji radnik sa ovim bar kodom";
                       textBox1.Text = "";


                   }
               }
           }
           else
           {
               notificationPanel.BackColor = System.Drawing.ColorTranslator.FromHtml("#FD7400");
               messageLabel.Text = "Bar kod nije važeći ili nije bar kod";
               textBox1.Text = "";


           }




       }


What I have tried:

Multi part indentifier, what si a problem?
Posted
Updated 10-Mar-18 21:43pm

1 solution

It's SQL complaining that some table or column name does not exist.
Do two things:
1) Use the debugger to find out which SQL statement is giving the error.
2) Look closely at the error message, which normally tells you the name of the item it can't locate:
The multi-part identifier "blah.blah" could not be bound.
Then look closely at the SQL you located - chances are you misspelled a name.

Quote:
Debug no errors. When start app and test error is: ,,The multi-part identifier "System.Data.SqlClient.SqlCommand" could not be bound.,,


Now look at your code:
C#
SqlCommand osobaId = new SqlCommand(selektujradnika);
...
string provjeraprijavestring = "SELECT COUNT (*) FROM dbo.prijava_radnika WHERE radnik= " + osobaId + " and vrijemeodjave is null and status='prijavljen'";
SqlCommand komandaprijave = new SqlCommand(provjeraprijavestring, con);
...
int userCount = (int)komandaprijave.ExecuteScalar();
So you are concatenating a string to form an SQL command - which is ALWAYS a bad idea - and trying to use an SqlCommand object as a value to look for?
The default ToString implementation for an object is the full name of the object, so in this case your command as passed to SQL becomes:
SQL
SELECT COUNT (*) FROM dbo.prijava_radnika WHERE radnik= System.Data.SqlClient.SqlCommand and vrijemeodjave is null and status='prijavljen'
And SQL Server assumes that you are trying to specify a unique object within the SQL engine.


See how much it helps when you give the whole error message?

And by the way: "Debug no errors" is wrong: Compiling is not debugging. Debugging is the process of looking at an application while it is running, and gathering information about what it is doing. If you have run this code in the debugger, it would have told you treh problem was on the line
int userCount = (int)komandaprijave.ExecuteScalar();
and you could have looked at the command string directly and seen the problem - even fixed it and tried again!
 
Share this answer
 
v2
Comments
Goran Bibic 11-Mar-18 3:51am    
Debug no errors. When start app and test error is: ,,The multi-part identifier "System.Data.SqlClient.SqlCommand" could not be bound.,,
OriginalGriff 11-Mar-18 4:41am    
Answer updated.
Goran Bibic 11-Mar-18 3:52am    
Sql statement is OK when test in sql query
Goran Bibic 11-Mar-18 7:32am    
And what now?
OriginalGriff 11-Mar-18 7:40am    
How would I know? I have no idea what exactly you are trying to do when you concatenate and SqlCommand object into a string! :laugh:

You are the one who wrote the code, what did you expect to happen?

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900