نحوه کوئری کردن آخرین تغییرات
سلام و وقت بخیر خدمت دوستان و اساتید.
جدولی داریم شامل اطلاعات تغییراتی که بر روی یک فیلد ثبت میشه.
فیلد 1 تغییرات در تاریخ 01/01/1397 و رکوردهای دیگری هم برای همین فیلد در تاریخ های 01/03/1397 و 01/05/1397 ثبت شده
فیلد 2 تغییرات در تاریخ های 02/01/1397 و رکوردهای دیگری برای همین فیلد در تاریخ های 02/03/1397 و 02/05/1397 ثبت کردیم.
تمام موارد در جدول ثبت و ذخیره سازی میشه بهمراه ID،
حالا سوال اینجاست میخوام کوئری بسازم که توی اون هر دو فیلد 1 و 2 رو با مشخصات آخرین تغییراتی که براشون ثبت شده نمایش بده، دستورات پیش ساخته کوئری شامل last و max و... جوابگو نیستن و کاری انجام نمیدن. بانک اطلاعاتی بدلیل حجیم بودنش امکان ارسال نداشت وگرنه برای دوستان ارسال میکردم نظر بدن،
ضمن اینکه جداول بهم پیوسته ای هم داره که در واقع کوئری شامل فقط یه جدول نیست.
نقل قول: نحوه کوئری کردن آخرین تغییرات
یه مساله ای که باید بگم یکی از دوستان راهنمایی کردن که باید از were استفاده کنم ولی تو سرچ هام به نتیجه ای نرسیدم که چطور ازش استفاده کنم.
1 ضمیمه
نقل قول: نحوه کوئری کردن آخرین تغییرات
نقل قول: نحوه کوئری کردن آخرین تغییرات
شما باید دستوری بنویسی که از رکورد مورد نظر قبل از ویرایش کپی تهیه بشه و در یک تیبل بشینه . بعد ویرایش را انجام بدین و بعد تکست ها قفل شوند .
نقل قول: نحوه کوئری کردن آخرین تغییرات
در کل این مساله و مشکل منه و نمیتونم حلش کنم، این دستوری که میگین رو میتونین راهنمایی کنین؟
نقل قول: نحوه کوئری کردن آخرین تغییرات
SELECT "1" AS Field_Name , MAX(date1) AS Last_Update FROM table1 WHERE field1="1"
UNION
SELECT "2" AS Field_Name , MAX(date1) AS Last_Update FROM table1 WHERE field1="2"
نقل قول: نحوه کوئری کردن آخرین تغییرات
نقل قول:
نوشته شده توسط
mosaArabi
شما باید دستوری بنویسی که از رکورد مورد نظر قبل از ویرایش کپی تهیه بشه و در یک تیبل بشینه . بعد ویرایش را انجام بدین و بعد تکست ها قفل شوند .
ایشون یک جور audit trail پیاده کردن و در اینحالت لازم نیست کل رکورد آرشیو بشه - معمولا فقط Id رکورد و old value فیلدهای مورد نظر همراه با Time-stamp نگهداری میشه
نقل قول: نحوه کوئری کردن آخرین تغییرات
نقل قول:
نوشته شده توسط
mazoolagh
SELECT "1" AS Field_Name , MAX(date1) AS Last_Update FROM table1 WHERE field1="1"
UNION
SELECT "2" AS Field_Name , MAX(date1) AS Last_Update FROM table1 WHERE field1="2"
کد ها رو نه تو حالت دیزاین مود و نه تو حالت sql view نتونستم وارد کنم (وارد کوئری کنم)
نقل قول: نحوه کوئری کردن آخرین تغییرات
سلام کدی که استاد عزیز برای شما گذاشتن یک نمونه کد هست و شما باید با توجه به جداول خودتون این کد رو شخصی سازی کنید.
اگر میخواید بیشتر در مورد این نمونه کد بدونید به دنبال کلیدواژه کوئری یونیون بگردید
نقل قول: نحوه کوئری کردن آخرین تغییرات
نقل قول:
نوشته شده توسط
Mehr@ban
سلام کدی که استاد عزیز برای شما گذاشتن یک نمونه کد هست و شما باید با توجه به جداول خودتون این کد رو شخصی سازی کنید.
اگر میخواید بیشتر در مورد این نمونه کد بدونید به دنبال کلیدواژه کوئری یونیون بگردید
ممنونم از راهنمایی، ولی کدی که ارسال کردن با فیلدهای بانک نمونه همخوانی داره، مساله اینجاست که کلا تو شرط های کوئری نمیتونم select بذارم و کلا نمیپذیره، با فرمت in select تو شرط میشه استفاده کرد ولی خب اونوقت نحوه بکارگیری max یا last رو نمیدونم، خیلی سرچ کردم و مطالب زیادی مطالعه کردم ولی این مساله برام حل نشد و انگار تابحال کسی همچین کاری تو اکسس انجام نداده،
3 ضمیمه
نقل قول: نحوه کوئری کردن آخرین تغییرات
کدی که گذاشتم دقیقا بر اساس دیتا نمونه است و انتزاعی نیست.
نمیدونم مشکل شما کجاست برای همین کوئری رو بهش اضافه و دوباره براتون آپلود میکنم.
ضمیمه 148932
ضمیمه 148933
نقل قول: نحوه کوئری کردن آخرین تغییرات
ممنونم استاد عزیز، مساله اینجا بود که من کد رو به کوئری اضافه میکردم ولی خب خود کوئری با همین کد اوکی بود، حالا یکم ماهیگیری یاد بگیرم بجای ماهی گرفتن :لبخند:
من فیلد کد اموال دارم که در واقع شامل صدتا لوازمه که ممکنه کم یا زیاد هم بشه، ممکنه برخی دستگاهها سرویس بشن و برخی دیگه هم نشن،
مشخصات هر کد اموال تو یه جدول نگهداری میشه و مشخصات تعمیر هر وسیله هم تو یه جدول دیگه، ترجیح من اینه که کوئری داشته باشم که لیست مشخصات رو از جدول 1 بگیره و تو جدول 2 بگرده و آخرین تعمیر اون وسیله رو بیاره،
ولی چیزی که تو این کوئری میخواستم این بود که بیاد تو همون جدول سرویس ها آخرین تاریخ تعمیر هر وسیله رو بیاره (اینجا یه ایرادی که داره اینه که یه کد اموال ممکنه سالها نیاز به تعمیر و سرویس پیدا نکنه و تو این کوئری نمیاد).
ممنونم از همه دوستان و اساتیدی که لطف میکنن پاسخ میدن
نقل قول: نحوه کوئری کردن آخرین تغییرات
این کد فقط برای همین حالت خاص که در پرسش نخست آمده (چند فیلد معین و محدود) مناسب هست وگرنه در حالت کلی نمیشه اینجوری با Union به نتیجه دلخواه رسید.
در حالت کلی باید اول یک فانکشن گلوبال (public) بنویسن که اسم جدول و فیلد رو بگیره و آخرین تاریخ آپدیت رو برگردونه.
بعد با کمک این فانکشن یک کوئری دیگه مینویسین که بازای هر فیلد مشخص آخرین تاریخ آپدیت رو برگردونه.
دیتا نمونه بسازین و اینجا پیوست کنین تا دقیقتر راهنمایی کنم.
1 ضمیمه
نقل قول: نحوه کوئری کردن آخرین تغییرات
ضمیمه 148992
ضمن تشکر ، فایل نمونه با اطلاعات محدودتر که قابل ویرایش و بررسی باشه
1 ضمیمه
نقل قول: نحوه کوئری کردن آخرین تغییرات
نقل قول: نحوه کوئری کردن آخرین تغییرات
نمونه ای که گذاشتین مناسب نیست
نمونه دیگه ای میسازم و روی همون آموزش میدم
2 ضمیمه
نقل قول: نحوه کوئری کردن آخرین تغییرات
2 ضمیمه
نقل قول: نحوه کوئری کردن آخرین تغییرات
نقل قول: نحوه کوئری کردن آخرین تغییرات
توابع بدست آوردن آخرین تاریخ ویرایش و تعدا دفعات ویرایش یک فیلد معین از رکورد معین:
Public Function Last_Update(ProductID As Long, FieldName As String) As Variant
Last_Update = DMax("DateEdited", "ProductsAudit", "ProductID=" & ProductID & " AND FieldName='" & FieldName & "'")
End Function
Public Function Count_Of_Updates(ProductID As Long, FieldName As String) As Long
Count_Of_Updates = DCount("DateEdited", "ProductsAudit", "ProductID=" & ProductID & " AND FieldName='" & FieldName & "'")
End Function
نقل قول: نحوه کوئری کردن آخرین تغییرات
طراحی کوئری:
SELECT Products.ProductID, Products.Product,
Products.DateCreated,
Last_Update([ProductID],'UnitPrice') AS [آخرین ویرایش (قیمت)],
Last_Update([ProductID],'Quantity') AS [آخرین ویرایش (مقدار)],
Last_Update([ProductID],'SupplierID') AS [آخرین ویرایش (تأمین کننده)],
Count_Of_Updates([ProductID],'UnitPrice') AS [تعداد ویرایش (قیمت)],
Count_Of_Updates([ProductID],'Quantity') AS [تعداد ویرایش (مقدار)],
Count_Of_Updates([ProductID],'SupplierID') AS [تعداد ویرایش (تأمین کننده)]
FROM Products
نقل قول: نحوه کوئری کردن آخرین تغییرات
اجرای کوئری:
ضمیمه 149062
1 ضمیمه
نقل قول: نحوه کوئری کردن آخرین تغییرات