PDA

View Full Version : مبتدی: مشکل در نوشتن edit



vahid.kh
شنبه 16 اردیبهشت 1391, 22:03 عصر
سلام
واسه باتن edit کدهای زیر رو نوشتم.ولی error دارم.با این کد یک سطر از datagrid رو میفرستم تو فرم edit. قبل از اینکه فرم edit لود شود متد getone رو از کلاس admission صدا کردم.تا فرم با مقدار پر شده لود شود.ولی وقتی خواستم تو این کد ابزارهای فرم edit رو پر کنم نمیشناسه اونا رو.زیر کد هام خط قرمز میاد.در ضمن دستور sql که تو کد بعدی نوشتم رو هم خط دار میکنه.error ها رو در آخر میزارم.



private void BtnEdit_Click(object sender, EventArgs e)
{
int row = DgrAdmission.CurrentRow.Index;
string val = DgrAdmission[0, row].Value.ToString();
Admission adm = new Admission();
adm.Admissionid = Int32.Parse(val);
adm.getone();
FrmEditAdmission Fredit = new FrmEditAdmission();
Fredit.Txtrow = val;
Fredit.CmbIncome = adm.income;
Fredit.MtxtAmount = adm.amount;
Fredit.CmbMount = adm.mount;
Fredit.MtxtDate = adm.date;
Fredit.ShowDialog();

}





public void getone()
{
DataTable dt = new DataTable();

string sql = "select * from TblAdmission where admissionid="+this .Admissionid ;
// sql = string.Format(sql, this.Admissionid);
db.connect();
if (db.lasterror == "")
{
dt = db.Select(sql);
if (db.lasterror == "")
{
db.disconnect();
}
}
this.income = Int32.Parse (dt.Rows[0]["incomename"].ToString());
this.amount = dt.Rows[1]["amount"].ToString();
this.mount = Int32.Parse(dt.Rows[2]["mountname"].ToString());
this.date = dt.Rows[3]["datee"].ToString();

}

مربوط به باتن edit به ترتیب از Fredit.Txtrow = val; تا Fredit.MtxtDate = adm.date;


Error 1 'Prj_Rate.FrmEditAdmission' does not contain a definition for 'Txtrow' and no extension method 'Txtrow' accepting a first argument of type 'Prj_Rate.FrmEditAdmission' could be found (are you missing a using directive or an assembly reference?) C:\Users\VAHID\documents\visual studio 2010\Projects\Prj_Rate\Prj_Rate\FrmMain.cs 116 20 Prj_Rate

2)Error 2 'Prj_Rate.FrmEditAdmission' does not contain a definition for 'CmbIncome' and no extension method 'CmbIncome' accepting a first argument of type 'Prj_Rate.FrmEditAdmission' could be found (are you missing a using directive or an assembly reference?) C:\Users\VAHID\documents\visual studio 2010\Projects\Prj_Rate\Prj_Rate\FrmMain.cs 117 20 Prj_Rate

Error 3 'Prj_Rate.FrmEditAdmission.MtxtAmount' is inaccessible due to its protection level C:\Users\VAHID\documents\visual studio 2010\Projects\Prj_Rate\Prj_Rate\FrmMain.cs 118 20 Prj_Rate


Error 4 'Prj_Rate.FrmEditAdmission.CmbMount' is inaccessible due to its protection level C:\Users\VAHID\documents\visual studio 2010\Projects\Prj_Rate\Prj_Rate\FrmMain.cs 119 20 Prj_Rate


Error 5 'Prj_Rate.FrmEditAdmission.MtxtDate' is inaccessible due to its protection level C:\Users\VAHID\documents\visual studio 2010\Projects\Prj_Rate\Prj_Rate\FrmMain.cs 120 20 Prj_Rate



این error هم واسه query در کد دوم میده.


Error 6 'mydbdll.mydb' does not contain a definition for 'Select' and no extension method 'Select' accepting a first argument of type 'mydbdll.mydb' could be found (are you missing a using directive or an assembly reference?) C:\Users\VAHID\documents\visual studio 2010\Projects\Prj_Rate\Prj_Rate\Admission.cs 126 22 Prj_Rate


از صبح دارم با اینا ور میرم.ممنون میشم اگه کسی راهنمایی کنه.

rahdar
شنبه 16 اردیبهشت 1391, 22:32 عصر
سلام
در مورد خطای فرم به نظر میاد متغیرهایی که سعی دارید بهش مقدار بدید private هستند و نمیشه از بیرون فرم بهشون دسترسی داشت
اونا رو public تعریف کنید یا با استفاده از یک تابع public به اونا مقدار بدید
اگه متغیر عادی هستند کلمه public رو قبل از تعریف متغیر بزارید و اگر کنترل هستند هم میتونید از پانل properties کنترل استفاده کنید

vahid.kh
یک شنبه 17 اردیبهشت 1391, 02:33 صبح
public DataTable select(string sql)
{
DataTable dt=new DataTable ();
try {
cmd.CommandText = sql;
da.Fill(dt);
}
catch(Exception ex)
{
if(!showfriendlymessage )
lasterror =ex.Message ;
else
lasterror +="خطا در خواندن اطلاعات .";
}
return dt;
}


این قسمت select به حساب لایه mydb من هستش که همون dt رو برمیگردونه.از نوع datatable تعریف کردم.این select همه جا کار میده.ولی الان نه.


Error 1 'mydbdll.mydb' does not contain a definition for 'Select' and no extension method 'Select' accepting a first argument of type 'mydbdll.mydb' could be found (are you missing a using directive or an assembly reference?) C:\Users\VAHID\documents\visual studio 2010\Projects\Prj_Rate\Prj_Rate\Admission.cs 143 22 Prj_Rate

vahid.kh
یک شنبه 17 اردیبهشت 1391, 02:48 صبح
هالا مونده error کویری که نوشتم.خاصیت modifierکنترل های فرم رو public کردم درست شد.تشکر.

vahid.kh
یک شنبه 17 اردیبهشت 1391, 03:49 صبح
کد هام اینا میشن ولی باز ...
رویداد کلیک ویرایش



private void BtnEdit_Click(object sender, EventArgs e)
{
int row = DgrAdmission.CurrentRow.Index;
string val = DgrAdmission[0, row].Value.ToString();
Admission adm = new Admission();
adm.Admissionid = Int32.Parse(val);

میره تو متد پایین
adm.getone();

FrmEditAdmission Fredit = new FrmEditAdmission();
Fredit.TxtRow.Text = val ;
Fredit.Cmbincome .SelectedValue = adm.income;
Fredit.MtxtAmount .Text = adm.amount;
Fredit.CmbMount .SelectedValue = adm.mount;
Fredit.MtxtDate.Text = adm.date;
Fredit.ShowDialog();

}

بعد میاد تو کلاس public int admission رو پر میکنه و ...


class Admission
{
public string lasterror = "";
public int Admissionid;
public int income;
public string amount;
public int mount;
public string date;

mydbdll.mydb db = new mydbdll.mydb();
public void getone()
{
DataTable dt = new DataTable();

string sql = "select * from TblAdmission where Admissionid="+this .Admissionid ;
// sql = string.Format(sql, this.Admissionid);
db.connect();
if (db.lasterror == "")
{
dt = db.Select(sql);
if (db.lasterror == "")
{
db.disconnect();
}
}
this.income = Int32.Parse (dt.Rows[0]["incomename"].ToString());
this.amount = dt.Rows[1]["amount"].ToString();
this.mount = Int32.Parse(dt.Rows[2]["mountname"].ToString());
this.date = dt.Rows[3]["datee"].ToString();

}



اینجا هم که کلاس mydb هستش


public DataTable select(string sql)
{
DataTable dt=new DataTable ();
try {
cmd.CommandText = sql;
da.Fill(dt);
}
catch(Exception ex)
{
if(!showfriendlymessage )
lasterror =ex.Message ;
else
lasterror +="خطا در خواندن اطلاعات .";
}
return dt;
}

Mahmoud.Afrad
یک شنبه 17 اردیبهشت 1391, 05:57 صبح
بعد از دیدن چندباره این همه کد:گیج: که مشکلی نداره فقط با دیدن متن خطا میشه گفت قضیه چیه.
خوب متن خطا میگه در کلاس mydb تعریفی برای Select وجود نداره. از آنجایی که سی شارپ به حروف بزرگ و کوچک حساس است پس Select با select که شما تعریف کردید فرق میکنه.

vahid.kh
یک شنبه 17 اردیبهشت 1391, 19:04 عصر
:عصبانی++::افسرده: میدونید چند روزه درگیر این مشکل بودم.جایی که اصلا فکر همچین چیزی رو نمیکردم.

خیلی خیلی ممنون.