مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

munibahmadi

عضویت از 1397/10/19

نمایش آخرین سطر لیست باکس در دریف اول

  • جمعه 15 شهریور 1398
  • 14:15
تشکر میکنم

سلام و روز بخیر 

دوستان عزیز  بنده میخوام آخرین عنوان نمایش داده شده در لیست باکس رو در اول نمایش بده ولی نمی دونم به چه طریقی و یک سوال دیگه اینگه در یک فورم راجستر یا ذخیره سازی وقتی مشخصات رو وارد کردم و دکه ثبت رو زدم به صورت اتومات لیست باکس رفرش بشه آیا امکان این کار هست  ممنون میشم اگر دوستان کمک کنند 

پاسخ های این پرسش

تعداد پاسخ ها : 23 پاسخ
کاربر سایت

aliaghamiri

عضویت از 1396/09/29

  • جمعه 15 شهریور 1398
  • 17:29

این لیسا ID نداره ؟ بر اساس ID یا تاریخ ثبت به صورت برعکس sort کنید

کاربر سایت

munibahmadi

عضویت از 1397/10/19

  • جمعه 15 شهریور 1398
  • 17:44

آیدی داره  میشه کمی واضح تر یا  اگر کدی هست بهم بدین که انجام بدم  مرسی 

کاربر سایت

munibahmadi

عضویت از 1397/10/19

  • شنبه 16 شهریور 1398
  • 17:20

ای بابا کسی نیست که جواب این رو بده 

کاربر سایت

aliaghamiri

عضویت از 1396/09/29

  • شنبه 16 شهریور 1398
  • 17:46

چه جوری دیتا رو از دیتابیس می یخونید ؟ همونجا sort ش کنید. 

مثلا اگه linq هستش ، آخرش یک .SortDecending بزارید ...

کاربر سایت

munibahmadi

عضویت از 1397/10/19

  • شنبه 16 شهریور 1398
  • 17:52
String Query = "Select * from patient_Reg where Dateen = '" + dateTimePicker1.Text + "'"; خوب دوست من در کجای این کد باید استفاده کنم
کاربر سایت

munibahmadi

عضویت از 1397/10/19

  • شنبه 16 شهریور 1398
  • 19:21

من  به این صورت پیش رفتم اما یک مشکلی داره ارور میزنه 

 String Query = "Select * from patient_Reg  order by Name [ASC|DESC]  Dateen = '" + dateTimePicker1.Text + "'";

کاربر سایت

aliaghamiri

عضویت از 1396/09/29

  • شنبه 16 شهریور 1398
  • 20:40

خب سه تا ایراد :

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 می خونید ( چون راه های زیادی برای اینکار وجود داره).

کاربر سایت

munibahmadi

عضویت از 1397/10/19

  • شنبه 16 شهریور 1398
  • 21:28

بلی  کاملا حق با شما هست   خوب یک مشکل بنده همین هست که دقیق منظورم رو نمیتونم واضح برسونم  ولی باز هم ممنونم   جواب داد فقط یک مشکل دیگه دارم در سوالم هست اینکه  به صورت اتومات وقتی در فورم ثبت نام وقتی که ثبت می کنم در فورم دیگه که این کوری هست  لیست باکس من رفرش نمیشه  

کاربر سایت

aliaghamiri

عضویت از 1396/09/29

  • یکشنبه 17 شهریور 1398
  • 07:48

listbox که خودش اتوماتیک پر نمیشه. باید یه function بسازید که این listbox رو پر کنه.

حالا :

1- زمان لود اولیه این فرم صداش میزنید که لیست قدیمی رو از دیتابیس بخونه

2- هر بار که کسی به لیست اضافه یا حذف یا edit شد ، این function رو صدا بزنید تا دو باره لیست رو بخونه و پر کنه.

توجه می کنید که در ابتدای این function  باید listbox رو خالی کنید که لیست قدیمی از بین بره.

کاربر سایت

munibahmadi

عضویت از 1397/10/19

  • یکشنبه 17 شهریور 1398
  • 17:08

دوست عزیز بنده  این کارها  رو انجام داده ام  اول 

    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();

        }

که این کد دوم رو بنده نتونستم در یک فورم دیگه انتقال بدم تا لیست باکس بنده رو ریستارت کنه  ولی در همین صفحه هر کاری میتونم انجام بدم حطا  تایم یا باتن و یا هم در  گروپ بنل  میشه  دوستان راهنمایی کند که چطور این کد رو باید به یک کد دیگه انتقال لدم تا وقتی بر روی دکه ثبت کلیک کردم این کد دوم اجاره بشه 

کاربر سایت

aliaghamiri

عضویت از 1396/09/29

  • یکشنبه 17 شهریور 1398
  • 17:40

خب چه خطایی میده ؟ رو کدوم خط خطا میده .

شبیه اون مریضی می مونید که میره دکتز میگه اگه راست میگی بگو کجام درد می کنه!

کاربر سایت

munibahmadi

عضویت از 1397/10/19

  • یکشنبه 17 شهریور 1398
  • 18:30

هههههه خیلی جالب بود    دوست عزیز  خوب نمی دونم چطور باید به یک فورم دیگه انتقال بدم  که از یک فورم دیکه لیست باکس رو  ریستارت کنم 

کاربر سایت

aliaghamiri

عضویت از 1396/09/29

  • یکشنبه 17 شهریور 1398
  • 18:50

تا اونجایی که من فهمیدم ، شما یک دکمه New Patient دارید که وقتی کلیک شد ، احتمالا یک فرم دیگه باز میشه .

اونجا هر کاری خواستید بکنید ! بالاخره کاربر با کلیک رو دکمه نهایی ثبت فرایند اضافه کردن رو اجرا می کنه ، شما دیتا رو تو دیتابیس بریزد و اون پنجره رو ببندید 

بعد کنترل بر می گرده تو این فرم دوباره تو همین فرم این تابع به روز رسانی رو صدا کنید. در واقع این کد صدا زدن رو باید ته کد newpaitent_click بنویسید.

معلومه که از یه فرم دیگه به سادگی نمیشه این فرم رو آپدیت کرد و اگه بشه هم منطقی نیست !

کاربر سایت

munibahmadi

عضویت از 1397/10/19

  • یکشنبه 17 شهریور 1398
  • 18:53

دوست عزیز  بنده دیدم و عملی هم هست ولی چون من دسترسی به اون شخصی که همچین کاری کرده رو ندارم یعنی نرم افزاری ایجاد کرده که همین کارو انجام میده  به همین دلیل  همانند نرم افزار ایجاد شده یک نرم افزار دیگه خواستم ایجاد کنم 

کاربر سایت

aliaghamiri

عضویت از 1396/09/29

  • دوشنبه 18 شهریور 1398
  • 09:40

یه لطفی کنید ، بگد کدوم دکمه زده میشه تا بیمار اضافه شه و کد کلیک اون دکمه رو بزارید.

کاربر سایت

munibahmadi

عضویت از 1397/10/19

  • دوشنبه 18 شهریور 1398
  • 10:14
 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("خطای در سرور و یا در این بخش  به وجود آمده است ");
            }

و این کد ثبت مشخصات مریض هست که وقتی تکمیل میشه و دکه ثپت زده میشه  

کاربر سایت

aliaghamiri

عضویت از 1396/09/29

  • دوشنبه 18 شهریور 1398
  • 11:02

این کد که اصلا نمی تونه درست باشه.

new frmreg().ShowDialog();

frmReg احتمالا اسم یک  فرم هست که کلاس محسوب میشه ، شما نمی تونید با یک  () ازش نمونه بسازید.

کد درست می تونه شبیه این باشه

frmReg fr = new frmreg().
fr.ShowDialog()

  listBox1.Items.Clear();
         listbox_data();

 

کاربر سایت

munibahmadi

عضویت از 1397/10/19

  • دوشنبه 18 شهریور 1398
  • 12:38

دوست عزیز این فقط در همون قسمتیکه لیست باکس وجود داره کار میکنه ولی بنده در  فورم  که ثبت نام انجام میشه   من مبخوام عمل ریستارت  لیست باکس صورت بگیره  

کاربر سایت

aliaghamiri

عضویت از 1396/09/29

  • دوشنبه 18 شهریور 1398
  • 13:16

من هم می دونم شما چی  می خواید و کد من  دقیقا همین کار رو می کنه !

خط اول یه object  جدید میسلزه ، خط دوم فرم ثبت نام رو باز می کنه . 

وقتی ثبت نام تموم شد و برگشتیم به همین فرم 

خط سوم لیست رو خالی می کنه و خط چهارم لیست رو با مقادیر جدید پر می کنه.

اگه دنبال روشی هستید که تو همون فرم ثبت نام لیست رو به روز کنید :

1- لیست باید public باشه 

2- باید object این فرم یه جوری داده بشه به فرم ثبت نام که اونجا بروزرسانی رو انجام بده.

3- بعد از برگشت احتمالا یک رفرشی چیزی می خواید 

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

کاربر سایت

aliaghamiri

عضویت از 1396/09/29

  • دوشنبه 18 شهریور 1398
  • 13:22

تازه این کد من باید کامل تر هم بشه ، 

باید تو فرم ثبت نام result رو روی ok تنظیم کرد و زمان برگشت چک کنیم اگر ok بود لیست رو رفرش کنیم و مثلا اگر کاربر فرم رو از بالا close کرده یا cancel رو زده ، بی خودی رفرش نکنیم.

کاربر سایت

munibahmadi

عضویت از 1397/10/19

  • دوشنبه 18 شهریور 1398
  • 14:05

هر کاری که کردم نشد  نمیدونم چه کاری باید کنم البته در یک باتن او دو خط کد رو قرار دادم کار میکنه ولی در فور ثبت نام خیر    اینکه چکاری باید انجام بدم خیلی  گیچ کننده هست 

کاربر سایت

aliaghamiri

عضویت از 1396/09/29

  • دوشنبه 18 شهریور 1398
  • 18:16

ببخشید ! فکر کنم شما اصلا نمی خونی من چی می نویسم ! 

تغییر اطلاعات یک فرم در فرم دیگه انجام نمیشه ! به جای پافشاری رو چیزی که غلطه ، تجربه و دانش بقیه رو قبول کنید و پیش برید.

من با اجازتون دیگه این پرسش رو دنبال نمی کنم.

کاربر سایت

munibahmadi

عضویت از 1397/10/19

  • دوشنبه 18 شهریور 1398
  • 18:51

دوست عزیز و گرامی بنده  از بابت جواب های گرمی که میدین خیلی ممنونم  و سپاس گزارم 

بنده  متوجه منظور شما شدم   باز هم ممنونم که وقت گرانبهای تان را در اختیار بنده قرار دادین  موفق سربلند باشین 

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)