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

نام تاپیک: ساخت فرم از نتیجه کویری کراس تب

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

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

    سلام خدمت دوستان و اساتید گرانقدر و آرزوی سلامتی و توفیق
    دوستان در نمونه پیوستی یک کویری کراس تب ایجاد شده و شرطی در قسمت تاریخ گذاشته شده است (به فرض 14021030) بنا به شرطمون آیتم ها متفاوت می باشد و ثابت نمی باشد حالا میخواستم از نتیجه کویری یک فرم دیتاشیت ساخته بشه و با هر بار که تاریخ تغییر میکند این فرم دیتاشیت هم تغییر کند متاسفانه موفق نشدم هر چند با ارسال نتیجه کویری کراس تب و ساخت Make Table تا حدودی می تونستم نتیجه دلخواه رو ببینم اما در اصل مد نظرم دیتاشیت هست ممنون میشم اساتید و دوستان راهنمایی کنن .
    فایل های ضمیمه فایل های ضمیمه

  2. #2
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,057

    نقل قول: ساخت فرم از نتیجه کویری کراس تب

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

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

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

    نقل قول: ساخت فرم از نتیجه کویری کراس تب

    ممنون استاد بی صبرانه منتظرم

  4. #4
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,057

    نقل قول: ساخت فرم از نتیجه کویری کراس تب

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

    این که crosstab Query رو نمیشه به عنوان record source یک فرم گذاشت،
    چون تعداد قیلدها (ستونها) ثابت نیست و با شرایط کوئری تغییر میکنه
    این که باید از یک جدول استفاده کنین (make table query) تا نتایج crosstab query رو در یک جدول بریزین
    این که فقط محدود به datasheet view هستین

    نکته ای که هست اینه که حتی این جدول رو هم نمیتونین به عنوان رکوردسورس فرم بگذارین (به همون دلیل که گفته شد)

    راه حل : باید یک sub form به فرم اضافه کنین و این جدول رو به عنوان source object اون بگذارین.

    من دیتا نمونه شما رو تغییر دادم و طراحی جدول ها رو که اشکال داشت ویرایش کردم،
    که با مقایسه با جداول اولیه میتونین متوجه بخش های ویرایش شده بشین.

    مهمترین اون ها تبدیل ستونهای text به عدد و استفاده از relation هست،
    به همین خاطر نیاز هست که چندین جدول اضافه بشه.

    به عنوان مثال به جای این که یک فیلد سازنده (Brand) از نوع text داشته باشیم یک جدول سازنده ها (Brands) میسازیم
    و فیلد BrandID رو در جدول بازرسی میاریم و هرگاه نیاز اسم اون داشته باشیم جدول ها رو join میکنیم.

    این روش اصولی هست که باید در طراحی رعایت بشه.

  5. #5
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,057

    نقل قول: ساخت فرم از نتیجه کویری کراس تب

    طراحی crosstab query

    Screenshot 2024-01-21 184919.png

    PARAMETERS [TempVars]![InspectionDate] Long;
    TRANSFORM Count(InspectionsQRY.InspectionID) AS CountOfInspectionID
    SELECT TireSizes.Size AS [مشخصات لاستیک], Format(InspectionsQRY.InspectionDate,"0000\/00\/00") AS [تاریخ بازرسی], Count(InspectionsQRY.InspectionID) AS [تعداد بازرسی]
    FROM (InspectionsQRY INNER JOIN DefectDetails ON InspectionsQRY.DefectDetailID = DefectDetails.DetailID) INNER JOIN TireSizes ON InspectionsQRY.SizeID = TireSizes.SizeID
    WHERE (((InspectionsQRY.InspectionDate)=[TempVars]![InspectionDate]))
    GROUP BY TireSizes.Size, InspectionsQRY.InspectionDate
    PIVOT DefectDetails.Detail;


    پارامتر تاریخ رو از form fieldبه tempvar تغییر دادم - به این ترتیب دستمون بازتر هست و کوئری رو در هر شرایطی میتونیم استفاده کنیم.

    البته میشد پارامتر رو اسم داد ولی در این مسئله خاص همین tempvar بهتر هست.

    یک نمونه از خروجی کوئری برای تاریخ 1402/10/30
    Screenshot 2024-01-21 185700.png

  6. #6
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,057

    نقل قول: ساخت فرم از نتیجه کویری کراس تب

    ساخت فرم:
    برای فیلتر تاریخ یک کمبو باکس در header فرم میگذاریم و
    با یک کوئری همه تاریخ های بازرسی رو گروه بندی میکنیم و بعنوان رکورد سورس اون میگذاریم:
    SELECT FORMAT(InspectionDate,"0000/00/00") FROM Inspects GROUP BY InspectionDate; 


    date.png
    در بخش detail فقط یک سابفرم خالی میگذاریم (results).

    پس از انتخاب تاریخ، اول جدول نتایج (results) رو پاک میکنیم (در صورت وجود)،
    بعد tempvar تاریخ بازرسی رو مقدار میدیم،
    بعد یک make table query اجرا میکنیم که نتایج crosstab query رو در جدول results بریزه،
    و در آخر source object سابفرم رو به جدول results ست میکنیم.

    Option Compare Database
    Option Explicit

    Private Sub InspectionDate_AfterUpdate()
    Me.Results.SourceObject = ""
    If DCount("ID", "MSysObjects", "Type=1 AND Name='Results'") > 0 Then
    DoCmd.DeleteObject acTable, "Results"
    End If
    TempVars("InspectionDate") = Replace(Me.InspectionDate.Value, "/", "")
    DoCmd.RunSQL "SELECT * INTO Results FROM InspectionsCrossTabQRY"
    Me.Results.SourceObject = "Table.Results"
    End Sub

    Private Sub InspectionDate_NotInList(NewData As String, Response As Integer)
    Me.InspectionDate.Undo
    Me.InspectionDate.Dropdown
    Response = acDataErrContinue
    End Sub
    فایل های ضمیمه فایل های ضمیمه

  7. #7
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,057

    نقل قول: ساخت فرم از نتیجه کویری کراس تب

    البته راه حل دیگه هم هست:
    میتونین از صفحه بندی دیتا با افکت و انیمیشن در مرورگر وب Data-paging with transitions/animations in Web Browser ایده بگیرین
    و بخش هایی که نیاز نیست رو کنار بگذارین.

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

    نقل قول: ساخت فرم از نتیجه کویری کراس تب

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

    این که crosstab Query رو نمیشه به عنوان record source یک فرم گذاشت،
    چون تعداد قیلدها (ستونها) ثابت نیست و با شرایط کوئری تغییر میکنه
    این که باید از یک جدول استفاده کنین (make table query) تا نتایج crosstab query رو در یک جدول بریزین
    این که فقط محدود به datasheet view هستین

    نکته ای که هست اینه که حتی این جدول رو هم نمیتونین به عنوان رکوردسورس فرم بگذارین (به همون دلیل که گفته شد)

    راه حل : باید یک sub form به فرم اضافه کنین و این جدول رو به عنوان source object اون بگذارین.
    .
    سلام و درود فراوان
    دست مریزاد استاد !
    احسنت !
    داشتم توضیحات جنابعالی رو در دوسه خط اول این پست مرور می کردم و هنوز چشمم به توضیح راه حل نیفتاده بود که سریع در ذهنم خطور کرد که برای اینکار میشه یک sub form به فرم اضافه کرد و جدول رو به عنوان source object اون قرار داد که در خط راه حل دیدم جنابعالی خیلی قشنگ به این نکته اشاره کردین . اینجا بود که متوجه شدم که خرمائی که من دارم میخورم استاد قبلاً با هسته اش بازی کرده.
    حالا حالاها باید در محضر جنابعالی شاگردی کنیم استاد گرامی !

  9. #9
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,057

    نقل قول: ساخت فرم از نتیجه کویری کراس تب

    نقل قول نوشته شده توسط eb_1345 مشاهده تاپیک
    سلام و درود فراوان
    دست مریزاد !
    احسنت !
    داشتم توضیحات جنابعالی رو در دوسه خط اول این پست مرور می کردم و هنوز چشمم به توضیح راه حل نیفتاده بود که سریع در ذهنم خطور کرد که برای اینکار میشه یک sub form به فرم اضافه کرد و جدول رو به عنوان source object اون قرار داد که در خط راه حل دیدم جنابعالی خیلی قشنگ به این نکته اشاره کردین .
    سلام و روز خوش
    شما همیشه لطف داشتین
    واقعیت اینه که این داستان دو طرفه است جناب بهرامی.

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

    نقل قول: ساخت فرم از نتیجه کویری کراس تب

    ...........................................
    آخرین ویرایش به وسیله eb_1345 : دوشنبه 02 بهمن 1402 در 10:09 صبح

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

    نقل قول: ساخت فرم از نتیجه کویری کراس تب

    استاد mazoolagh بزرگوار ممنون بخاطر توضیحات مفصل و دقیق و ریزبینانه و ممنون به خاطر این کلاس آموزشی ارزشمند .دقیقا همون چیزی بود که میخواستم . سپاس بیکران

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

  1. ایا اندروید نسخه های جدید جاوا را پشتیبانی خواهد کرد؟
    نوشته شده توسط shayanboy2 در بخش برنامه نویسی موبایل
    پاسخ: 0
    آخرین پست: چهارشنبه 01 بهمن 1399, 20:10 عصر
  2. پاسخ: 4
    آخرین پست: چهارشنبه 01 مهر 1394, 10:39 صبح
  3. سوال: ادغام دو تیبل مشابه توسط کویری اپند در یک تیبل سومی
    نوشته شده توسط reza_1199 در بخش Access
    پاسخ: 1
    آخرین پست: چهارشنبه 23 بهمن 1392, 20:12 عصر
  4. ویرایش کد- اساتید کمک کنید
    نوشته شده توسط majideblis در بخش PHP
    پاسخ: 22
    آخرین پست: دوشنبه 31 تیر 1392, 12:56 عصر
  5. پاسخ: 10
    آخرین پست: سه شنبه 23 اسفند 1390, 14:27 عصر

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

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