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

نام تاپیک: استفاده از فیلد محاسباتی در Query و نمایش آن در Grid

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

    Question استفاده از فیلد محاسباتی در Query و نمایش آن در Grid

    سلام و عرض ادب خدمت دوستان.
    در مورد فیلد محاسباتی سوالی داشتم که به صورت مثال مطرح می کنم.
    به عنوان نمونه فرض کنید دو جدول (Table1, Table2) وجود دارند که یک Query به صورت زیر از اونها گرفته شده:

    var
    Query: TADOQuery;
    begin
    Query:= TADOQuery.Create(nil);
    Query.Connection:= ADOConnection;

    with Query do
    begin
    Close;
    SQL.Clear;
    SQL.Text:= 'SELECT Table1.Field1 , Table1.Field2, Table2.Field1 ' +
    'FROM Table1, Table2 WHERE Table1.ID=Table2.ID';
    Open;
    end;
    end;


    برای نمایش در گرید، ما علاوه بر سه فیلد بالا، یک فیلد برای شمارش سطر و یک فیلد محاسباتی دیگه (وابسته به Table1.Field1 و Table2.Field1 ) هم خواهیم داشت.
    لطفا راهنمایی کنید کدهای تعریف فیلد محاسباتی رو به چه صورت باید نوشت و نحوه نمایش این 5 فیلد در گرید به چه صورت میشه؟

  2. #2

    نقل قول: استفاده از فیلد محاسباتی در Query و نمایش آن در Grid

    سلام.
    نحوه جوین کردنتون خیلی قدیمیه، اصلاحش کنید بهتره.
    فیلد محاسباتی بر مبنای فیلدهای دیگه رو در همون سلکت باید بیارید.
    برای شماره سطر هم می تونید از RecNo یا توابع مشابه استفاده کنید.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

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

    نقل قول: استفاده از فیلد محاسباتی در Query و نمایش آن در Grid

    ممنون از جواب

    نقل قول نوشته شده توسط یوسف زالی مشاهده تاپیک
    سلام.
    نحوه جوین کردنتون خیلی قدیمیه، اصلاحش کنید بهتره.
    حق با شماست. فقط برای اینکه به ساده ترین شکل مفهوم رو برسونم به این شکل نوشتم. می خواستم نشون بدم CalcField مربوط به محاسبات مرتبط با دو تا جدول هست.

    نقل قول نوشته شده توسط یوسف زالی مشاهده تاپیک
    برای شماره سطر هم می تونید از RecNo یا توابع مشابه استفاده کنید.
    این رو هم صرفا جهت توضیح بیشتر مساله بیان کرده بودم

    نقل قول نوشته شده توسط یوسف زالی مشاهده تاپیک
    فیلد محاسباتی بر مبنای فیلدهای دیگه رو در همون سلکت باید بیارید.
    دقیقا Syntax همین فیلد در SELECT مورد سوال منه.

  4. #4

    نقل قول: استفاده از فیلد محاسباتی در Query و نمایش آن در Grid

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

    select T1.*, T2.*, (T1.F1 + T2.F1) * T1.F2 as J1, T1.F1 -17 as J2, T1.F1 - T2.F2 +5 as J3..
    from T1 join T2 on ..


    بهتره اگر نام های فیلد هاتون شبیه به هم هست، برای هر کدومش یک الیاس استفاده کنید.
    مثلا select T1.F1 as TF1
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  5. #5
    کاربر دائمی آواتار hamedjim
    تاریخ عضویت
    مهر 1393
    محل زندگی
    تهران
    پست
    140

    نقل قول: استفاده از فیلد محاسباتی در Query و نمایش آن در Grid

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

  6. #6

    نقل قول: استفاده از فیلد محاسباتی در Query و نمایش آن در Grid

    اس کیو ال برای ثانیه ها هم تابع داره، ولی اگر به هر دلیلی نشد، کافیه یک فیلد محاسباتی در خود دیتاست اد کنید.
    روی دیتاست دوبار کلیک کنید و فیلد های جاری رو اد کنید و سپس راست کلیک کرده یک فیلد محاسباتی اضافه کنید.
    در رویداد OnCalc دیتاست، برای این فیلد مقدار تغیین کنید.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  7. #7
    کاربر دائمی آواتار hamedjim
    تاریخ عضویت
    مهر 1393
    محل زندگی
    تهران
    پست
    140

    Lightbulb نقل قول: استفاده از فیلد محاسباتی در Query و نمایش آن در Grid

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

    یک جدول شامل فیلدهای مختلف موجود هست. به دلیلی برای این جدول نیازمند ایجاد یک فیلد محاسباتی داریم. از طرفی به هر دلیل از Table استفاده نمی کنیم و هدف استفاده از فیلد محاسباتی در Query هست. برای این کار
    1. روی Query دابل کلیک می کنیم و تمامی فیلدها رو با کلیک راست اضافه می کنیم.
    2. دوباره کلیک راست می کنیم و New Field رو برای ایجاد فیلد محاسباتی انتخاب میکنیم. فیلد مورد نظر رو ایجاد می کنیم.
    3. در Query و خصوصیت SQL، عبارت SELECT * FROM Query رو می نویسیم.
    4. در رویداد OnCalc کدهای لازم برای مقداردهی فیلدهای محاسباتی می نویسیم.
    مثلا برای اضافه کردن ستون شماره ردیف این کد:


    with ADOQuery do
    begin
    FieldByName('RowNo').AsInteger:= RecNo;
    if FieldByName('RowNo').AsInteger <0 then
    FieldByName('RowNo').AsInteger:= FieldByName('RowNo').AsInteger*(-1);
    end;



    یا برای محاسبه فیلد مانده، این کد:

    FieldByName('Remain').AsExtended:=tmpRemain + (Crd- Deb);


    و .... رو می نویسیم.

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

  1. پاسخ: 20
    آخرین پست: جمعه 17 تیر 1390, 14:12 عصر
  2. سوال: استفاده از فیلد ترکیبی در Where
    نوشته شده توسط YourWorldToday در بخش SQL Server
    پاسخ: 3
    آخرین پست: پنج شنبه 26 شهریور 1388, 22:44 عصر
  3. سوال: استفاده از فیلد sum در هر صفحه
    نوشته شده توسط hdy_rasool در بخش گزارش سازی با Crystal Report
    پاسخ: 3
    آخرین پست: دوشنبه 11 آذر 1387, 14:33 عصر
  4. استفاده از فیلد فرمولی در نمودار
    نوشته شده توسط amirhosein در بخش گزارش سازی با Crystal Report
    پاسخ: 2
    آخرین پست: شنبه 21 مرداد 1385, 10:49 صبح
  5. مشکل در استفاده از فیلد باینری در MySQL
    نوشته شده توسط رها در بخش PHP
    پاسخ: 1
    آخرین پست: سه شنبه 08 شهریور 1384, 11:55 صبح

برچسب های این تاپیک

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

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