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

نام تاپیک: ايجاد شماره رديف در كوئري با ID ثابت

  1. #1

    ايجاد شماره رديف در كوئري با ID ثابت

    با سلام
    دوستان به نظر شما راه حلي براي ايجاد شماره رديف در يك كوئري با يك ستون كه در آن يك سري عدد يكسان ثبت شده وجود دارد؟
    فرمول روبرو
    RowNum: DCount("[ID]","[tblNames]","[ID]<="& [ID])
    زماني كاربرد دارد كه محتواي ستون ID متفاوت باشد نه يكسان
    قصد دارم ستون ID را ايجاد كنم كه با تغيير محتواي ستون A شمارنده از عدد يك شروع و تا تغيير بعدي شمارش را ادامه دهد و دوباره از يك شروع شود و ....
    ممنون

    Test.png
    آخرین ویرایش به وسیله Reza G : دوشنبه 02 مهر 1403 در 16:03 عصر

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

    نقل قول: ايجاد شماره رديف در كوئري با ID ثابت

    سلام و روز خوش

    این یکی از مسائل کلاسیک اکسس هست که در SQL خیلی راحت قابل انجامه.
    نتیجه کجا و چجوری قرار هست استفاده بشه؟

  3. #3

    نقل قول: ايجاد شماره رديف در كوئري با ID ثابت

    سلام و سپاس
    قرار است يك كوئري از جدول تهيه شود و رديف ID در كوئري ايجاد و سپس خروجي اكسل گرفته شود.
    خروجي نهايي توسط ديتالودر ثبت سيستم شركت خواهد شد.
    در ستون A در واقع آيتم كد قرار مي گيرد.

    0.png
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله Reza G : سه شنبه 03 مهر 1403 در 10:16 صبح

  4. #4

    نقل قول: ايجاد شماره رديف در كوئري با ID ثابت

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

    این یکی از مسائل کلاسیک اکسس هست که در SQL خیلی راحت قابل انجامه.
    نتیجه کجا و چجوری قرار هست استفاده بشه؟
    با سلام
    بر اساس جستجوهائی که بنده هم در سایت برنامه نویس و سایر سایت ها انجام دادم در همه موارد با استفاده از ستون ID جدول اقدام به ایجاد ردیف در کوئری شده است
    و موردی را نیافتم که بدون استفاده از ID جدول یک ستون ردیف در جدول ایجاد شود
    آخرین ویرایش به وسیله atf1379 : سه شنبه 03 مهر 1403 در 10:52 صبح

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

    نقل قول: ايجاد شماره رديف در كوئري با ID ثابت

    نقل قول نوشته شده توسط Reza G مشاهده تاپیک
    سلام و سپاس
    قرار است يك كوئري از جدول تهيه شود و رديف ID در كوئري ايجاد و سپس خروجي اكسل گرفته شود.
    سلام دوباره و روز خوش
    این که پرسیدم کجا و چجوری استفاده میشه به این خاطر هست که خود کوئری که ساخته میشه updateable نیست.

    برای سورس گزارش اگر باشه که اصولا نیازی نیست چون خود گزارش ابزار نامبرینگ داره،
    و برای فرم هم readonly میشه - میشه روشهایی رو پیاده کرد برای دور زدن این موضوع ولی پیچیده است و بنظرم ارزش نداره.

    شما از چندین راه میتونین این رو پیاده کنین:

    یکی کوئری خالص هست بدون هیچ کدنویسی،
    یکی کدنویسی خالص هست و ساخت یک جدول که اون رو میتونین به اکسل بفرستین.

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

    ROW_NUMBER per GROUP in ACCESS

    برای کوئری روی دیتابیس northwind مثال میزنم،
    شما میتونین روی دیتابیس خودتون پیاده اش کنین.

    یک جدول products داریم که هر product یک categoryid داره،
    و میخواهیم که به ازای هر category نامبرینگ جدا داشته باشیم:

    SELECT 
    A.ProductID,
    A.ProductName,
    A.CategoryID,
    (
    SELECT COUNT(ProductID)
    FROM Products AS B
    WHERE B.CategoryID = A.CategoryID
    AND
    B.ProductID <= A.ProductID
    ) AS [Row Number]
    FROM Products AS A
    ORDER BY A.CategoryID, A.ProductID;


    همونجور که میبینین روش مشابه همونی هست که خودتون گفتین،
    ولی از subquery استفاده کردیم.

    1.png
    آخرین ویرایش به وسیله mazoolagh : سه شنبه 03 مهر 1403 در 14:17 عصر

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

    ROW_NUMBER per GROUP in ACCESS

    مشابه همین اگر بخواهیم نامبرینگ رو براساس supplier انجام بدیم:

    SELECT 
    A.ProductID,
    A.ProductName,
    A.SupplierID,
    (
    SELECT COUNT(ProductID)
    FROM Products AS B
    WHERE B.SupplierID = A.SupplierID
    AND
    B.ProductID <= A.ProductID
    ) AS [Row Number]
    FROM Products AS A
    ORDER BY A.SupplierID, A.ProductID;


    2.png
    آخرین ویرایش به وسیله mazoolagh : سه شنبه 03 مهر 1403 در 14:17 عصر

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

    نقل قول: ايجاد شماره رديف در كوئري با ID ثابت

    برنامه نمونه
    فایل های ضمیمه فایل های ضمیمه

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

    SQL ROW_NUMBER OVER PARTITION

    روش کار در MS SQL:

    USE NorthWind

    SELECT
    P.ProductID,
    P.ProductName,
    P.CategoryID,
    C.CategoryName,
    ROW_NUMBER() OVER(PARTITION BY P.CategoryID ORDER BY P.ProductID) AS [Row Number]
    FROM Products AS P
    INNER JOIN Categories AS C
    ON P.CategoryID=C.CategoryID


    3.png

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

    نقل قول: ايجاد شماره رديف در كوئري با ID ثابت

    استفاده از VBA وقتهایی که ساخت کوئری ها پیچیده میشه روش بهتری هست،
    بخصوص اگر قرار هست عملیات دیگه ای جز ساخت نتایج هم انجام بشه.

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

    یا اینکه کد رو در اکسل اجرا کرد و از اکسس خوند.

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

    نقل قول: ايجاد شماره رديف در كوئري با ID ثابت

    نقل قول نوشته شده توسط atf1379 مشاهده تاپیک
    با سلام
    بر اساس جستجوهائی که بنده هم در سایت برنامه نویس و سایر سایت ها انجام دادم در همه موارد با استفاده از ستون ID جدول اقدام به ایجاد ردیف در کوئری شده است
    و موردی را نیافتم که بدون استفاده از ID جدول یک ستون ردیف در جدول ایجاد شود
    سلام و روز خوش

    الان این پرسش هست یا مطلب تکمیلی؟
    چون اینجا هیچ اشاره ای به id نکردم.

    و البته که بدون id هم میشه - ولی موضوع این تاپیک نیست!

  12. #12

    نقل قول: ايجاد شماره رديف در كوئري با ID ثابت

    نقل قول نوشته شده توسط Reza G مشاهده تاپیک
    با سلام
    دوستان به نظر شما راه حلي براي ايجاد شماره رديف در يك كوئري با يك ستون كه در آن يك سري عدد يكسان ثبت شده وجود دارد؟
    فرمول روبرو
    RowNum: DCount("[ID]","[tblNames]","[ID]<="& [ID])
    زماني كاربرد دارد كه محتواي ستون ID متفاوت باشد نه يكسان
    قصد دارم ستون ID را ايجاد كنم كه با تغيير محتواي ستون A شمارنده از عدد يك شروع و تا تغيير بعدي شمارش را ادامه دهد و دوباره از يك شروع شود و ....
    ممنون
    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    سلام و روز خوش

    الان این پرسش هست یا مطلب تکمیلی؟
    چون اینجا هیچ اشاره ای به id نکردم.

    و البته که بدون id هم میشه - ولی موضوع این تاپیک نیست!
    سلام
    روز شما هم خوش!
    این مطلب را بعنوان مطلب تکمیلی پست اول استارتر محترم مطرح کردم . البته باید در پستی که ایجاد کردم مطلب ایشان را بعنوان نقل قول درج میکردم
    ایشان در توضیحات پست اول اشاره کرده اند که فرمولی که برای ایجاد ردیف در کوئری قرار داده اند زمانی کاربرد دارد که اعداد ستون ID جدول پیوسته و پشت سرهم باشد و اگر اعداد تکراری باشد خروجی فرمول فوق بصورت پیوسته و غیر تکراری نمی باشد .
    در کل منظوئر اینست که آیا بدون استفاده از چنین ستونی میتوان ستونی در کوئری ایجاد کرد که اعداد آن متناسب با تعداد رکوردها از عدد 1 شروع و به عدد جمع رکوردها خاتمه پیدا کند . (با استفاده از نمونه پست 3)

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

  1. پاسخ: 0
    آخرین پست: یک شنبه 06 مرداد 1392, 14:20 عصر
  2. پاسخ: 8
    آخرین پست: چهارشنبه 11 بهمن 1391, 20:42 عصر
  3. چگونه مي توان كد نوشت كه اتو نامبر اولين ركورد جدول بعد از حذف ركورد هاي قبلي از يك شروع شود؟
    نوشته شده توسط reshehri در بخش مطالب مرتبط با بانکهای اطلاعاتی در VB6
    پاسخ: 3
    آخرین پست: چهارشنبه 22 دی 1389, 21:04 عصر
  4. پاسخ: 2
    آخرین پست: جمعه 02 مهر 1389, 13:00 عصر
  5. سوال: نگهداري اطلاعات كوئري Detail وقتي توسط فيلد ID به كوئري Master ريليشن دارد قبل از پست كوئري Master
    نوشته شده توسط ar_mokhtari در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 4
    آخرین پست: یک شنبه 27 اردیبهشت 1388, 14:26 عصر

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

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