نمایش نتایج 1 تا 39 از 39

نام تاپیک: آپديت كردن ديتابيس بصورت خودكار

  1. #1

    آپديت كردن ديتابيس بصورت خودكار

    سلام
    مي ميخواهم به محض اينكه كاربري تغييري در ديتابيس داد (مثلا يك رديف به يك جدول توسط يه كاربر اضافه شد) جدول براي تمام بازديد كنندگان بروز بشه (بدون رفرش كردن توسط خود كاربر)
    اين موضوع رو سرچ كرم اما جواب خوبي پيدا نكردم
    (با C#‎ و 2005 sql)

  2. #2

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    باید یه Select بزنید.

  3. #3
    کاربر دائمی آواتار smm2006sh
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    زاینده روددیروز-مرده رودامروز(1390/09/25دوباره به خواب رفت)
    پست
    441

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

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

  4. #4

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    لطفا واضح تر توضيح بدين
    اگه با يه مثال بگين ممنون ميشم
    چون واقعا اينو لازم دارم

  5. #5

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    درسته اطلاعات در بانك ذخيره ميشه اما نياز به execute در بانك داريم وقتي برنامه در حال اجراست. اينكارو چطور بايد انجام بدم ؟
    در غير اينصورت بايد از برنامه خارج بشم و بعد از ورود دوباره به برنامه تغييرات رو ببينم.
    لطفا راهنمايي كنين

  6. #6
    کاربر تازه وارد
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    تهران
    پست
    78

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    اينو امتحان كن

    //**************************Refresh grid view****************************
    SqlConnection connection2 = newSqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\Database.mdf;Integrated Security=True;User Instance=True");
    string query1 = "select * from table1 ";
    SqlCommand com1 = newSqlCommand(query1, connection2);
    SqlDataAdapter adapter1 = newSqlDataAdapter(com1);
    DataSet data1 = newDataSet();
    adapter1.Fill(data1);
    GridView2.DataSource = data1;
    GridView2.DataBind();


  7. #7
    کاربر دائمی آواتار behnam25214
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    @-<-<
    پست
    338

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    یه تابع بساز با هر نامی که خواستی و توش کدهای نمایش رو بنویس Select .و بعدش بعد از اضافه کردن رکوردآخرش تابع رو فراخوانی کن.

  8. #8

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    كسي نميتونه با يه نمونه كد راهنماييم كنه
    چون واقعا لازمش دارم
    ممنون ميشم

  9. #9
    کاربر دائمی آواتار behnam25214
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    @-<-<
    پست
    338

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    البته این کد واسه آپدیته یکمی تغییرش بدی اضافه کردن رو مینویسی.


    private void buttonX1_Click(object sender, EventArgs e)
    {
    int d = Convert.ToInt32(d1);
    OleDbConnection con = new OleDbConnection();
    con.ConnectionString = "Provider = Microsoft.Jet.Oledb.4.0;Data Source=" + Environment.CurrentDirectory + "\\SuperMarket.Mdb";

    Ssql = "Update Customer Set FirstName='" + textBox2.Text + "',LastName='" + textBox3.Text + "',Email='" + textBox4.Text + "',HomePhone=" + textBox5.Text + ",MobilePhone=" + textBox6.Text + ",Address='" + textBox7.Text + "',ZIPPostalCode=" + textBox8.Text + " Where id=" + d1 + "";

    OleDbDataAdapter da = new OleDbDataAdapter(Ssql,con);
    OleDbCommand cmupdate = new OleDbCommand(Ssql,con);
    con.Open();
    cmupdate.ExecuteNonQuery();
    con.Close();
    DataSet ds = new DataSet();
    da.Fill(ds, "Customer");

    show();

    }


    اینم تابع شو واسه بروز رسانی Gride View



    private void show()
    {
    try
    {
    dataGridView1.DataBindings.Clear();
    OleDbConnection Con = new OleDbConnection();
    Con.ConnectionString = "Provider = Microsoft.Jet.Oledb.4.0;Data Source=" + Environment.CurrentDirectory + "\\SuperMarket.Mdb";
    Con.Open();
    Ssql = "Select * From Customer";
    DataSet ds = new DataSet();
    OleDbDataAdapter da = new OleDbDataAdapter(Ssql, Con);
    da.Fill(ds, "Customer");
    dataGridView1.DataBindings.Add(new Binding("DataSource", ds, "Customer"));
    Con.Close();
    }
    catch { }
    }


  10. #10

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    ممنون از راهنمايي شما دوست عزيز
    اما من در يكي از صفحات فرم در بانك يك فيلد رو اضافه مي كنم و در فرم ديگر همين فيلد رو از Combo box مي خونم
    اما مشكل اينجاست كه وقتي برنامه در حال اجراست و من اين فيلد رو اضافه مي كنم و همون موقع فرمي كه combo در اون قرار داره رو باز مي كنم اين فيلد اضافه نميشه و بايد از برنامه خارج شم و دوباره وارد شم
    چطور اين مشكلو حل كنم؟چطور بانك رو در حال اجرا execute ميشه كرد؟
    اگه ممكنه(با C#‎ , sql 2005)

  11. #11

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    سلام دوست عزیز
    منم همین مشکل رو داشتم
    وقتی رو فرم دو بار کلیک می کنی تابع مربوط به form load باز می شه اونجا باید یه تیکه کد مثل زیر ببینی
    this.callsTableAdapter.Fill(this.phbookDataSet1.ca lls);
    اونو کپی کن و هر جا خواستی datagridview رو refresh کنی این کد رو بنویس
    موفق باشی

  12. #12
    کاربر دائمی آواتار behiunforgiven
    تاریخ عضویت
    مهر 1386
    محل زندگی
    اصفهان
    سن
    37
    پست
    172

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    نقل قول نوشته شده توسط m.developer مشاهده تاپیک
    ممنون از راهنمايي شما دوست عزيز
    اما من در يكي از صفحات فرم در بانك يك فيلد رو اضافه مي كنم و در فرم ديگر همين فيلد رو از Combo box مي خونم
    اما مشكل اينجاست كه وقتي برنامه در حال اجراست و من اين فيلد رو اضافه مي كنم و همون موقع فرمي كه combo در اون قرار داره رو باز مي كنم اين فيلد اضافه نميشه و بايد از برنامه خارج شم و دوباره وارد شم
    چطور اين مشكلو حل كنم؟چطور بانك رو در حال اجرا execute ميشه كرد؟
    اگه ممكنه(با C#‎‎ , sql 2005)

    دوست عزیز مشکلت حل شد؟

    منم همین مشکل رو دارم.

    اگه حل شد لطف کن راهنمایی کن.

    مرسی.

  13. #13
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    نقل قول نوشته شده توسط m.developer مشاهده تاپیک
    سلام
    مي ميخواهم به محض اينكه كاربري تغييري در ديتابيس داد (مثلا يك رديف به يك جدول توسط يه كاربر اضافه شد) جدول براي تمام بازديد كنندگان بروز بشه (بدون رفرش كردن توسط خود كاربر)
    اين موضوع رو سرچ كرم اما جواب خوبي پيدا نكردم
    (با C#‎‎ و 2005 sql)
    قابلیت انجام اینکار در شبکه و برایه بیشتر از یک کاربر کار پیچیده‌‌ای است ، روش ساده‌ای که با کد بشه پیشنهاد داد وجود ندارد، و در عمل هم معمولاً پیاده‌ریزی نمیشه (حتی سیستم ERP مال مایکراسافت این قابلیت را نداره، کاربر دیگر قبل از ویرایش داده هایی که توسط یک کاربر دیگر در مابین زمان گرفته شدن و اراعه دادن ویرایشاتش باید رکورد را دوباره از داتابیس بگیرد.).
    به جایه حل این مشکل به مبحث pessimistic / oprimistic locking نگاه برایه جلوگیری از تغییر داده‌ها به توسط یک کاربر دیگر بندازید.

  14. #14
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    نقل قول نوشته شده توسط m.developer مشاهده تاپیک
    ممنون از راهنمايي شما دوست عزيز
    اما من در يكي از صفحات فرم در بانك يك فيلد رو اضافه مي كنم و در فرم ديگر همين فيلد رو از Combo box مي خونم
    اما مشكل اينجاست كه وقتي برنامه در حال اجراست و من اين فيلد رو اضافه مي كنم و همون موقع فرمي كه combo در اون قرار داره رو باز مي كنم اين فيلد اضافه نميشه و بايد از برنامه خارج شم و دوباره وارد شم
    چطور اين مشكلو حل كنم؟چطور بانك رو در حال اجرا execute ميشه كرد؟
    اگه ممكنه(با C#‎‎‎ , sql 2005)
    کی کمبو باکس را پر میکنید؟
    قبل از اینکه فرم را باز کنید را و یا در زمان DropDown event کمبو باکس را پرش کنید، به این شکل مشکلتا حل میشه.

  15. #15

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    combo box به بانك اتصال داره و فيلد مثلا نام رو نشون ميده
    اما وقتي در فرم نام جديد وارد مي كنم و به فرمي كه combo اونجاست ميرم نام اضافه نشده
    و بايد حتما از برنامه خارج شم و بعد از ورود دوباره تغييرات رو ببينم
    واسه رفعش چيكار كنم؟

  16. #16
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    نقل قول نوشته شده توسط m.developer مشاهده تاپیک
    combo box به بانك اتصال داره و فيلد مثلا نام رو نشون ميده
    اما وقتي در فرم نام جديد وارد مي كنم و به فرمي كه combo اونجاست ميرم نام اضافه نشده
    و بايد حتما از برنامه خارج شم و بعد از ورود دوباره تغييرات رو ببينم
    واسه رفعش چيكار كنم؟
    با چه روشی به داتابیس وصله؟ لطفاً یکمی کد ، توضیح.

  17. #17

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    در فرمي كه كمبو در اونجا قرار داره در فرم لود اين كد رو نوشتم و كمبو رو به بانك اتصال دادم
                  
    string cnStr = "Data Source=.\\sqlexpress;Initial Catalog=SMSDB;Integrated Security=True";
    SqlConnection obj = new SqlConnection();
    obj.ConnectionString = cnStr;
    DataSet ds = new DataSet();
    SqlDataAdapter dp = new SqlDataAdapter();
    dp.SelectCommand = new SqlCommand();
    dp.SelectCommand.Connection = obj;
    dp.SelectCommand.CommandText = "SELECT TypeName FROM Type";
    obj.Open();
    dp.Fill(ds, "Type");
    obj.Close();
    CmbTypeS.DataSource = ds;
    CmbTypeS.DisplayMember = "Type.TypeName";




    در فرم ورود هم كه اطلاعات رو وارد كردم از جمله اين فيلدي كه در كمبو select كردم
    اما وقتي در زمان اجرا فيلد رو وارد مي كنم در كمبوي اين فرم نشون نميده

  18. #18
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    نقل قول نوشته شده توسط m.developer مشاهده تاپیک
    در فرمي كه كمبو در اونجا قرار داره در فرم لود اين كد رو نوشتم و كمبو رو به بانك اتصال دادم
                  
    string cnStr = "Data Source=.\\sqlexpress;Initial Catalog=SMSDB;Integrated Security=True";
    SqlConnection obj = new SqlConnection();
    obj.ConnectionString = cnStr;
    DataSet ds = new DataSet();
    SqlDataAdapter dp = new SqlDataAdapter();
    dp.SelectCommand = new SqlCommand();
    dp.SelectCommand.Connection = obj;
    dp.SelectCommand.CommandText = "SELECT TypeName FROM Type";
    obj.Open();
    dp.Fill(ds, "Type");
    obj.Close();
    CmbTypeS.DataSource = ds;
    CmbTypeS.DisplayMember = "Type.TypeName";




    در فرم ورود هم كه اطلاعات رو وارد كردم از جمله اين فيلدي كه در كمبو select كردم
    اما وقتي در زمان اجرا فيلد رو وارد مي كنم در كمبوي اين فرم نشون نميده

    بنا بر این چیزی که میگید، اگر فرمی که کمبو باکس داخلش هست را ببندید و باز کنید ( یا اینکه بعد از اینکه مقادیر به داتابیس وارد شد بازش کنید) باید مقادیر وارد شده رو هم نشان بده.
    از روشهایی مانند استاتیک برایه نشان دادن فرم استفاده میکنید؟ کدی که فرمی که کمبو باکس داخلش قرار دارد را برایه نشان دادن استفاده میکنید را بفرستید.

  19. #19
    کاربر دائمی آواتار mohsen_metn
    تاریخ عضویت
    آبان 1386
    محل زندگی
    تهران
    پست
    356

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    سلام
    میتونی از تایمر استفاده کنی

  20. #20

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    ميشه بيشتر توضيح بدين؟
    ممنون ميشم
    آخه خيلي از برنامه ها اين حالت رو دارن اما چرا هيچ جوابي واسه اين مشكل كسي نميده!

  21. #21
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    نقل قول نوشته شده توسط اَرژنگ مشاهده تاپیک
    قابلیت انجام اینکار در شبکه و برایه بیشتر از یک کاربر کار پیچیده‌‌ای است ، روش ساده‌ای که با کد بشه پیشنهاد داد وجود ندارد، و در عمل هم معمولاً پیاده‌ریزی نمیشه (حتی سیستم ERP مال مایکراسافت این قابلیت را نداره، کاربر دیگر قبل از ویرایش داده هایی که توسط یک کاربر دیگر در مابین زمان گرفته شدن و اراعه دادن ویرایشاتش باید رکورد را دوباره از داتابیس بگیرد.).
    به جایه حل این مشکل به مبحث pessimistic- / optimistic- locking نگاه برایه جلوگیری از تغییر داده‌ها توسط یک کاربر دیگر بندازید.
    میشه.
    من این کار رو انجام دادم.بیشتر از 6 ماه روش کار کردم.و سرعت و دقت فوق العاده ای داره.(استفاده ازUser Defined Transaction)
    و باید بگم که متاسفانه اگر کدش(+30MB) رو بهتون بدم نمیتونید استفاده کنید چون با دیتاست طراحی نشده و زیادی OO هست. و قابلیت نوشتن کد hacky(عشق بچه های تالار) رو نداره.
    فقط خواستم بگم که میشه ولی خیلی سخته.
    من برای هر جدول از 5 تا class و کلی Interface استفاده میکنم.(که حداقل تعداد ممکن برای این کار هست.حداکثر هم نداره.)
    به طور مثال
    CustomerRow//برای ذخیره اطلاعات client-only
    CustomerHost//برای اجرا دستورات در سرور server-only
    CustomerEditEventArgs//برای تبادل اطلاعات shared
    CustomerDeleteEventArgs//برای تبادل اطلاعات shared
    CustomerInsertEventArgs//برای تبادل اطلاعات shared
    فقط یک وقت نوشتنش به صورت دستی توی ذهنتون جرقه نزنه(من از روز اول یک code-generator طراحی کردم و 6 ماه طول کشید.و برای من هر تیبل با 5 تا فیلد~=5000خط کد)
    اگر میخواهید چنین چیزی طراحی کنید به این چند تا requirement دقت کنید:

    کد اس کیو ال Support کنه*
    یک به یک - یک به n - n به n رو Support کنه**
    سریع باشه.
    بتونه Cloud باشه
    cross-database باشه*
    نیاز به Client-Configuration نداشته باشه*
    تحت وب کار کنه.
    ترافیکش پایین باشه.
    سطح دسترسی داشته باشه.
    log داشته باشه.
    رمزگزاری های Public-Key/Private-Key رو ساپورت کنه.*
    قابلیت داشتن Integrated BLL با استفاده از کلاسهای partial متود های partial اینترفیس ها و ...**
    ...
    ستاره دار ها مهم هستند.
    من فقط همین ها رو میدونم(http://en.wikipedia.org/wiki/Phosphorus تموم کردم.)

    من اسمش رو گزاشتم:RealTime Server-Side DAL
    هنوز اسمش رو ثبت نکردم.(چی گفتم توی ایران مهد کپیرایت)

    ببخشید اگر طولانی شد و یا خیلی تعریف از خود بود.
    معذرت میخوام.

  22. #22
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    نقل قول نوشته شده توسط m.developer مشاهده تاپیک
    ميشه بيشتر توضيح بدين؟
    ممنون ميشم
    آخه خيلي از برنامه ها اين حالت رو دارن اما چرا هيچ جوابي واسه اين مشكل كسي نميده!
    "این مشکل" معنی نمیده، کدام مشکل؟
    کدی که برایه پر کردن کمبو باکس فرستاده بودید از لحاض کاری اشکلای ندارد (ولی میشه از اینی که هست خیلی بهتر باشد)، ولی "مشکل" اصلی شما به نظر میرسد اینه که کی این کد صدا زده میشه.
    همانطوری که در پست قبلی گفتم، بنابر کدی که فرستادید هر بار که فرم باز میشه، باید جدیدترین مقادیر را نشان بده.
    پس تنها چیزی که میماند اینه که این کد کی صدا زده میشه، برایه جواب به این "مشکل" باید اینکه فرم را چطوری لود میکنید را ببینید.

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

  23. #23

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    من اين كد رو در لود فرم نوشتم و فرم ورود روي اين فرم باز ميشه و وقتي فرم ورود رو ميبندم در كمبو مقادير اضافه شده رو نشون نميده واسه همين كد رو در event هاي مختلف كمبو هم امتحان كردم اما جواب نداد بايد يه بار فرم كمبو رو ببندم و دوباره باز كنم اما خوب اينجوري كه اصلا جالب نيست!

  24. #24
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    نقل قول نوشته شده توسط m.developer مشاهده تاپیک
    من اين كد رو در لود فرم نوشتم و فرم ورود روي اين فرم باز ميشه و وقتي فرم ورود رو ميبندم در كمبو مقادير اضافه شده رو نشون نميده واسه همين كد رو در event هاي مختلف كمبو هم امتحان كردم اما جواب نداد بايد يه بار فرم كمبو رو ببندم و دوباره باز كنم اما خوب اينجوري كه اصلا جالب نيست!
    من با توضیحاتتان بیشتر گیج شدم،
    اگر ممکن است این ۲ تا فرم را بفرستید، یا هم اینکه اگر پروژه کوچیک است بفرستید، احتیاجی به فرستادن داتابیس نیست، فقط کد را ببینیم بسه.

    از لحاظ منطقی ، اگر فرم را دیباگ کنید باید ببینید که متد زمان لودشدن هر بار که فرم باز میشه باید کال بشه (به شرط اینکه از ورشهایی مانند مخفی کردن و دوباره نشان دادن فرم استفاده نشده باشد).

  25. #25
    کاربر دائمی آواتار Yasersadegh
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    اروميه
    پست
    393

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    سلام به همه دوستان
    دوستان من فهميدم مشكل اين دوستمون چيه!! دوست عزيز كساني كه تا به اينجا جوابهايي رو به شما دادند همه از اساتيد اين سايت هستند ولي به دليل كامل نبودن توضيحات شما متوجه قضيه نشدند!
    از لحاظ منطقی ، اگر فرم را دیباگ کنید باید ببینید که متد زمان لودشدن هر بار که فرم باز میشه باید کال بشه (به شرط اینکه از ورشهایی مانند مخفی کردن و دوباره نشان دادن فرم استفاده نشده باشد).

    البته استاد آر‍ژنگ اشاره فرمودند!
    نقل قول نوشته شده توسط m.developer مشاهده تاپیک
    من اين كد رو در لود فرم نوشتم و فرم ورود روي اين فرم باز ميشه و وقتي فرم ورود رو ميبندم در كمبو مقادير اضافه شده رو نشون نميده واسه همين كد رو در event هاي مختلف كمبو هم امتحان كردم اما جواب نداد بايد يه بار فرم كمبو رو ببندم و دوباره باز كنم اما خوب اينجوري كه اصلا جالب نيست!
    اما حل مشكل شما دوست عزيز...
    ببين وقتي يه كدي در فرم لود قرار بگيره زماني كه فرم برا اولين بار باز بشه اجرا ميشه و يا اگه فرم close بشه و باز بشه اجرا ميشه!! ولي چون شما در هنگام باز بودن فرم يه فرم ديگه باز مي كنيد و اونو مي بنديد ديگه كد رويه فرم لود اجرا نميشه و نتيجه ميشه مشكل شما!! حال شما كد رويه فرم لود رو در رويداد form Activate كپي كن حتما مشكلتون حل ميشه!!

    موفق باشيد

  26. #26

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    سلام ممنون
    اما اين مشكل حل نشد
    واسه بهتر مشخص شدن اين مشكل من كد فرم رو ميذارم اما چون پروژه حجمش بالاست من فقط اين دو صفحه كه مشكل داشت و كد اون رو گذاشتم بدون ديتابيس
    كد كمبو در فرم لود هست اما من كدشو همون طور كه دوست عزيز گفتن در Form_Activated هم امتحان كردم جواب نداد در event هاي كمبو هم امتحان كردم اما متاسفانه ....
    ممنون ميشم راهنمايي كنين
    همين مشكل رو در مورد ديتا گريد هم دارم
    WindowsFormsApplication1.zip

  27. #27
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    نقل قول نوشته شده توسط m.developer مشاهده تاپیک
    سلام ممنون
    اما اين مشكل حل نشد
    واسه بهتر مشخص شدن اين مشكل من كد فرم رو ميذارم اما چون پروژه حجمش بالاست من فقط اين دو صفحه كه مشكل داشت و كد اون رو گذاشتم بدون ديتابيس
    كد كمبو در فرم لود هست اما من كدشو همون طور كه دوست عزيز گفتن در Form_Activated هم امتحان كردم جواب نداد در event هاي كمبو هم امتحان كردم اما متاسفانه ....
    ممنون ميشم راهنمايي كنين
    همين مشكل رو در مورد ديتا گريد هم دارم
    WindowsFormsApplication1.zip

    برایه بهبود برنامه به این نکات توجه کنید:
    ۱. به جایه کپی پیست این


    string cnStr = "Data Source=.\\sqlexpress;Initial Catalog=SMSDB;Integrated Security=True";



    از کانکشن استرینگ در کانفیگوریشن فایل استفاده کنید،

    ۲. این کد :

    i
    f (DB.dbConnected(cnStr))
    {

    DB myDB = new DB();

    گنگ است ، کد کلاس را بفرستید.

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

  28. #28
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    روش ماسمالی: (این مشکلتان را در ظاهر حل میکنه ولی مشکلات اصلی همانطوری حل نشده میمانند):


    این کد را

    private void BtnNewTp_Click(object sender, EventArgs e)
    {
    Form2 f2 = new Form2();
    f2.ShowDialog();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
    string cnStr = "Data Source=.\\sqlexpress;Initial Catalog=SMSDB;Integrated Security=True";
    SqlConnection obj = new SqlConnection();
    obj.ConnectionString = cnStr;
    DataSet ds = new DataSet();
    SqlDataAdapter dp = new SqlDataAdapter();
    dp.SelectCommand = new SqlCommand();
    dp.SelectCommand.Connection = obj;
    dp.SelectCommand.CommandText = "SELECT TypeName FROM Type";
    obj.Open();
    dp.Fill(ds, "Type");
    obj.Close();
    CmbTypeS.DataSource = ds;
    CmbTypeS.DisplayMember = "Type.TypeName";

    }


    با این کد عوض کنید:


    private void BtnNewTp_Click(object sender, EventArgs e)
    {
    Form2 f2 = new Form2();
    f2.ShowDialog();
    ConnectToDatabase();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
    ConnectToDatabase();
    }

    private void ConnectToDatabase()
    {

    string cnStr = "Data Source=.\\sqlexpress;Initial Catalog=SMSDB;Integrated Security=True";
    SqlConnection obj = new SqlConnection();
    obj.ConnectionString = cnStr;
    DataSet ds = new DataSet();
    SqlDataAdapter dp = new SqlDataAdapter();
    dp.SelectCommand = new SqlCommand();
    dp.SelectCommand.Connection = obj;
    dp.SelectCommand.CommandText = "SELECT TypeName FROM Type";
    obj.Open();
    dp.Fill(ds, "Type");
    obj.Close();
    CmbTypeS.DataSource = ds;
    CmbTypeS.DisplayMember = "Type.TypeName";
    }

  29. #29

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    سلام
    اين كد مربوط به همون كلاس است.
    من ميخوام اين كار بهينه باشه چه كار بايد بكنم؟
    ممنون از كمكتون
    DB_DLL.zip

  30. #30

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    من كد رو امتحان كردم تغييري ايجاد نشد

  31. #31

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    خواهش مي كنم يكي كمك كنه.آخه اين جور صفحات تو خيلي از برنامه هاي حسابداري هست واسه حلش پس چيكار ميكنن؟؟؟؟؟؟؟

  32. #32
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    نقل قول نوشته شده توسط m.developer مشاهده تاپیک
    سلام
    اين كد مربوط به همون كلاس است.
    من ميخوام اين كار بهينه باشه چه كار بايد بكنم؟
    ممنون از كمكتون
    DB_DLL.zip
    ۱. از اون کلاس استفاده نکنید! (اگر هم مجبورید که استفاده کنید لاقل یک کد را ۱۰ جایه مختلف کپی پیست نکنید، همان کانکشن استرینگ را در همان کلاس هارد کود میکردید بهتر بود)ولی حداقل با داتاست کار کنید،

    مثال ساده ضمیمه شده: (این مثال از DatSet استفاده میکنه ، راه‌هایه جدیدتر Entity Framwork, Linq To Sql ...را برایه کارهایه عملی توصیه میکنم ، این مثال فقط برایه اینه که حداقل پروژه از این سطح کمتر نباید باشد است)
    فایل های ضمیمه فایل های ضمیمه

  33. #33
    کاربر دائمی آواتار ahrimaneahurai
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران
    پست
    554

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    مشکل منم این بود اما یه جا خوندم از query notification باید استفاده شه.
    اما خودم نتونستم به کد تبدیلش کنم. وقتی کسی در جدول شما رکوردی اضافه می کنه sql به شما خبر میده و شما می تونی دوباره کمبوباکستو به صورت خودکار پر کنی.

  34. #34
    مدیر بخش آواتار mmd2009
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    تهران
    پست
    2,393

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    با سلام خدمت اقای اَرژنگ

    امیدوارم وقت جواب دادن رو داشته باشید.

    من یک سوال داشتم اونم اینه که چطوری میشه در معماری 3 لایه ای برای دو جدول کار کرد.

    اون چیزی که شما عرض کردید و واقعا من ازش استفاده کردم برای یک جدول بود.

    من برای دو جدول میام در همین 3 لایه کار ها رو میکنم ولی یک جا خودنم کدجریتور ها میان مثلا برای 3 جدول 9 لایه درست میکنن تو همین سایت بود ؟؟!!! ولی چطور برای لایه کاربری 3 لایه جدا درست شده. اصلا قاطی شده.

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

    با تشکر

    کسی که به خود اطمینان دارد به تعریف دیگران احتیاج ندارد. «گوستاو لوبون»


  35. #35
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    نقل قول نوشته شده توسط mmd2009 مشاهده تاپیک
    با سلام خدمت اقای اَرژنگ

    امیدوارم وقت جواب دادن رو داشته باشید.

    من یک سوال داشتم اونم اینه که چطوری میشه در معماری 3 لایه ای برای دو جدول کار کرد.

    اون چیزی که شما عرض کردید و واقعا من ازش استفاده کردم برای یک جدول بود.

    من برای دو جدول میام در همین 3 لایه کار ها رو میکنم ولی یک جا خودنم کدجریتور ها میان مثلا برای 3 جدول 9 لایه درست میکنن تو همین سایت بود ؟؟!!! ولی چطور برای لایه کاربری 3 لایه جدا درست شده. اصلا قاطی شده.

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

    با تشکر


    اگر بخواهید به همین مثال یک جدول دیگر اضافه میکنیم که راحت معلوم باشد، یک جدول شماره تلفن اضافه کنیم که اشخاص به شماره تلفنها ربط داشته باشند به کار میاد؟

    در معماری ۳ لایه تعداد جدولها مهم نیست، فقط در لایه دال اینکه از کدام جدولها گرفته و یا داده حفظ میشه اهمیت دارد، بقیه برنامه با اشیایه منطقی کار میکنند.
    مثلاً میشه یک کلاس دانش‌آموز را از ۲ تا جدول خواند و در ۳ تا جدول ثبط کرد ولی از لایه دال به بالا فقط با کلاس دانش آموز کار میکنند.
    اینکه کد جنریتورها بر تعداد جداول لایه درست میکنند درست نیست، ممکنه بر تعداد جدولها کلاس درست کرد و یا بر تعداد کلاسها جدول درست کرد و یا اینکه اصلاً میشه هیچ رابطه‌ای بین تعداد کلاسها و یا جدولها نباشد. اینکه تعداد لایه‌ها برحسب جدولها تغییر میکنه اصلاً منطقی نیست! ممکنه مفهومها را اشتباه درک کرده باشند.

  36. #36
    کاربر دائمی آواتار rezamansori
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    خوزستان - اهواز
    سن
    30
    پست
    140

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    اقا بهترین راه حل اینه که تو یه تایمر کد سلکت رو قرار بدی و تعداد رو تو یه لیبل مخفی بذاری. بعد تو رویداد تکست چینج لیبل بنویسی که آقا دیتا سورس گرید همون دیتا سته که آخرین بار توی تایمر ایجاد شد.
    امیدوارم کودشو خودت بتونی بنویسی.

  37. #37
    کاربر دائمی آواتار shima2006
    تاریخ عضویت
    مرداد 1385
    محل زندگی
    تهران
    سن
    37
    پست
    339

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    نقل قول نوشته شده توسط mmd2009 مشاهده تاپیک
    با سلام خدمت اقای اَرژنگ
    امیدوارم وقت جواب دادن رو داشته باشید.
    من یک سوال داشتم اونم اینه که چطوری میشه در معماری 3 لایه ای برای دو جدول کار کرد.
    اون چیزی که شما عرض کردید و واقعا من ازش استفاده کردم برای یک جدول بود.
    من برای دو جدول میام در همین 3 لایه کار ها رو میکنم ولی یک جا خودنم کدجریتور ها میان مثلا برای 3 جدول 9 لایه درست میکنن تو همین سایت بود ؟؟!!! ولی چطور برای لایه کاربری 3 لایه جدا درست شده. اصلا قاطی شده.
    کدام روش اصولی تر هستش
    با تشکر
    آقای mmd2009 از بابت این پست مفیدتون متشکرم
    میخواستم بدونم آیا شما موفق شدید که در برنامتون از دو یا سه جدول به جای یه جدول استفاده کنید؟
    مثالی که گذاشته بودین خیلی ساده و قابل فهم بود ، اگر بتونید اون مثال رو با دو یا سه جدول تکمیل و در اینجا قرار بدین یک دنیا ممنون میشم ازتون....
    متشکرم

  38. #38
    مدیر بخش آواتار mmd2009
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    تهران
    پست
    2,393

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    با سلام.

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

    متاسفانه کنکور دارم و چند وقته وقتمو صرف خوندن کتابهای جامع کردم و چون اصلا برنامه vs رو هم پاکش کردم و نمیتونم مثال اماده کنم تا بعد که انشاالله با توپ پر بیام تو سایت.

    کسی که به خود اطمینان دارد به تعریف دیگران احتیاج ندارد. «گوستاو لوبون»


  39. #39
    کاربر دائمی آواتار shima2006
    تاریخ عضویت
    مرداد 1385
    محل زندگی
    تهران
    سن
    37
    پست
    339

    نقل قول: آپديت كردن ديتابيس بصورت خودكار

    نقل قول نوشته شده توسط mmd2009 مشاهده تاپیک
    با سلام.
    همونطور که دوستمون گفتن اصلا فرقی نداره 1 جدول باشه یا 100 تا.
    متاسفانه کنکور دارم و چند وقته وقتمو صرف خوندن کتابهای جامع کردم و چون اصلا برنامه vs رو هم پاکش کردم و نمیتونم مثال اماده کنم تا بعد که انشاالله با توپ پر بیام تو سایت.
    متشکرم دوست عزیز

    از دوستان کسی نیست که یک مثال بسیار کوچیک از چندلایه نویسی با چند تا جدول در لایه
    DAL داشته باشه؟

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •