سلام سلام
براي اينكه فرم 2 در فرم فعلي نشون داده بشه چه كار كنم؟
Printable View
سلام سلام
براي اينكه فرم 2 در فرم فعلي نشون داده بشه چه كار كنم؟
اول از همه header فایلهای فرم 2 رو در header فایل فرم یک include کن. بعد هم
رو در فرم یک فراخوانی کن. اگر هم میخوای فرم 2 بصورت Modal نمایش داده بشه (یعنی فرم یک Disable باشه تا وقتی که فرم 2 رو ببندی) اینرو باید در Form Setting فرم 2 تعیید کنی.کد:
form2.show();
سلام
ابتدا یه دستگیره به فرم 2 درست میکنی به وسیله کد زیر
بعد اون رو فراخونی می کنی به وسیله کد زیرکد:
Form f = new Form();
کد:
f.Show();
اينجوري كه در يك صفحه جديد فرمم باز ميشه! ميخوام درون همون فرم قبليم باز بشه .
نقل قول:سلام.کد:Form f = new Form();
همونطوری که ایشون عرض کردن همون کدا رو بزار منتها کد:
رو در قسمت جنرال یعنی بالای کد:کد:Form f;
قرار بده.و کد:کد:
public Form1()
{
InitializeComponent();
}
رو در قسمت فرم لود برنامه قرار بده مثل:کد:f = new Form();
با تشکر.کد:
private void Form1_Load(object sender, EventArgs e)
{
f = new Form();
}
اگه میخوای از نوع MDI باشه باید ابتدا خاصیت IsMdiContainer فرم اصلی برابر true باشه (پنجره Properties) اونوقت:
کد زیر رو تو دکمه یا قسمت مورد نظر مینویسی:
کد:f.MdiParent = this;
f.Show();
ين راهي كه گفتيد اجرا كردم جالب بود مرسي
حالا به پايگاه داده Access وصل شدم اما بعد از اجرا و موقع ثبت اطلاعاتم به اين دستور قرمز رنگ گير ميده و قبل از اجرا دستورات سبز رنگ زير خط سبز دارن!!
کد:using System.Data;
using System.Data.OleDb;
کد:private void button1_Click(object sender, EventArgs e)
{
OleDbConnection cn = new OleDbConnection();
cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=library.accdb";
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = cn;
cmd.CommandText = "inset into person(ID,Firstname,Lastname) values(@I,@F,@L)";
cmd.Parameters.Add("@I", Int32.Parse(textBox1.Text));
cmd.Parameters.Add("@F", textBox2.Text);
cmd.Parameters.Add("@L", textBox3.Text);
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
}
سلامنقل قول:
کد شما مشکلی نداره .
برای مطمئن شدن اونا امتحان هم کردم و اطلاعات به درستی ثب شد .
شما نباید هیچ کدوم از این فیلدها را توی جدول AutoNumber در نظر بگیرید . احتمالا شما ID را از نوع AutoNumber در نظر گرفتید که این مشکل پیش اومده .
پسوند پایگاه داده را به mdb تغییر بدید .
بعد از برسی نکاتی که گفتم . کدتون را به صورت زیر بنویسید و ببینید هنگام ثبت چه اخطاری داده می شه .
موفق باشید .کد:private void button1_Click(object sender, EventArgs e)
{
try
{
OleDbConnection cn = new OleDbConnection();
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =library.mdb";
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = cn;
cmd.CommandText = "INSERT INTO Person(ID,Firstname,Lastname) values(@I,@F,@L)";
cmd.Parameters.Add("@I", Int32.Parse(textBox1.Text));
cmd.Parameters.Add("@F", textBox2.Text);
cmd.Parameters.Add("@L", textBox3.Text);
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
}
سلام
ا
[html]
...
....
cn.close();
}
[/html]تا ايجا نوشتم البته بدون try تا اجرا بشه ولي ايندفه به cn.open گير داد و ثبت نكرد ID هم از نوع number هستش .
اين پسوند پايگاه داده رو اگه عوض كنم مشكلي پيش نمياد!!!چرا اينجوريه!!!
راستي فيلد تاريخ در access هم دارم كه هنوز نه كدش رو اينجا اضافه كردم و نه فيلدش رو در فرمم چون شك دارم براي نمايش تاريخ مثلا به صورت 88/1/20 نوعش رو text بزارم يا نه!!
حالا اگه بخوام كدش رو وارد كنم واسه تاريخ
چون براي سال / ماه/ روز . سه تا combobox گذاشتم و ميخوام موقع ثبت تاريخ به اين صورت 88/9/4 ثبت بشه بايد به چه فرمي بنويسم اصلن؟؟؟؟؟؟!!!!!!!!!!!!!!
خب اگه توی cn.open گیر میده به این دلیل است که هنوز کانکشن شما برقرار نشده .نقل قول:
پسووند فایلهای اکسس mdb هستش . و شما باید پسووند اونا mdb قرار بدید .
در ضمن باید دیتابیس شما که library.mdb هست داخل پوشه bin\Debug باشد .
دستوری هیچ مشکلی نداره و کاملا درست هستش .
یه کم دقتتون را بیشتر کنید و نکات گفته شده رعایت کنید .
موفق باشید .