PDA

View Full Version : سوال: چطور یک فرم برنامه را فقط یک بار به کابر نشان دهیم



456231
پنج شنبه 23 خرداد 1392, 10:11 صبح
چطور میشه یه فرم هنگام ورود به کاربر نشان داده شود و مثلا اون فرم شامل یه سری قرارداد ها ی برنامه با کاربر باشد و تا کاربر تیک تایید را نزند و دکمه قبول میکنم را فشار ندهد در دفعات بعدی این صفحه تکرار شود و هنگامی که قوانین را قبول کرد دیگه اون صفحه ظاهر نشود .
البته من این کار را با ذخیره کردن یک مقدار تویه دیتابیس انجام دادم که با خطلا مواجه شدم اگه ممکنه راهنمایی بفرمایید .

veniz2008
پنج شنبه 23 خرداد 1392, 11:57 صبح
سلام.
راه های زیادی وجود داره. میتونی یه جدول دو فیلدی برای این منظور استفاده کنی شامل نام کاربری (کلید) و یک فیلد boolean که مشخص میکنه آیا شخص توافق نامه رو قبول کرده یا نه. زمان ثبت نام شخص، نام کاربری و false رو براش در این جدول ثبت کن و زمانیکه توافق نامه رو قبول کرد اون فیلد رو براش true کن.
در هنگام ورود شخص به نرم افزار هم (زمانیکه قصد لاگین داره) همزمان که نام کاربری و کلمه عبورش رو از جدول مربوطه میخونید ، وضعیت این فیلد bool رو هم از جدول مربوطه بکشید بیرون. اگر false بود توافق نامه رو بهش نشون بدید.
موفق باشید.

sohil_ww
پنج شنبه 23 خرداد 1392, 12:20 عصر
چطور میشه یه فرم هنگام ورود به کاربر نشان داده شود و مثلا اون فرم شامل یه سری قرارداد ها ی برنامه با کاربر باشد و تا کاربر تیک تایید را نزند و دکمه قبول میکنم را فشار ندهد در دفعات بعدی این صفحه تکرار شود و هنگامی که قوانین را قبول کرد دیگه اون صفحه ظاهر نشود .
البته من این کار را با ذخیره کردن یک مقدار تویه دیتابیس انجام دادم که با خطلا مواجه شدم اگه ممکنه راهنمایی بفرمایید .

با چه خطایی مواجه شدی ؟!
به چه مشکلی برخوردی راهی که استاد veniz2008 گفتن راه خوبیه بهتر از همون راه استفاده کنی

456231
پنج شنبه 23 خرداد 1392, 16:27 عصر
لطفا بیشتر راهنماییم کنید با این کد به بانک وصل میشم
برنامه شامل سه فرمه 1
- فرم لاکین شامل password و user name و سمت کاربر
2-توافق نامه که باید ظاهر بشه یا نشه
3-صفحه main برنامه
static SqlConnection con = new SqlConnection("server=(local);trusted_connection=yes;database=hes abres1;");
SqlDataAdapter da = new SqlDataAdapter("", con);
DataSet ds = new DataSet();

بعدا کاربر با وارد کردن نام کاربری و رمز عبور و سمت خودش دکمه ی ورود را کلیک میکنه که کد چک کردنو میدونم باید اینجا باشه ولی چطور چک کردنو نمی دونم یعنی (کدی که تو سی شارپ مینویسیم تا یه مقدارو برامون از دیتابیس بخونه ) کد دکمه بررسی رمز عبور به صورت زیره :
private void buttonX3_Click(object sender, EventArgs e)
{
string type;
if (comboBoxEx1.SelectedIndex == 0) type = "admin";
else type = "user";
string s = "select id from login where type='" + type + "'and users='" + textBoxX1.Text + "' and id='" + textBoxX2.Text + "' ";
OleDbDataAdapter da = new OleDbDataAdapter(s, con);
da.Fill(ds, "t1");
if (ds.Tables["t1"].Rows.Count > 0)
{
if (comboBoxEx1.SelectedIndex == 0)
variable.i = 1;
else
variable.i = 2;

this.Hide();
main fm = new main();
fm.ShowDialog();
}
else
{
MessageBox.Show("رمز عبور یا نام کاربری اشتباه می باشد", "اخطار");
}
}


لطفا به صورت کد راهنماییم کنید .البته به خاطر اون راهنمایی قبلیتونم کمال تشکر دارم

veniz2008
پنج شنبه 23 خرداد 1392, 17:10 عصر
کدهاتون رو داخل شارپ ( # ) قرار بدید تا مخاطب راحت بتونه اونها رو بخونه :


private void buttonX3_Click(object sender, EventArgs e)
{
string type;
if (comboBoxEx1.SelectedIndex == 0) type = "admin";
else type = "user";
string s = "select id from login where type='" + type + "'and users='" + textBoxX1.Text + "' and id='" + textBoxX2.Text + "' ";
OleDbDataAdapter da = new OleDbDataAdapter(s, con);
da.Fill(ds, "t1");
if (ds.Tables["t1"].Rows.Count > 0)
{
if (comboBoxEx1.SelectedIndex == 0)
variable.i = 1;
else
variable.i = 2;

this.Hide();

//همین جا یعنی قبل از نمایش فرم اصلی پروژه، مثل همون کاری که در لاگین انجام دادید
// یک سلکت به جدولی که گفتم بزنید و نتیجه رو بررسی کنید که آیا برای اون کاربر
// مقدار اون فیلد برابر با ترو هست یا فالس. اگر فالس بود فرم توافق نامه رو نمایش بدید.

main fm = new main();
fm.ShowDialog();
}
else
{
MessageBox.Show("رمز عبور یا نام کاربری اشتباه می باشد", "اخطار");
}
}

programerinfonet
پنج شنبه 23 خرداد 1392, 17:44 عصر
چرا حالا دیتابیس ؟؟؟ می تونی از رجیستری هم استفاده کنی که فکر می کنم منطقی ترشم همینه . مثلأ وقتی کاربر اومد اون برنامه رو جای دیگه نصب کرد و با همون اطلاعات (بکاپ) دیگه اون فرم تو سیستم جدید نمایش داده نمیشه پیشنهاد می کنم از رجیستری استفاده کن

ehsan7007
پنج شنبه 23 خرداد 1392, 18:00 عصر
سلام.
شما می تونید از setting استفاده کنید ، برای این منظور :

از منوی project روی properties برنامه تون کلیک کنید ؛ در صفحه ای که باز میشه از سمت چپ Settings رو انتخاب کنید ؛ در جدول به جای setting یک نام مثلا check وارد کنید ؛ نوعش رو bool کنید ؛

هر وقت کاربر قوانین رو پذیرفت اون رو true کنید :

Properties.Settings.Default.Check = true;
Properties.Settings.Default.Save();

تو فرم لودهم ذکر کنید که فقط وقتی مقدار setting برابر false بود اون رو نشون بده. یعنی :

if (Properties.Settings.Default.Check == true)
{
Form2 f2 = new Form2();
f2.Show();
this.Hide();

}


مدل های دیگه هم می تونید ازش استفاده کنید.

موفق باشید.