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

نام تاپیک: تابع is null و جمع چند فیلد

  1. #1

    تابع is null و جمع چند فیلد

    سلام دوستان:
    من میخوام تو پروژه ام یه دکمه بذارم که چندتا از فیلدای جدولم رو چک کنه و اگه خالی نبود یه امتیازی به اون رکورد بده و آخرش امتیاز اون رکورد رو جمع کنه و به صورت یک ستون در dbgrid نشون بده.
    مثلا برای فیلدpiktaj اگر برای یک رکورد خاص خالی نبود 3 امتیاز در نظر بگیره و برای فیلد simkeshi از همون رکورد اگهnullنبود امتیاز 10 بده و در آخر اینها رو باهم جمع و تویdbgrid نشون بده. به نظر شما چیکار باید بکنم؟؟ نمیدونم از تابع is null چه طوری برای این کار استفاده کنم؟؟؟نتیجه جمع حتما باید یه فیلد جدول باشه تا بتونم توdbgrid نمایشش بدم؟؟ لطفا راهنماییم کنین!!

  2. #2

    نقل قول: تابع is null و جمع چند فیلد

    نتیجه جمع حتما باید یه فیلد جدول باشه تا بتونم توdbgrid نمایشش بدم؟
    نتیجه جمع شما باید یک عدد باشه، بعدش باید یک فیلد Calculated داشته باشید که مقدار این عدد رو در رویداد OnCalcFields مربوط به جدولتون اختصاص بدید.

    مثلا اگر شما یک فیلد Calculated از نوع Integer با نام Points به دیتاست اضافه کرده باشید، برای اون رویداد می نویسید:

    var
    Piktaj, Simkeshi : Variant;
    MyPoints : Integer;
    begin
    MyPoints := 0;
    Piktaj := DataSet.FieldByName('Piktaj').Value;
    Simkeshi := DataSet.FieldByName('Simkeshi').Value;
    if not VarIsNull(Piktaj) then
    MyPoints := 3
    else if not VarIsNull(Simkeshi) then
    MyPoints := 10;
    DataSet.FieldByName('Points').AsInteger := MyPoints;
    end;


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  3. #3

    نقل قول: تابع is null و جمع چند فیلد

    سلام آقای کشاورز:
    من متوجه نشدم.فیلد calculated رو باید توی جدول دیتا بیسم تعریف کنم؟؟رویداد OnCalcFields چیه وکجاست؟؟dataset کدوم جدول؟dbgrid؟ میشه بیشتر توضیح بدین؟ آخه من تازه کارم!! خیلی ممنون

  4. #4

    نقل قول: تابع is null و جمع چند فیلد

    فیلد calculated رو باید توی جدول دیتا بیسم تعریف کنم؟
    فیلد Calculated رو باید در دلفی در داخل دیتاستی که به جدول شما متصل هست، ایجاد کنید، مثلا اگر دیتاست شما AdoTabelهست، روی آن دابل کلیک کنید، تا پنجره فیلدهای آن باز بشه، و بعد روی فضای خالی آن پنجره راست کلیک کنید، و گزینه New Field را انتخاب کنید، و نام و مشخصات فیلد جدید را تعیین کنید. نوع آن را هم Calculated انتخاب کنید.

    رویداد OnCalcFields هم مربوط به همان دیتاست شما ست. آن را انتخاب کنید، در لیست Events آن گزینه ایی برای OnCalcFields می بینید.


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  5. #5

    نقل قول: تابع is null و جمع چند فیلد

    ممنون از توضیحات کاملتون. من کد رو توی اون رویداد نوشتم. دیتا ست من adoQuery هست. وقتی روش دابل کلیک می کنم توی لیست فیلدهاش هیچی نیست. یه فیلد توش new کردم اما و قتی از برنامه اجرا میگیرم ارور میده:
     
    adoQuery1:filde'piktaj' not found
    فکر میکنم به خاطر خالی بودن لیست فیلدهای دیتا ستم هست. روش راست کلیک کردم و add all fild رو زدم اما این ارور رو میداد:
     
    adoQuery1: missing SQL property
    لطفا بازم راهنماییم کنین. ممنون

  6. #6

    نقل قول: تابع is null و جمع چند فیلد

    فکر میکنم به خاطر خالی بودن لیست فیلدهای دیتا ستم هست. روش راست کلیک کردم و add all fild رو زدم اما این ارور رو میداد
    به خاطر اینه که دارید از AdoQuery استفاده می کنید، و خصوصیت SQL آن را در زمان طراحی خالی گذاشتید. اگر قراره کوئری شما ثابت باشه، یا کوئری شما فقط پارامترهای بخش WHERE آن تغییر کنه، در اون صورت کوئری را در زمان طراحی در داخل خصوصیت SQL بنویسید. برای تغییر بخش های مربوط به WHERE هم از پارامتر در SQL استفاده کنید.

    اگر کوئری شما کلا هر چند وقت یک بار در داخل برنامه تغییر میکنه، پس این روشی که در این تاپیک بهش اشاره کردم، به درد شما نمیخوره.


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

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

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