.NET Logo
Welcome Guest Search | Active Topics | Members | Log In | Register

ช่วยดูหน่อยคะ ผิดตรงไหน โค้ด Login && Logfile ใน login Options · View
minkzzzzzzz
Posted: Tuesday, September 09, 2008 11:42:32 PM
Rank: มือสมัครเล่น
Groups: Member

Joined: 1/30/2008
Posts: 16

ดูให้หน่อยคะ ตรง LogLogIn คือ ตอน Login ต้องกรอก empUser & empPass  
แล้วจะเก็บ Log ว่า empID อะไร โดยที่่ จะให้ empUser ที่กรอกเข้าไป ไปลิงค์หาว่าตรงกับ empID ไหน แบบนี้นะคะ   

ไม่รู้ว่าโค้ดผิดตรงไหน รบกวนดูให้ทีคะ

minkzzzzzzz
Posted: Tuesday, September 09, 2008 11:47:26 PM
Rank: มือสมัครเล่น
Groups: Member

Joined: 1/30/2008
Posts: 16
        private void bOk_Click(object sender, EventArgs e)
        {
            QueryString = new StringBuilder();
            QueryString.Append("SELECT empUserName, empPassword, typeLevel FROM Employee");
            QueryString.Append(" WHERE empUserName=@empUserName");
            QueryString.Append(" AND empPassword=@empPassword");

            string sqlLogin;
            sqlLogin = QueryString.ToString();

            com = new SqlCommand();
            com.CommandText = sqlLogin;
            com.CommandType = CommandType.Text;
            com.Connection = Conn;
            com.Parameters.Add("@empUserName", SqlDbType.VarChar).Value = this.empUserName.Text.Trim();
            com.Parameters.Add("@empPassword", SqlDbType.Int).Value = Convert.ToInt32(this.empPassword.Text.Trim());

            dr = com.ExecuteReader();

            if (dr.HasRows)
            {
                dr.Read();
                LogLogIn();
                if (Convert.ToString(dr["typelevel"])  == "1")
                {                   
                    MessageBox.Show("กำลังเข้าสู่ระบบ คุณคือเลขานุการ");
                    fMain f = new fMain();
                    f.Show();
                    this.Hide();
                }  
                else
                {
                    MessageBox.Show("กำลังเข้าสู่ระบบ คุณคือพนักงาน");
                    fMain2 f = new fMain2();
                    f.Show();
                    this.Hide();
                }
            }
            else
            {
                MessageBox.Show("ชื่อผู้ใช้ระบบ กับ รหัสผ่านผู้ใช้ระบบ ไม่ตรงกัน", "ผิดพลาด", MessageBoxButtons.OK, MessageBoxIcon.Error);
                empUserName.Text = "";
                empUserName.Focus();
                empPassword.Text = "";
            }

            dr.Close();
            dr.Dispose();
        }
minkzzzzzzz
Posted: Tuesday, September 09, 2008 11:47:58 PM
Rank: มือสมัครเล่น
Groups: Member

Joined: 1/30/2008
Posts: 16
private void LogLogIn()
        {
            com = new SqlCommand();
            com.CommandType = CommandType.Text;
            com.Connection = Conn;

            DateTime SaveTime = DateTime.Now;

            QueryString = new StringBuilder();
            QueryString.Append("INSERT INTO LogFile (empID, activity, nTime) ");
            QueryString.Append(" VALUES ( @empID, 'Login', @nTime) ");
            QueryString.Append(" WHERE empID = @empUserName");

            string sqlAdd;
            sqlAdd = QueryString.ToString();

            com.CommandText = sqlAdd;          
            com.CommandType = CommandType.Text;
            com.Connection = Conn;
            com.Parameters.Clear();            
            com.Parameters.Add("@empID", SqlDbType.Int).Value = this.empUserName.Text.Trim();
            com.Parameters.Add("@nTime", SqlDbType.DateTime).Value = SaveTime;
        }
nuttaponp
Posted: Wednesday, September 10, 2008 3:58:35 PM
Rank: มือพระกาฬ
Groups: Member

Joined: 9/9/2008
Posts: 62

ใน LogLogIn()

ลองเพิ่ม com.ExecuteNonQuery(); ในบรรทัดสุดท้ายดูครับ น่าจะเป็นเพราะอันนี้

minkzzzzzzz
Posted: Friday, September 12, 2008 12:04:47 AM
Rank: มือสมัครเล่น
Groups: Member

Joined: 1/30/2008
Posts: 16

ถ้าเพิ่มไป มันจะบอก ERROR บอกว่า มีการ execute ไปแล้วรอบนึงนะคะ

ตอนไปใช้ตาราง

dr = com.ExecuteReader();

เนี้ยคะ
nuttaponp
Posted: Friday, September 12, 2008 11:23:51 AM
Rank: มือพระกาฬ
Groups: Member

Joined: 9/9/2008
Posts: 62


ผมพอจะเข้าใจแล้ว คือตัวแปร Conn มันถูกใช้อยู่น่ะครับ ใน bOk_Click แล้วยังถูกใช้อีกทีใน LogLogIn
ให้คุณสร้าง connection ใหม่อีกตัวนึงใช้ใน LogLogIn ครับ

 

nuttaponp
Posted: Friday, September 12, 2008 11:32:59 AM
Rank: มือพระกาฬ
Groups: Member

Joined: 9/9/2008
Posts: 62

 

แล้ว
ผมเจออีกอย่าง ใน LogLogIn()
ถ้าคุณใช้ INSERT INTO ... ต้องไม่มี WHERE ไม่งั้นจะผิดพลาดได้
 

minkzzzzzzz
Posted: Friday, September 12, 2008 11:58:02 AM
Rank: มือสมัครเล่น
Groups: Member

Joined: 1/30/2008
Posts: 16

ลืมลบออกคะ ปกติก้อไม่เอา where แล้วนะ แง่วๆ

เป็นเหมือนเดิม ทำยังไงดีคะ มันว่า execute ไปแล้วรอบนึง ต้องปิด แล้วสั่งเปิดไม่ได้ เด่วมันไม่เข้ากดcondition

 

private void LogLogIn()
        {
            com = new SqlCommand();
            com.CommandType = CommandType.Text;
            com.Connection = Conn;

            DateTime SaveTime = DateTime.Now;

            QueryString = new StringBuilder();
            QueryString.Append("INSERT INTO LogFile (empUserName, activity, nTime) ");
            QueryString.Append(" VALUES ( @empUserName, 'ล็อคอิน' , @nTime) ");

            string sqlAdd;
            sqlAdd = QueryString.ToString();

            com.CommandText = sqlAdd;          
            com.CommandType = CommandType.Text;
            com.Connection = Conn;
            com.Parameters.Clear();           
            com.Parameters.Add("@empUserName", SqlDbType.Int).Value = this.empUserName.Text.Trim();
            com.Parameters.Add("@nTime", SqlDbType.DateTime).Value = SaveTime;
            com.ExecuteNonQuery();
        }
nuttaponp
Posted: Friday, September 12, 2008 3:26:47 PM
Rank: มือพระกาฬ
Groups: Member

Joined: 9/9/2008
Posts: 62

 

คือ ตัว Conn มันกำลังถูกใช้อยู่อ่ะครับที่ bOk_Click() พอคุณจะเรียกใช้อีกครั้งในLogLogIn() มันก็เลย error

ต้องสร้างใหมอีกอันนึง ให้ของใครของมันไปเลยครับ

 

minkzzzzzzz
Posted: Friday, September 12, 2008 4:51:19 PM
Rank: มือสมัครเล่น
Groups: Member

Joined: 1/30/2008
Posts: 16

ทีแรก มี

        SqlConnection Conn;
        SqlCommand com;
        StringBuilder QueryString;
        SqlDataReader dr;

แล้วเพิ่ม

        SqlConnection Conn;
        SqlConnection Conn2;
        SqlCommand com;
        StringBuilder QueryString;
        SqlDataReader dr;

// เปลี่ยน ที่ตามบอกนะคะ

com = new SqlCommand();

            DateTime SaveTime = DateTime.Now;

            QueryString = new StringBuilder();
            QueryString.Append("INSERT INTO LogFile (empUserName, activity, nTime) ");
            QueryString.Append(" VALUES ( @empUserName, 'ล็อคอิน' , @nTime) ");

            string sqlAdd;
            sqlAdd = QueryString.ToString();

            com.CommandText = sqlAdd;          
            com.CommandType = CommandType.Text;
            com.Connection = Conn2;
            com.Parameters.Clear();           
            com.Parameters.Add("@empUserName", SqlDbType.Int).Value = this.empUserName.Text.Trim();
            com.Parameters.Add("@nTime", SqlDbType.DateTime).Value = SaveTime;
            com.ExecuteNonQuery();

มันก็ยังขึ้น ERROR ตอนรันกดเลยว่า

Field 'Project1.fLogin.Conn2' is never assigned to, and will always have its default value null

ไม่ทราบว่าแก้ยังไงดีคะ
 

nuttaponp
Posted: Friday, September 12, 2008 7:11:56 PM
Rank: มือพระกาฬ
Groups: Member

Joined: 9/9/2008
Posts: 62


Conn2 ต้องกำหนดค่าให้มันก่อนครับ ลอกมาจากตัว Conn ก็ได้

มันต้องกำหนดไว้ที่ไหนสักแห่งในโปรแกรม ที่ประมาณว่า Conn=new SqlConnection(????????); น่ะครับ (??????? คือ Connection String)
ก็ให้ Conn2=new SqlConnection(????????); แบบว่าลอกมาเลยครับ

โค้ดของคุณผมแก้ให้ได้ประมาณอย่างนี้

        private void LogLogIn()
        {
            com = new SqlCommand();

            DateTime SaveTime = DateTime.Now;

            QueryString = new StringBuilder();
            QueryString.Append("INSERT INTO LogFile (empID, activity, nTime) ");
            QueryString.Append(" VALUES ( @empID, 'Login', @nTime) ");

            string sqlAdd;
            sqlAdd = QueryString.ToString();

            com.CommandText = sqlAdd;
            com.CommandType = CommandType.Text;
            com.Connection = Conn2;
            com.Parameters.Clear();
            com.Parameters.Add("@empID", SqlDbType.Int).Value = this.empUserName.Text.Trim();
            com.Parameters.Add("@nTime", SqlDbType.DateTime).Value = SaveTime;
 
            Conn2 = new SqlConnection(@"Data Source=ชื่อเซอร์ฟเวอร์;Initial Catalog=ชื่อดาต้าเบส;Integrated Security=True"); //<--ของคุณเป็นไงผมไม่รู้นะครับ

            try
            {
                Conn2.Open();
                com.ExecuteNonQuery();
            }
            catch  (SqlException sEx)
            {
                MessageBox.Show("Error:\n" + sEx.Message);
            }
            finally
            {
                Conn2.Close();
            }
        }
 

nuttaponp
Posted: Friday, September 12, 2008 7:39:32 PM
Rank: มือพระกาฬ
Groups: Member

Joined: 9/9/2008
Posts: 62


โทษที Conn2=new SqlConnection... ต้องอยู่ก่อน com.Connection = Conn2;
 

แก้ใหม่

        private void LogLogIn()
        {
            com = new SqlCommand();
            Conn2 = new SqlConnection(@"Data Source=ชื่อซอร์ฟเวอร์;Initial Catalog=ชื่อดาต้าเบส;Integrated Security=True"); //<--ของคุณเป็นไงผมไม่รู้นะครับ

            DateTime SaveTime = DateTime.Now;

            QueryString = new StringBuilder();
            QueryString.Append("INSERT INTO LogFile (empID, activity, nTime) ");
            QueryString.Append(" VALUES ( @empID, 'Login', @nTime) ");

            string sqlAdd;
            sqlAdd = QueryString.ToString();

            com.CommandText = sqlAdd;
            com.CommandType = CommandType.Text;
            com.Connection = Conn2;
            com.Parameters.Clear();
            com.Parameters.Add("@empID", SqlDbType.Int).Value = this.empUserName.Text.Trim();
            com.Parameters.Add("@nTime", SqlDbType.DateTime).Value = SaveTime;

            try
            {
                Conn2.Open();
                com.ExecuteNonQuery();
            }
            catch  (SqlException sEx)
            {
                MessageBox.Show("Error:\n" + sEx.Message);
            }
            finally
            {
                Conn2.Close();
            }
        }
 

minkzzzzzzz
Posted: Saturday, September 13, 2008 12:01:04 AM
Rank: มือสมัครเล่น
Groups: Member

Joined: 1/30/2008
Posts: 16

อ๋อ ได้ล่ะคะ  ขอบคุณมากๆ

 

แต่ไม่มีวิธีที่จะไม่แสดง connection ใหม่เลยหรอ แบบว่าตอนsetup ใกล้มันจะยุ่งยาก

เพราะต้องเปลี่ยน connection ด้วยนะคะ

paedotnet
Posted: Saturday, September 13, 2008 12:25:35 AM

Rank: มือเทพ
Groups: Member

Joined: 12/6/2007
Posts: 354
Location: bkk

เขียนเป็น connectionstring ใน web.config ครับ



[With great power comes great responsibility]
nuttaponp
Posted: Saturday, September 13, 2008 12:45:39 AM
Rank: มือพระกาฬ
Groups: Member

Joined: 9/9/2008
Posts: 62


ใช้ Connection ตัวเดียวไม่ได้ครับ เพราะคุณใช้ SqlDataReader (ตัวแปร dr) มันจะ Connect กับข้อมูลตลอดเวลาจนกว่าจะ Close() มัน
แต่เราสามารถใช้ DataSet เก็บข้อมูลไว้ก่อนได้ ผมจะลองแก้โค้ดดู

อันนี้คือวิธีที่ทำให้ใช้ Conn ตัวเดียว

        private void bOk_Click(object sender, EventArgs e)
        {
            QueryString = new StringBuilder();
            QueryString.Append("SELECT empUserName, empPassword, typeLevel FROM Employee");
            QueryString.Append(" WHERE empUserName=@empUserName");
            QueryString.Append(" AND empPassword=@empPassword");

            string sqlLogin;
            sqlLogin = QueryString.ToString();

 

            com = new SqlCommand();
            com.CommandText = sqlLogin;
            com.CommandType = CommandType.Text;
            com.Connection = Conn;
            com.Parameters.Add("@empUserName", SqlDbType.VarChar).Value = this.empUserName.Text.Trim();
            com.Parameters.Add("@empPassword", SqlDbType.Int).Value = this.empPassword.Text.Trim();

            SqlDataAdapter da = new SqlDataAdapter(com);
            DataSet ds = new DataSet();
            da.Fill(ds, "Employee");

            if (ds.Tables["Employee"].Rows.Count > 0)
            {

                LogLogIn();
                if (Convert.ToString(ds.Tables["Employee"].Rows[0]["typelevel"]) == "1")
                {
                    MessageBox.Show("กำลังเข้าสู่ระบบ คุณคือเลขานุการ");
                    fMain f = new fMain();
                    f.Show();
                    this.Hide();
                }
                else
                {
                    MessageBox.Show("กำลังเข้าสู่ระบบ คุณคือพนักงาน");
                    fMain2 f = new fMain2();
                    f.Show();
                    this.Hide();
                }
            }
            else
            {
                MessageBox.Show("ชื่อผู้ใช้ระบบ กับ รหัสผ่านผู้ใช้ระบบ ไม่ตรงกัน", "ผิดพลาด", MessageBoxButtons.OK, MessageBoxIcon.Error);
                empUserName.Text = "";
                empUserName.Focus();
                empPassword.Text = "";
            }

        }


        private void LogLogIn()
        {
            com = new SqlCommand();
 
            DateTime SaveTime = DateTime.Now;

            QueryString = new StringBuilder();
            QueryString.Append("INSERT INTO LogFile (empID, activity, nTime) ");
            QueryString.Append(" VALUES ( @empID, 'Login', @nTime) ");
 
            string sqlAdd;
            sqlAdd = QueryString.ToString();

            com.CommandText = sqlAdd;
            com.CommandType = CommandType.Text;
            com.Connection = Conn;
            com.Parameters.Clear();
            com.Parameters.Add("@empID", SqlDbType.Int).Value = this.empUserName.Text.Trim();
            com.Parameters.Add("@nTime", SqlDbType.DateTime).Value = SaveTime;

            try
            {
                com.ExecuteNonQuery();
            }
            catch  (SqlException sEx)
            {
                MessageBox.Show("Error:\n" + sEx.Message);
            }

        }
 

Users browsing this topic
Guest


Forum Jump
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.

Main Forum RSS : RSS

YAFVision Theme Created by Jaben Cargman (Tiny Gecko)
Powered by Yet Another Forum.net version 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.


Sponsored by