سلام و روز بخیر
دوستان عزیز بنده میخوام آخرین عنوان نمایش داده شده در لیست باکس رو در اول نمایش بده ولی نمی دونم به چه طریقی و یک سوال دیگه اینگه در یک فورم راجستر یا ذخیره سازی وقتی مشخصات رو وارد کردم و دکه ثبت رو زدم به صورت اتومات لیست باکس رفرش بشه آیا امکان این کار هست ممنون میشم اگر دوستان کمک کنند
این لیسا ID نداره ؟ بر اساس ID یا تاریخ ثبت به صورت برعکس sort کنید
آیدی داره میشه کمی واضح تر یا اگر کدی هست بهم بدین که انجام بدم مرسی
ای بابا کسی نیست که جواب این رو بده
چه جوری دیتا رو از دیتابیس می یخونید ؟ همونجا sort ش کنید.
مثلا اگه linq هستش ، آخرش یک .SortDecending بزارید ...
من به این صورت پیش رفتم اما یک مشکلی داره ارور میزنه
String Query = "Select * from patient_Reg order by Name [ASC|DESC] Dateen = '" + dateTimePicker1.Text + "'";
خب سه تا ایراد :
1- فکر می کنم ( مطمئن نیستم ) باید از dateTimePicker1.Value.Tostring() استفاده کنید
2-شما یایدیکی از دو حالت ASC یا DESC رو انتخاب کنید ،این ها یعنی سورت نزولی یا صعودی - شما الان هر دو رو انتخاب کردید !
3-اول where میاد بعد order
کد شما باید چیزی شبیه این بشه
String Query = "Select * from patient_Reg Dateen = '" + dateTimePicker1..Value.ToShortDateString() order by ID [|DESC] + "'";
و اما پیشنهاد :
اگر می خواید تو انجمن ها سریع تر به جواب برسید ، از اول سوالتون رو کامل و دقیق بگید تا افزادی که می تونن کمک کنند ، جذب سوال شما بشن.
مثلا شما اینجا باید راهنمایی می کردد که دارید از طریق query دیتا رو از sql می خونید ( چون راه های زیادی برای اینکار وجود داره).
بلی کاملا حق با شما هست خوب یک مشکل بنده همین هست که دقیق منظورم رو نمیتونم واضح برسونم ولی باز هم ممنونم جواب داد فقط یک مشکل دیگه دارم در سوالم هست اینکه به صورت اتومات وقتی در فورم ثبت نام وقتی که ثبت می کنم در فورم دیگه که این کوری هست لیست باکس من رفرش نمیشه
listbox که خودش اتوماتیک پر نمیشه. باید یه function بسازید که این listbox رو پر کنه.
حالا :
1- زمان لود اولیه این فرم صداش میزنید که لیست قدیمی رو از دیتابیس بخونه
2- هر بار که کسی به لیست اضافه یا حذف یا edit شد ، این function رو صدا بزنید تا دو باره لیست رو بخونه و پر کنه.
توجه می کنید که در ابتدای این function باید listbox رو خالی کنید که لیست قدیمی از بین بره.
دوست عزیز بنده این کارها رو انجام داده ام اول
public void listbox_data() { DataBase db = new DataBase(); using (db.con) { String Query = "Select * from patient_Reg where Dateen = '" + dateTimePicker1.Text + "'order by PID DESC"; db.con.Open(); SqlCommand cmd = new SqlCommand(Query, db.con); SqlDataReader dr = cmd.ExecuteReader(); listBox1.ClearSelected(); while (dr.Read()) { listBox2.Items.Add(dr["PID"]); comboBox1.Items.Add(dr["PID"]); listBox1.Items.Add(dr["Name"]); } dr.Close(); db.con.Close(); } }
دومین کاری که باید میکردم
private void groupPanel1_Click(object sender, EventArgs e) { listBox1.Items.Clear(); listbox_data(); }
که این کد دوم رو بنده نتونستم در یک فورم دیگه انتقال بدم تا لیست باکس بنده رو ریستارت کنه ولی در همین صفحه هر کاری میتونم انجام بدم حطا تایم یا باتن و یا هم در گروپ بنل میشه دوستان راهنمایی کند که چطور این کد رو باید به یک کد دیگه انتقال لدم تا وقتی بر روی دکه ثبت کلیک کردم این کد دوم اجاره بشه
خب چه خطایی میده ؟ رو کدوم خط خطا میده .
شبیه اون مریضی می مونید که میره دکتز میگه اگه راست میگی بگو کجام درد می کنه!
هههههه خیلی جالب بود دوست عزیز خوب نمی دونم چطور باید به یک فورم دیگه انتقال بدم که از یک فورم دیکه لیست باکس رو ریستارت کنم
تا اونجایی که من فهمیدم ، شما یک دکمه New Patient دارید که وقتی کلیک شد ، احتمالا یک فرم دیگه باز میشه .
اونجا هر کاری خواستید بکنید ! بالاخره کاربر با کلیک رو دکمه نهایی ثبت فرایند اضافه کردن رو اجرا می کنه ، شما دیتا رو تو دیتابیس بریزد و اون پنجره رو ببندید
بعد کنترل بر می گرده تو این فرم دوباره تو همین فرم این تابع به روز رسانی رو صدا کنید. در واقع این کد صدا زدن رو باید ته کد newpaitent_click بنویسید.
معلومه که از یه فرم دیگه به سادگی نمیشه این فرم رو آپدیت کرد و اگه بشه هم منطقی نیست !
دوست عزیز بنده دیدم و عملی هم هست ولی چون من دسترسی به اون شخصی که همچین کاری کرده رو ندارم یعنی نرم افزاری ایجاد کرده که همین کارو انجام میده به همین دلیل همانند نرم افزار ایجاد شده یک نرم افزار دیگه خواستم ایجاد کنم
یه لطفی کنید ، بگد کدوم دکمه زده میشه تا بیمار اضافه شه و کد کلیک اون دکمه رو بزارید.
new frmreg().ShowDialog();
این کد صفحه ای هست که قراره باز بشه
try { cmd.Connection = db.con; cmd.Parameters.Clear(); cmd.CommandText = "insert into patient_Reg(Name,Sex,Dateen,Doctor)values(@a,@c,@d,@e)"; cmd.Parameters.AddWithValue("@a", txtname.Text); //cmd.Parameters.AddWithValue("@b", txtfname.Text); cmd.Parameters.AddWithValue("@c", cmdgender.Text); cmd.Parameters.AddWithValue("@d", dateTimePicker1.Text); cmd.Parameters.AddWithValue("@e", cmbdowctor.Text); db.con.Open(); cmd.ExecuteNonQuery(); db.con.Close(); new frmmali().Refresh(); this.Close(); txtname.Text = ""; txtage.Text = ""; // txtname.Focus(); } catch (Exception) { MessageBox.Show("خطای در سرور و یا در این بخش به وجود آمده است "); }
و این کد ثبت مشخصات مریض هست که وقتی تکمیل میشه و دکه ثپت زده میشه
این کد که اصلا نمی تونه درست باشه.
new frmreg().ShowDialog();
frmReg احتمالا اسم یک فرم هست که کلاس محسوب میشه ، شما نمی تونید با یک () ازش نمونه بسازید.
کد درست می تونه شبیه این باشه
frmReg fr = new frmreg(). fr.ShowDialog() listBox1.Items.Clear(); listbox_data();
دوست عزیز این فقط در همون قسمتیکه لیست باکس وجود داره کار میکنه ولی بنده در فورم که ثبت نام انجام میشه من مبخوام عمل ریستارت لیست باکس صورت بگیره
من هم می دونم شما چی می خواید و کد من دقیقا همین کار رو می کنه !
خط اول یه object جدید میسلزه ، خط دوم فرم ثبت نام رو باز می کنه .
وقتی ثبت نام تموم شد و برگشتیم به همین فرم
خط سوم لیست رو خالی می کنه و خط چهارم لیست رو با مقادیر جدید پر می کنه.
اگه دنبال روشی هستید که تو همون فرم ثبت نام لیست رو به روز کنید :
1- لیست باید public باشه
2- باید object این فرم یه جوری داده بشه به فرم ثبت نام که اونجا بروزرسانی رو انجام بده.
3- بعد از برگشت احتمالا یک رفرشی چیزی می خواید
که همشون اگر اگر اگر هم بشن غیر منطقی و خلاف اصول برنامه نویسی هستند.
تازه این کد من باید کامل تر هم بشه ،
باید تو فرم ثبت نام result رو روی ok تنظیم کرد و زمان برگشت چک کنیم اگر ok بود لیست رو رفرش کنیم و مثلا اگر کاربر فرم رو از بالا close کرده یا cancel رو زده ، بی خودی رفرش نکنیم.
هر کاری که کردم نشد نمیدونم چه کاری باید کنم البته در یک باتن او دو خط کد رو قرار دادم کار میکنه ولی در فور ثبت نام خیر اینکه چکاری باید انجام بدم خیلی گیچ کننده هست
ببخشید ! فکر کنم شما اصلا نمی خونی من چی می نویسم !
تغییر اطلاعات یک فرم در فرم دیگه انجام نمیشه ! به جای پافشاری رو چیزی که غلطه ، تجربه و دانش بقیه رو قبول کنید و پیش برید.
من با اجازتون دیگه این پرسش رو دنبال نمی کنم.
دوست عزیز و گرامی بنده از بابت جواب های گرمی که میدین خیلی ممنونم و سپاس گزارم
بنده متوجه منظور شما شدم باز هم ممنونم که وقت گرانبهای تان را در اختیار بنده قرار دادین موفق سربلند باشین
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)