الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

خطأ في كود select

بدأه كارم سامي في 25 مارس 2011 · 7 رد · 870 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم،

 OleDbConnection cnn = new OleDbConnection();
             cnn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..//..//data.mdb;";
             cnn.Open();
             string check = "SELECT COUNT(*)FROM bd WHERE bdcode='" + bdcodeTextBox.Text + "'";

             OleDbCommand cd = new OleDbCommand(check, SMPK_cnn);
             cd.CommandText = check;
             OleDbDataReader dr;
             dr = cd.ExecuteReader();
             if (dr.HasRows == true)
             {

                 label6.ForeColor = Color.Red;
                 label6.Text = ("هذا الرقم الكودي غير متاح");

                 dr.Close();
                 return;
             }


             else
             {
                 label6.ForeColor = Color.Green;
                 label6.Text = ("هذا الرقم الكودي  متاح");

                 return;

             }


          cnn.Close();

الخطا هو ان الرسالة التي تظهر دائما في label6 هي " هذا الرقم الكودي غير متاح " .. فما هو الحل ؟

#2

هذا لأن الشرط الذي وضعته لتنفيذ عملية وضع الرسالة في الـlabel

if (dr.HasRows == true)

تتحقق دائماً ما دام هناك بيانات. ما تريده هو عكس ذلك على ما أعتقد.

#3

سواء تواجدت البيانات او لم تتواجد يعطيني نفس الرسالة

#4

هذه الجملة

SELECT COUNT(*)

دائماً تعيد سطراً. حينما لا يكون هناك بيانات ستعيد سطراً فيه "0".

#5

السلام عليكم

جرب هذه السطور (حيث تم التعديل على ما كتبته هنا)


OleDbConnection cnn = new OleDbConnection();
cnn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..//..//data.mdb;";
cnn.Open();
string check = "SELECT COUNT(*)FROM bd WHERE bdcode='" + bdcodeTextBox.Text + "'";

OleDbCommand cd = new OleDbCommand(check, cnn);
cd.CommandText = check;
int RowCount = (int)cd.ExecuteScaler();
if (RowCount == 0)
{

label6.ForeColor = Color.Red;
label6.Text = ("هذا الرقم الكودي غير متاح");

dr.Close();
return;
}


else
{
label6.ForeColor = Color.Green;
label6.Text = ("هذا الرقم الكودي متاح");

return;

}

تقبل خالص تحياتي

cnn.Close();

#6
System Down كتب:

هذه الجملة

SELECT COUNT(*)

دائماً تعيد سطراً. حينما لا يكون هناك بيانات ستعيد سطراً فيه "0".

انا كنت استخدم هذا الكود وكان يعمل بشكل صحيح ولكن لا ادري ماحدث .. يمكن اكون نسيت كتابة شئ معين .. لا اعرف

wisamsalah كتب:

السلام عليكم

جرب هذه السطور (حيث تم التعديل على ما كتبته هنا)


OleDbConnection cnn = new OleDbConnection();
cnn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..//..//data.mdb;";
cnn.Open();
string check = "SELECT COUNT(*)FROM bd WHERE bdcode='" + bdcodeTextBox.Text + "'";

OleDbCommand cd = new OleDbCommand(check, cnn);
cd.CommandText = check;
int RowCount = (int)cd.ExecuteScaler();
if (RowCount == 0)
{

label6.ForeColor = Color.Red;
label6.Text = ("هذا الرقم الكودي غير متاح");

dr.Close();
return;
}


else
{
label6.ForeColor = Color.Green;
label6.Text = ("هذا الرقم الكودي متاح");

return;

}

تقبل خالص تحياتي

cnn.Close();

ظهر لي خطأ وهو

Error 2 'System.Data.OleDb.OleDbCommand' does not contain a definition for 'ExecuteScaler' and no extension method 'ExecuteScaler' accepting a first argument of type 'System.Data.OleDb.OleDbCommand' could be found (are you missing a using directive or an assembly reference?)

Error 3 The name 'dr' does not exist in the current context

هذه طريقة اخري ولكن ايضاً ظهر خطأ

The ConnectionString property has not been initialized.

OleDbConnection conn = new OleDbConnection();
            OleDbCommand cmd2 = new OleDbCommand();
            cmd2.CommandType = CommandType.Text;

            cmd2.CommandText = " Select * from bd where bdCode = '" + bdcodeTextBox.Text + "'";
            cmd2.Connection = conn;
            if (cmd2.Connection.State != ConnectionState.Open)
                cmd2.Connection.Open();
            OleDbDataReader dr = cmd2.ExecuteReader();
            dr.Read();
            if (dr.HasRows)
            {
                label6.ForeColor = Color.Red;
                label6.Text = ("هذا الرقم غير متاح");
            }
            else
            {

                label6.ForeColor = Color.Green;
                label6.Text = ("هذا الرقم متاح");
            }
            dr.Close();

            dr.Dispose();
            cmd2.Dispose();
#8

تم الحل شكراً لكم

مواضيع مشابهة