بسم الله الرحمن الرحيم
يوجد لدي خطأ في أحدى الصفحات في المشروع الذي اعمل عليه
والمشروع هو عبارة عن جلب البيانات من قاعدة البيانات
ووضعها في فورم معين ومن ثم ارسالها بالبريد الالكتروني
ولكن قبل عملية الارسال تحدث المشكلة وهي كالتالي :
There is already an open DataReader associated with this Command which must be closed first.
حاولت التحايل على البرنامج ولكن محاولاتي للاسف لم تنجح . ولا اعرف مكان الخطأ بالضبط
وهذا هو الكوود
public void InformPiByEmail()
{
SqlCommand co = new SqlCommand();
co.CommandText = "Select AName from Experts1 where UserId = '3bf8af7c-e295-4e1a-8416-cc6a3810f65e'";
co.CommandType = CommandType.Text;
co.Connection = sqlConnRos;
co.ExecuteReader(CommandBehavior.CloseConnection);
//ارسال رسالة الى المختص تحتوي على بيانات الباحث التي قام بتسجيلها وذلك للتأكد من صحة البيانات
string SmailInfo = "<html ><head><meta http-equiv='Content-Type' content='text/html; charset=windows-1252'><title>مقترح بحثي جديد</title></head><body>";
SmailInfo += "<table align='center' width='80%' border='2' dir='rtl'>";
SmailInfo += "<tr><td>البرنامج</td><td>" + ddlPrograms.SelectedItem + "</td></tr>";
SmailInfo += "<tr><td>الاولوية البحثية</td><td>" + GridView1.SelectedValue + "</td></tr>";
SmailInfo += "<tr><td>عدد المشاركين</td><td>" + Table1.ID + "</td></tr>";
SmailInfo += "<tr><td>أسماء الباحثين المشاركين</td><td>" + txtCoiList.Text + "</td></tr>";
SmailInfo += "<tr><td>رقم المقترح البحثي</td><td>" + txtProposalNo .Text + "</td></tr>";
SmailInfo += "<tr><td>عنوان المقترح البحثي باللغة العربية</td><td>" + txtATitle.Text + "</td></tr>";
SmailInfo += "<tr><td>عنوان المقترح البحثي باللغة الانجليزية</td><td>" + txtETitle.Text + "</td></tr>";
SmailInfo += "<tr><td>مجال المقترح البحثي</td><td>" + ddlFields.SelectedItem + "</td></tr>";
SmailInfo += "<tr><td>المجال الدقيق للمقترح البحثي</td><td>" + ddlSubFields.SelectedItem + "</td></tr>";
SmailInfo += "<tr><td>الكلمات الدالة للمقترح البحثي باللغة العربية</td><td>" + txtAKeywords.Text + "</td></tr>";
SmailInfo += "<tr><td>الكلمات الدالة للمقتترح البحثي باللغة الانجليزية</td><td>" + txtEKeywords.Text + "</td></tr>";
SmailInfo += "<tr><td>ملخص البحث باللغة العربية</td><td>" + txtASummary.Text + "</td></tr>";
SmailInfo += "<tr><td>ملخص البحث باللغة الانجليزية</td><td>" + txtESummary.Text + "</td></tr>";
SmailInfo += "<tr><td>الميزانية المطلوبة</td><td>" + txtBudget.Text + "</td></tr>";
SmailInfo += "<tr><td>مدة التنفيذ بالأشهر</td><td>" + txtDuration.Text + "</td></tr>";
SmailInfo += "<tr><td>رقم الباحث الرئيس</td><td>" + txtPICode.Text + "</td></tr>";
SmailInfo += "<tr><td>رقم الأولوية إن وجدت</td><td>" + txtPriorityNo.Text + "</td></tr>";
SmailInfo += "<tr><td>رقم المقترح البحثي في حال تقديمه من قبل للمدينة</td><td>" + txtOldProposalNo.Text + "</td></tr>";
SmailInfo += "<tr><td>جهات أخرى تم تقديم المقترح لها من قبل</td><td>" + txtOtherInstitutes.Text + "</td></tr>";
SmailInfo += "<tr><td>الجهات المتوقع استفادتها من نتائج البحث</td><td>" + txtBenefitingInstitutes.Text + "</td></tr>";
SmailInfo += "<tr><td>الجهة المقدمة للبحث باللغة العربية</td><td>" + txtAInstitute.Text + "</td></tr>";
SmailInfo += "<tr><td>الجهة المقدمة للبحث باللغة الانجليزية</td><td>" + txtEInstitute.Text + "</td></tr>";
SmailInfo += "<tr><td>الكلية / الإدارة باللغة العربية</td><td>" + txtACollege.Text + "</td></tr>";
SmailInfo += "<tr><td>الكلية / الإدارة باللغة الانجليزية</td><td>" + txtECollege.Text + "</td></tr>";
SmailInfo += "<tr><td>القسم باللغة العربية</td><td>" + txtADepartment.Text + "</td></tr>";
SmailInfo += "<tr><td>القسم باللغة الانجليزية</td><td>" + txtEDepartment.Text + "</td></tr>";
SmailInfo += "<tr><td>ص.ب</td><td>" + txtPOBox.Text + "</td></tr>";
SmailInfo += "<tr><td>المدينة باللغة العربية</td><td>" + txtACity.Text + "</td></tr>";
SmailInfo += "<tr><td>المدينة باللغة الانجليزية</td><td>" + txtECity.Text + "</td></tr>";
SmailInfo += "<tr><td>الرمز البريدي</td><td>" + txtPostalCode.Text + "</td></tr>";
SmailInfo += "<tr><td>درجة الرسالة</td><td>" + ddlThesisDegree.SelectedValue + "</td></tr>";
SmailInfo += "<tr><td>تاريخ الالتحاق بالبرنامج الدراسي</td><td>" + txtEnrolmentDate.Text + "</td></tr>";
SmailInfo += "<tr><td>طبيعة التفرغ</td><td>" + ddlThesisType.SelectedValue + "</td></tr>";
SmailInfo += "<tr><td>الملف</td><td>" + FileUploadProposal.FileName + "</td></tr>";
SmailInfo += "</table></body></html>";
MailMessage SmailAdmin = new MailMessage("gdrgp@kacst.edu.sa", "thawawi@kacst.edu.sa", "متقرح بحثي جديد", SmailInfo);
//Smail.BodyEncoding = System.Text.Encoding.GetEncoding("windows-1256");
SmailAdmin.Body = SmailInfo;
SmailAdmin.IsBodyHtml = true;
SmtpClient _stmp = new SmtpClient("smtp.kacst.edu.sa");
_stmp.Send(SmailAdmin);
}
public string getNewProposalNo(string ProgramCode)
{
string _str = "1";
sqlCmd = new SqlCommand();
sqlCmd.CommandText = "SELECT (COUNT(*)+1) AS NewProposalNo FROM Proposals WHERE ProposalNo LIKE '" + ProgramCode + "%' ";
sqlCmd.CommandType = CommandType.Text;
sqlCmd.Connection = sqlConnRos;
if (sqlCmd.Connection.State != ConnectionState.Open)
sqlCmd.Connection.Open();
sqlDr = sqlCmd.ExecuteReader();
sqlDr.Read();
_str = sqlDr[0].ToString();
sqlDr.Close();
sqlDr.Dispose();
sqlCmd.Dispose();
return "-" + String.Format("{0:D4}", Convert.ToInt32(_str));
}
public string getProposalTitle(string ProposalNo)
{
string _str = "1";
sqlCmd = new SqlCommand();
sqlCmd.CommandText = "SELECT ATitle FROM Proposals WHERE ProposalNo = '" + ProposalNo + "' ";
sqlCmd.CommandType = CommandType.Text;
sqlCmd.Connection = sqlConnRos;
if (sqlCmd.Connection.State != ConnectionState.Open)
sqlCmd.Connection.Open();
sqlDr = sqlCmd.ExecuteReader();
sqlDr.Read();
if (sqlDr.HasRows)
{
_str = sqlDr[0].ToString();
}
sqlDr.Close();
sqlDr.Dispose();
sqlCmd.Dispose();
return _str;
}
public int getNoOfExpertPropposals(string ProgramCode)
{
int i = 0;
sqlCmd = new SqlCommand();
sqlCmd.CommandText = "SELECT (COUNT(*)) AS NoOfExpertPropposals FROM Proposals WHERE ProposalNo LIKE '" + ProgramCode + "%' AND CONVERT(varchar, PICode) = '" + User.Identity.Name + "'";
sqlCmd.CommandType = CommandType.Text;
sqlCmd.Connection = sqlConnRos;
if (sqlCmd.Connection.State != ConnectionState.Open)
sqlCmd.Connection.Open();
sqlDr = sqlCmd.ExecuteReader();
sqlDr.Read();
i = Convert.ToInt32(sqlDr[0]);
sqlDr.Close();
sqlDr.Dispose();
sqlCmd.Dispose();
return i;
}
public string getExpertName()
{
string _str = "غير مسجل";
sqlCmd = new SqlCommand();
sqlCmd.CommandText = "SELECT AName FROM Experts WHERE PersonID = '" + User.Identity.Name + "' ";
sqlCmd.CommandType = CommandType.Text;
sqlCmd.Connection = sqlConnRos;
if (sqlCmd.Connection.State != ConnectionState.Open)
sqlCmd.Connection.Open();
sqlDr = sqlCmd.ExecuteReader();
sqlDr.Read();
_str = sqlDr.ToString();//Error
sqlDr.Close();
sqlDr.Dispose();
sqlCmd.Dispose();
return _str;
}
public string getPriorityTitle(bool PriorityNoStatus)
{
string _str = "";
if (!PriorityNoStatus)
{
sqlCmd = new SqlCommand();
sqlCmd.CommandText = "SELECT Title FROM FinalPriorities WHERE ID = '" + txtPriorityNo.Text + "' ";
sqlCmd.CommandType = CommandType.Text;
sqlCmd.Connection = sqlConnRos;
if (sqlCmd.Connection.State != ConnectionState.Open)
sqlCmd.Connection.Open();
sqlDr = sqlCmd.ExecuteReader();
sqlDr.Read();
_str = sqlDr[0].ToString();//Error
sqlDr.Close();
sqlDr.Dispose();
sqlCmd.Dispose();
}
return _str;
}
public string getFieldName(int FieldID)
{
string _str = "";
sqlCmd = new SqlCommand();
sqlCmd.CommandText = "SELECT AName FROM Fields WHERE ID = '" + FieldID + "' ";
sqlCmd.CommandType = CommandType.Text;
sqlCmd.Connection = sqlConnRos;
if (sqlCmd.Connection.State != ConnectionState.Open)
sqlCmd.Connection.Open();
sqlDr = sqlCmd.ExecuteReader();
sqlDr.Read();
_str = sqlDr[0].ToString();
sqlDr.Close();
sqlDr.Dispose();
sqlCmd.Dispose();
return _str;
}
public string getSubFieldName(int SubFieldID, int FieldID)
{
string _str = "";
sqlCmd = new SqlCommand();
sqlCmd.CommandText = "SELECT AName FROM SubFields WHERE ID = '" + SubFieldID + "' AND ParentFieldID='" + FieldID + "'";
sqlCmd.CommandType = CommandType.Text;
sqlCmd.Connection = sqlConnRos;
if (sqlCmd.Connection.State != ConnectionState.Open)
sqlCmd.Connection.Open();
sqlDr = sqlCmd.ExecuteReader();
sqlDr.Read();
if (sqlDr.HasRows)
{
_str = sqlDr[0].ToString();
}
sqlDr.Close();
sqlDr.Dispose();
sqlCmd.Dispose();
return _str;
}
public string getThesisDegreeTitle(bool ThesisDegreeStatus)
{
string _str = "";
if (!ThesisDegreeStatus)
{
switch (ddlThesisDegree.SelectedValue)
{
case "Msc":
_str = "ماجستير";
break;
case "Ph.D":
_str = "دكتوراه";
break;
default:
_str = "";
break;
}
}
return _str;
}
public string getThesisTypeTitle(bool ThesisTypestatus)
{
string _str = "";
if (!ThesisTypestatus)
{
switch (ddlThesisType.SelectedValue)
{
case "P":
_str = "تفرغ جزئي";
break;
case "F":
_str = "تفرغ كلي";
break;
default:
_str = "";
break;
}
}
return _str;
}
}واذا قام compile بعمله فانه يظهر لي ان الخطأ في هذه الأسطر
sqlCmd.Connection.Open(); sqlDr = sqlCmd.ExecuteReader(); sqlDr.Read(); _str = sqlDr[0].ToString();
اتمنى من لديه الحل ان لا يبخل به
تحياتي للجميع