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

نام تاپیک: کسر نکردن از دیتابیس انبار

  1. #1
    کاربر دائمی
    تاریخ عضویت
    آبان 1390
    محل زندگی
    تهران
    پست
    227

    Question کسر نکردن از موجودی دیتابیس انبار

    باسلام خدمت دوستان و بزرگواران
    تو پروژم یک کنترل با نام txtNumber دارم که یک عدد از کاربر میگیره و از فیلد ستون CompanyName کم کنه.
    اومدم شرطی گذاشتم که اگه کد محصولی (txtSaleCodCommodity) با توجه به محصولی که کاربر انتخاب میکنه پر میشه،اگر با کد محصول دیتابیس (CommodCod) برابر بود اون تعدادی که کاربر وارد کرده رو از تعداد محصولی که کاربر انتخاب کرده کسر کنه.
    من از کد زیر استفاده کردم:

    if (btnInsert.Text == "درج")
    {
    db = new LinqToTrazoDataContext();

    int Numbertxt = int.Parse(txtNumber.Text), NumberTbl;
    string CommodCodTab;

    var TabCom = new CommoTable();
    CommodCodTab = TabCom.CommodCod;
    NumberTbl = Convert.ToInt16(TabCom.CommodNumb);

    if (txtSaleCodCommodity.Text == TabCom.CommodCod)
    {
    NumberTbl = NumberTbl - Numbertxt;
    TabCom.CommodNumb = Convert.ToInt16(NumberTbl);
    db.CommoTables.InsertOnSubmit(TabCom);
    db.SubmitChanges();
    }
    }


    ولی نمیدونم چرااز دیتابیسم کم نمیکنه.
    ممنون میشم بهم بگین ایراد کارم کجاست و از چه کدی باید استفاده کنم.
    باتشکر از تمام دوستان
    آخرین ویرایش به وسیله bmvgod : یک شنبه 28 بهمن 1397 در 21:54 عصر

  2. #2

    نقل قول: کسر نکردن از دیتابیس انبار

    شما داری رکورد جدید درج می کنی در صورتی که باید جستجو کنید و رکورد را بدست بیارید و مقدار را بروزرسانی کنید

  3. #3
    کاربر دائمی
    تاریخ عضویت
    آبان 1390
    محل زندگی
    تهران
    پست
    227

    نقل قول: کسر نکردن از دیتابیس انبار

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    شما داری رکورد جدید درج می کنی در صورتی که باید جستجو کنید و رکورد را بدست بیارید و مقدار را بروزرسانی کنید
    یعنی از همچین کدی استفاده کنم:

    var tab = from q in db.CommoTables
    where txtSaleCodCommodity.Text == q.CommodCod
    select q;


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

  4. #4
    کاربر دائمی
    تاریخ عضویت
    آبان 1390
    محل زندگی
    تهران
    پست
    227

    نقل قول: کسر نکردن از دیتابیس انبار

    نقل قول نوشته شده توسط bmvgod مشاهده تاپیک
    یعنی از همچین کدی استفاده کنم:

    var tab = from q in db.CommoTables
    where txtSaleCodCommodity.Text == q.CommodCod
    select q;


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

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

  5. #5

    نقل قول: کسر نکردن از دیتابیس انبار

    شما چجوری یه رکورد رو ویرایش میکنی؟ اینم دقیقا همون قضیه ست، کدی که برای ویرایش یک رکورد استفاده میکنی رو بذار تا راهنماییت کنیم

  6. #6
    کاربر دائمی
    تاریخ عضویت
    آبان 1390
    محل زندگی
    تهران
    پست
    227

    نقل قول: کسر نکردن از دیتابیس انبار

    نقل قول نوشته شده توسط mr.sirwan مشاهده تاپیک
    شما چجوری یه رکورد رو ویرایش میکنی؟ اینم دقیقا همون قضیه ست، کدی که برای ویرایش یک رکورد استفاده میکنی رو بذار تا راهنماییت کنیم

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


    SelectedIndexId = int.Parse(dgvSalesInvoi.CurrentRow.Cells["RowFact"].Value.ToString());
    db = new LinqToTrazoDataContext();
    var fcTableEdit = db.FactorSaleTables.Where(c=>c.RowFact==SelectedIn dexId).Single();
    fcTableEdit.CommodCodFact = txtSaleCodCommodity.Text;
    fcTableEdit.CommodName = cmbCommodityName.Text;
    fcTableEdit.CompanyName = txtNameCO.Text;
    fcTableEdit.Number = Int16.Parse(txtNumber.Text);
    fcTableEdit.TotalPrice = float.Parse(txtTotalPrice.Text);
    fcTableEdit.Weight = float.Parse(txtWeight.Text);
    fcTableEdit.TotalWeight = float.Parse(txtTotalWeight.Text);
    fcTableEdit.CommodSize = cmbSiz.Text;
    fcTableEdit.UnitPrice = float.Parse(txtUnitPrice.Text);
    fcTableEdit.Tax = float.Parse(txtTax.Text);
    fcTableEdit.Dicount = float.Parse(txtTax.Text);
    db.SubmitChanges();

  7. #7

    نقل قول: کسر نکردن از دیتابیس انبار

    خب دیگه دقیقا همینطوری عمل میکنی اول باید رکورد موردنظرتو واکشی کنی بعد اون فیلدی که مدنظرت هست رو ویرایش میکنی و تمام، به این شکل:
    SelectedIndexId = int.Parse(dgvSalesInvoi.CurrentRow.Cells["TabComId"].Value.ToString());
    db = new LinqToTrazoDataContext();

    var TabCom = db.CommoTables.SingleOrDefault(c => c.Id == SelectedIndexId);

    if(TabCom != null)
    {
    TabCom.CommodNumb -= Convert.ToInt16(NumberTbl);
    db.SubmitChanges();
    }


  8. #8
    کاربر دائمی
    تاریخ عضویت
    آبان 1390
    محل زندگی
    تهران
    پست
    227

    Question نقل قول: کسر نکردن از دیتابیس انبار

    نقل قول نوشته شده توسط mr.sirwan مشاهده تاپیک
    خب دیگه دقیقا همینطوری عمل میکنی اول باید رکورد موردنظرتو واکشی کنی بعد اون فیلدی که مدنظرت هست رو ویرایش میکنی و تمام، به این شکل:
    SelectedIndexId = int.Parse(dgvSalesInvoi.CurrentRow.Cells["TabComId"].Value.ToString());
    db = new LinqToTrazoDataContext();

    var TabCom = db.CommoTables.SingleOrDefault(c => c.Id == SelectedIndexId);

    if(TabCom != null)
    {
    TabCom.CommodNumb -= Convert.ToInt16(NumberTbl);
    db.SubmitChanges();
    }

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


    CommoTable codeTbable = new CommoTable
    {
    CommodName = txtCommodName.Text,
    CommodGenre = txtCommodGenre.Text,
    CommodSize = txtCommodSize.Text,
    CompanyName = txtCo.Text,
    CommodNumb = Convert.ToInt16(txtCommodNume.Text),
    CommodWeight = float.Parse(txtCommodWeight.Text) ,
    CommodTotal = float.Parse(txtCommodTotal.Text),
    UnitPrice = Int16.Parse(txtUnitPrice.Text),
    Dicount = byte.Parse(txtDicount.Text),
    Tax = Int16.Parse(txtTax.Text),
    };
    db.SubmitChanges();

  9. #9

    نقل قول: کسر نکردن از دیتابیس انبار

    در هر حال روال به همون صورتیه که گفتم: 1. واکشی رکورد موردنظر (حالا به هر طریقی) 2. ویرایش از طریق کدی که نوشتم 3. ذخیره تغییرات

  10. #10
    کاربر دائمی
    تاریخ عضویت
    آبان 1390
    محل زندگی
    تهران
    پست
    227

    نقل قول: کسر نکردن از دیتابیس انبار

    نقل قول نوشته شده توسط mr.sirwan مشاهده تاپیک
    در هر حال روال به همون صورتیه که گفتم: 1. واکشی رکورد موردنظر (حالا به هر طریقی) 2. ویرایش از طریق کدی که نوشتم 3. ذخیره تغییرات
    از طریق کد زیر سعی دارم رکود مورد نظرمو واکشی کنم:

    var tab = from q in db.CommoTables
    where txtSaleCodCommodity.Text == q.CommodCod
    select q.RowCommo;


    و با کد زیر تغییراتو انجام و اعمال کنم:

    if (tab != null)
    {
    TabCom.CommodNumb -= Convert.ToInt16(NumberTbl);
    db.SubmitChanges();
    }


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

  11. #11
    کاربر دائمی آواتار alexmcse
    تاریخ عضویت
    فروردین 1391
    محل زندگی
    شیراز
    پست
    860

    نقل قول: کسر نکردن از دیتابیس انبار

    نقل قول نوشته شده توسط bmvgod مشاهده تاپیک
    از طریق کد زیر سعی دارم رکود مورد نظرمو واکشی کنم:

    var tab = from q in db.CommoTables
    where txtSaleCodCommodity.Text == q.CommodCod
    select q.RowCommo;


    و با کد زیر تغییراتو انجام و اعمال کنم:

    if (tab != null)
    {
    TabCom.CommodNumb -= Convert.ToInt16(NumberTbl);
    db.SubmitChanges();
    }


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

           foreach (var VARIABLE in tab)            {


    VARIABLE .CommodNumb -= Convert.ToInt32( NumberTbl);
    db.SubmitChanges();
    }

  12. #12

    نقل قول: کسر نکردن از دیتابیس انبار

    چک کنید که اصلا کالایی واکشی میشه یا خیر؟

  13. #13
    کاربر دائمی
    تاریخ عضویت
    آبان 1390
    محل زندگی
    تهران
    پست
    227

    نقل قول: کسر نکردن از دیتابیس انبار

    نقل قول نوشته شده توسط alexmcse مشاهده تاپیک
    تست کنید

           foreach (var VARIABLE in tab)            {


    VARIABLE .CommodNumb -= Convert.ToInt32( NumberTbl);
    db.SubmitChanges();
    }
    کلا کد به این صورت شد:

    var tab = from q in db.CommoTables
    where txtSaleCodCommodity.Text == q.CommodCod
    select q.RowCommo;
    foreach (var r in tab)
    {
    r.CommodNumb -= Convert.ToInt32(NumberTbl);
    db.SubmitChanges();
    }


    ولی از خط بعد foreach از کلمه CommodNumb خطا میگیره و متن خطا اینه:
    int' does not contain a definition for 'CommodNumb' and no extension method 'CommodNumb' accepting a first argument of type 'int' could be found (are you missing a using directive or an assembly reference?)
    ممنون میشم راهنماییم کنید که این کد رو چجوری درست کنم که خروجی بده.
    با تشکر از تمامی دوستان

  14. #14
    کاربر دائمی آواتار alexmcse
    تاریخ عضویت
    فروردین 1391
    محل زندگی
    شیراز
    پست
    860

    نقل قول: کسر نکردن از دیتابیس انبار



    var tab = from q in db.CommoTables
    where txtSaleCodCommodity.Text == q.CommodCod
    select q.RowCommo;
    foreach (var r in tab)
    {
    var n = r.CommodNumb;


    n=n-Convert.ToInt32(NumberTbl);
    r.CommodNumb = n;
    db.SubmitChanges();
    }

  15. #15
    کاربر دائمی
    تاریخ عضویت
    آبان 1390
    محل زندگی
    تهران
    پست
    227

    نقل قول: کسر نکردن از دیتابیس انبار

    نقل قول نوشته شده توسط alexmcse مشاهده تاپیک


    var tab = from q in db.CommoTables
    where txtSaleCodCommodity.Text == q.CommodCod
    select q.RowCommo;
    foreach (var r in tab)
    {
    var n = r.CommodNumb;


    n=n-Convert.ToInt32(NumberTbl);
    r.CommodNumb = n;
    db.SubmitChanges();
    }
    از CommodNumb ایراد میگیره:
    3.jpg

    خطای زیر رو میده:
    4.jpg

    وقتی بعد از r دات میزنم تو لیست اسمی از CommodNumb نیست:
    5.jpg

    کلا بخش اول کدی که مربوط به درج میشه بصورت زیره:

    private void btnInsert_Click(object sender, EventArgs e)
    {
    if (btnInsert.Text == "درج")
    {
    db = new LinqToTrazoDataContext();
    int Numbertxt = int.Parse(txtNumber.Text);
    Int16 NumberTbl;
    var TabCom = new CommoTable();
    NumberTbl =Convert.ToInt16( TabCom.CommodNumb);

    var tab = from q in db.CommoTables
    where txtSaleCodCommodity.Text == q.CommodCod
    select q.RowCommo;

    foreach (var r in tab)
    {
    var n = r.CommodNumb;
    n = n - Convert.ToInt16( NumberTbl);
    r.CommodNumb = n;
    db.SubmitChanges();
    }
    var fcTable = new FactorSaleTable();

    fcTable.SaleDate = DateTime.Now;
    fcTable.FactorNo = int.Parse(txtCodFactor.Text);
    fcTable.CommodCodFact = txtSaleCodCommodity.Text;
    fcTable.CommodName = cmbCommodityName.Text;
    fcTable.CompanyName = txtNameCO.Text;
    fcTable.Number = Int16.Parse(txtNumber.Text);
    fcTable.TotalPrice = float.Parse(txtTotalPrice.Text);
    fcTable.Weight = float.Parse(txtWeight.Text);
    fcTable.TotalWeight = float.Parse(txtTotalWeight.Text);
    fcTable.CommodSize = cmbSiz.Text;
    fcTable.UnitPrice = float.Parse(txtUnitPrice.Text);
    fcTable.Tax = float.Parse(txtTax.Text);
    fcTable.Dicount = float.Parse(txtTax.Text);


    db.FactorSaleTables.InsertOnSubmit(fcTable);
    db.SubmitChanges();
    dgvSalesInvoi.DataSource = db.FactorSaleTables;
    }


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

  16. #16

    نقل قول: کسر نکردن از دیتابیس انبار

    q را بایست سلکت کنید.

    //...
    select q;
    آخرین ویرایش به وسیله Mahmoud.Afrad : سه شنبه 07 اسفند 1397 در 07:57 صبح

  17. #17
    کاربر دائمی
    تاریخ عضویت
    آبان 1390
    محل زندگی
    تهران
    پست
    227

    نقل قول: کسر نکردن از دیتابیس انبار

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    q را بایست سلکت کنید.

    //...
    select q.;

    ممنون حل شد.
    ولی ازین دو خط ایراد میگیره:

    n = n - Convert.ToInt16( NumberTbl);
    db.SubmitChanges();

    متن خطا هم بصورت زیره:
    6.jpg
    خطای دومی برا خط اول کده و هشدار اولی برا خط دوم کده
    ممنون میشم راهنماییم کنید که چکار باید بکنم.
    باتشکر از تمامی دوستان

  18. #18
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: کسر نکردن از دیتابیس انبار

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

  19. #19

    نقل قول: کسر نکردن از دیتابیس انبار

    نقل قول نوشته شده توسط bmvgod مشاهده تاپیک
    ممنون حل شد.
    ولی ازین دو خط ایراد میگیره:

    n = n - Convert.ToInt16( NumberTbl);
    db.SubmitChanges();

    متن خطا هم بصورت زیره:
    6.jpg
    خطای دومی برا خط اول کده و هشدار اولی برا خط دوم کده
    ممنون میشم راهنماییم کنید که چکار باید بکنم.
    باتشکر از تمامی دوستان
    توی دیتابیس int گذاشتید و اینجا int16 یا همون short
    تبدیل رو روی ToInt32 قرار بدید

    int? a = 12;
    int b = Convert.ToInt32(a);

  20. #20
    کاربر دائمی
    تاریخ عضویت
    آبان 1390
    محل زندگی
    تهران
    پست
    227

    نقل قول: کسر نکردن از دیتابیس انبار

    نقل قول نوشته شده توسط Shadow_net مشاهده تاپیک
    توی دیتابیس int گذاشتید و اینجا int16 یا همون short
    تبدیل رو روی ToInt32 قرار بدید

    int? a = 12;
    int b = Convert.ToInt32(a);
    توی دیتابیس فیلد CoomodNumb روی smallint گذاشتم، مقایسه کردم نوع متغییر دیتابیس رو با سی شارپ از نظر بازه عددی smsllint برابر Int16 تو سی شارپ میشه.
    با این شیوه تبدیل Type چجوری میشه؟
    ممنون میشم راهنماییم کنید
    آخرین ویرایش به وسیله bmvgod : چهارشنبه 08 اسفند 1397 در 00:06 صبح

  21. #21
    کاربر دائمی
    تاریخ عضویت
    آبان 1390
    محل زندگی
    تهران
    پست
    227

    نقل قول: کسر نکردن از دیتابیس انبار

    نقل قول نوشته شده توسط Shadow_net مشاهده تاپیک
    توی دیتابیس int گذاشتید و اینجا int16 یا همون short
    تبدیل رو روی ToInt32 قرار بدید

    int? a = 12;
    int b = Convert.ToInt32(a);
    برای تبدیل Type تو سی شارپ برا اینکه نوع داده فیلد CommodNum از نوع Smallint باشه نتونستم تبدیل Type انجام بدم که خطا نگیره و تین نکته برا من مهمه که smallint باشه، چکار باید کنم نمیدونم؟
    برا اینکه کارم راه بیفنه CommodNum از نوع int گذاشتمو کدم بصورت زیر درومد:

    db = new LinqToTrazoDataContext();
    Int32 Numbertxt = int.Parse(txtNumber.Text);
    var TabCom = new CommoTable();
    NumberTbl =Convert.ToInt32( TabCom.CommodNumb);
    var tab = from q in db.CommoTables
    where txtSaleCodCommodity.Text == q.CommodCod
    select q;
    if (tab != null)
    {
    foreach (var ry in tab)
    {
    var n = ry.CommodNumb;
    n = n - Numbertxt;
    //n=TabCom.CommodNumb - Numbertxt;
    ry.CommodNumb = n;
    db.SubmitChanges();
    }
    }


    ممنون میشم راهنماییم کنید مشکل تبدیل Type تو #C برای Smallint چجوری انجام بدم؟
    از نوع Int16 هم میزارم باز گیر میده
    باتشکر از نمامی دوستان

  22. #22

    نقل قول: کسر نکردن از دیتابیس انبار

    نقل قول نوشته شده توسط bmvgod مشاهده تاپیک
    برای تبدیل Type تو سی شارپ برا اینکه نوع داده فیلد CommodNum از نوع Smallint باشه نتونستم تبدیل Type انجام بدم که خطا نگیره و تین نکته برا من مهمه که smallint باشه، چکار باید کنم نمیدونم؟
    برا اینکه کارم راه بیفنه CommodNum از نوع int گذاشتمو کدم بصورت زیر درومد:

    db = new LinqToTrazoDataContext();
    Int32 Numbertxt = int.Parse(txtNumber.Text);
    var TabCom = new CommoTable();
    NumberTbl =Convert.ToInt32( TabCom.CommodNumb);
    var tab = from q in db.CommoTables
    where txtSaleCodCommodity.Text == q.CommodCod
    select q;
    if (tab != null)
    {
    foreach (var ry in tab)
    {
    var n = ry.CommodNumb;
    n = n - Numbertxt;
    //n=TabCom.CommodNumb - Numbertxt;
    ry.CommodNumb = n;
    db.SubmitChanges();
    }
    }


    ممنون میشم راهنماییم کنید مشکل تبدیل Type تو #C برای Smallint چجوری انجام بدم؟
    از نوع Int16 هم میزارم باز گیر میده
    باتشکر از نمامی دوستان
    خط 3و4 اصلا برای چی هست؟!! حذفش کنید.

  23. #23
    کاربر دائمی آواتار shahryari
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    آذربايجان
    سن
    40
    پست
    1,236

    نقل قول: کسر نکردن از دیتابیس انبار

    سلام دوست عزیز
    سناریو کسر و اضافه کردن به انبار این مدلی نیست که شما بخای هربار یه عددی رو در بانک آپدیت کنید 2 تا روش من کار کردم تابحال
    1 - یه ستون باید داشته باشید با عنوان "وارده" و یه فیلد هم "صادره"
    هربار جنس اومد = ستون وارده مقدارش ثبت میشه و در ستون صادره مقدار صفر
    هربار جنس رفت = ستون صادره مقدارش ثبت میشه و در ستون وارده مقدار صفر
    با تابع sum در sql جمع هردو ستون رو میگیری وارده رو منهای صادره میکنی

    2- کلا یه ستون در نظر میگیری برای مقدار ، اگر جنس خارج شد مقدارش منفی و اگر وارد شد همون مقدار رو مینویسی بعد با تابع sum کل موجودی رو میده ، هر رکوردی هم حذف بشه یا اضافه بشه موجودی و به راحتی میتونی بگیری

تاپیک های مشابه

  1. پاسخ: 2
    آخرین پست: پنج شنبه 11 تیر 1394, 16:11 عصر
  2. تبدیل دیتابیس فاكس پرو (FoxPro) به دیتابیس (SQL SERVER 2008) با پشتیبانی از زبان فارسی
    نوشته شده توسط majid_darab در بخش مسائل مرتبط با نصب و راه اندازی
    پاسخ: 9
    آخرین پست: سه شنبه 15 فروردین 1391, 16:14 عصر
  3. پاسخ: 1
    آخرین پست: چهارشنبه 02 شهریور 1390, 14:36 عصر
  4. پاسخ: 0
    آخرین پست: چهارشنبه 20 بهمن 1389, 16:56 عصر
  5. پاسخ: 2
    آخرین پست: چهارشنبه 17 آذر 1389, 20:08 عصر

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

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