ورود

View Full Version : سوال: قرار دادن سه فيلد مختلف در يك فيلد به دنبال هم(جهت ايجاد كدينگ)



linktaz
سه شنبه 16 مهر 1392, 19:18 عصر
با سلام خدمت اساتيد محترم.
من 3 فيلد دارم كه اين سه فيلد از جاهاي مختلف خونده ميشن ،ميخوام هر سه اين فيلد ها كنار هم توي يك فيلد بيان و تشكيل يك كد رو بدن.آيا ميشه؟؟
فايل ضميمه رو هم گذاشتم و توش مثال زدم.
ممنونم

Abbas Amiri
سه شنبه 16 مهر 1392, 19:57 عصر
با سلام خدمت اساتيد محترم.
من 3 فيلد دارم كه اين سه فيلد از جاهاي مختلف خونده ميشن ،ميخوام هر سه اين فيلد ها كنار هم توي يك فيلد بيان و تشكيل يك كد رو بدن.آيا ميشه؟؟
فايل ضميمه رو هم گذاشتم و توش مثال زدم.
ممنونم

سلام

شما اول باید مشخص کنید که حداکثر تعداد ارقام هر یک از کدها چقدر است . فرض کنیم کد شرکت و قطعه حداکثر سه رقمی هستند
بعد در یک کوئری براحتی می توانید اینکار را انجام دهید
SELECT Format([code_sherkat],"000") & Format([code_ghete],"000") & [date] AS Code
FROM Table1;


ونتیجه : 010005920717

به این ترتیب اشتباه بوجود نمی آید.

linktaz
سه شنبه 16 مهر 1392, 22:17 عصر
سلام

شما اول باید مشخص کنید که حداکثر تعداد ارقام هر یک از کدها چقدر است . فرض کنیم کد شرکت و قطعه حداکثر سه رقمی هستند
بعد در یک کوئری براحتی می توانید اینکار را انجام دهید
SELECT Format([code_sherkat],"000") & Format([code_ghete],"000") & [date] AS Code
FROM Table1;


ونتیجه : 010005920717

به این ترتیب اشتباه بوجود نمی آید.

ممنونم.براي بحث گزارش گيري اون چطور ميشه؟مثلا ميخوام اوني كه تاريخ اش بين فلان تا فلان بود(از زوي كد:در واقع 6 رقم سمت راست كد رو جدا كنه)
يا اونائي كه كد شركت(دو رقم سمت چپ) برابر يه مقداري باشه
يا اونائي كه كد قطعه برابر مقدار خاصي باشه(از كمبوباكس بخونه)
بين اينها يا هستش.ميشه ؟
لازمه مثالي بذارم؟

Abbas Amiri
سه شنبه 16 مهر 1392, 23:14 عصر
متشكرم.بايد حتما در كوئري انجام بشه؟ميشه نتيجه اش توي يه فيلد ديگه بياد به محض اينكه اينتر كرديم؟
با افزايش تعداد سطر ها چطوري ميشه اعمالش كرد؟

چون فرم شمابصورت Continuous است باید از کوئری استفاده کنید .

linktaz
چهارشنبه 01 آبان 1392, 19:14 عصر
ممنونم.براي بحث گزارش گيري اون چطور ميشه؟مثلا ميخوام اوني كه تاريخ اش بين فلان تا فلان بود(از روي كد:در واقع 6 رقم سمت راست كد رو جدا كنه)
يا اونائي كه كد شركت(دو رقم سمت چپ) برابر يه مقداري باشه
يا اونائي كه كد قطعه برابر مقدار خاصي باشه يا اصلا خالي باشه(از كمبوباكس بخونه)
بين اينها يا هستش.ميشه ؟

mmbguide
چهارشنبه 01 آبان 1392, 20:46 عصر
سلام

روش کدینک با ترکیب چند فیلد چیز بسیار جالبی هستش و من خودم همیشه تو جداولم استفاده میکنم. مثلا یک جدول حضور و غیاب درست کردم که فیلدهای (شماره پرسنلی-سال-شماره ماه-روز-) در یک فیلد ذخیره میشدند و ویژگی فیلدی که این کد رو ذخیره می کرد No Duplicate بود و در قسمت On Error فرم در زمان برزو خطای رکورد تکراری یک پیغام فارسی نشون میداد. چیز بسیار جالبیه. البته اگر روشی بهتر وجود داره استقبال میکنم.

mmbguide
چهارشنبه 01 آبان 1392, 22:30 عصر
راستی یادم رفت بگم. پیشنهاد میکنم از یک Delimiter (جداکننده) بین اونها استفاده کنی.

مثال بدون جدا کننده:
ماه 12 و روز 1 کدش میشه 121 و از طرفی ماه 1 روز 21 هم کدش میشه 121. پس میبینی که عملا کد تکراری میشه. پس راه حل جداکننده اینجا بدرد میخوره.

با جداکننده:
ماه 12 و روز 1 کدش میشه 1-12 از طرفی ماه 1 روز 21 هم کدش میشه 21-1.

linktaz
پنج شنبه 02 آبان 1392, 12:59 عصر
راستی یادم رفت بگم. پیشنهاد میکنم از یک Delimiter (جداکننده) بین اونها استفاده کنی.

مثال بدون جدا کننده:
ماه 12 و روز 1 کدش میشه 121 و از طرفی ماه 1 روز 21 هم کدش میشه 121. پس میبینی که عملا کد تکراری میشه. پس راه حل جداکننده اینجا بدرد میخوره.

با جداکننده:
ماه 12 و روز 1 کدش میشه 1-12 از طرفی ماه 1 روز 21 هم کدش میشه 21-1.

سلام.دوست عزيز،مشكل من چيزه ديگست.بحث شكل گيري كد رو آقاي اميري حل كردند.اما حالا كه كد شكل گرفته چطوري ميشه با توجه به شرط هايي كه در پست قبليم عرض كردم تفكيك سرچ كرد؟

Abbas Amiri
پنج شنبه 02 آبان 1392, 13:26 عصر
سلام.دوست عزيز،مشكل من چيزه ديگست.بحث شكل گيري كد رو آقاي اميري حل كردند.اما حالا كه كد شكل گرفته چطوري ميشه با توجه به شرط هايي كه در پست قبليم عرض كردم تفكيك سرچ كرد؟

برای اینکه به بخشی از یک متغیر نوع تکست دست پیدا کنید بهترین گزینه توابع Right, Leftو Mid است . از آنجا که در کد تولید شده طول رشته همیشه ثابت و برابر 10 است کار آسانتر میشود . سه کاراکتر سمت چپ کد شرکت سه تای میانی کد قطعه و چهارتای سمت راست تاریخ هستند .

code_sherkat=Left(Code,3)
code_ghete=Mid(Code,4,3)
date=Right(Code,6) 'از اسامی رزرو شده برای نامگذاری اشیاو متغیرها استفاده نکنید

mmbguide
پنج شنبه 02 آبان 1392, 13:35 عصر
من یک چیز به ذهنم میرسه؟
1- تمام فیلد کد، از یک مقدار ثابت باشند. مثلا از نوع String با تعداد کاراکتر 20. که مثلا 4تای اول برای کد شرکت و 8تای وسط برای تاریخ و 4تای آخر برای کد قطعه. واسه اینکه مطمئن بشی کاراکترهای عددی با طول های مشخص مربوط به یک چیز خاص هستند. مثلا از کاراکتر 5 به طول 8 برای تاریخ. اگر از این قاعده استفاده میکنید مراحل زیر رو انجام بدید:
یک query بسازید و پس از اضافه کردن تمام فیلدهای جدول یک فیلد جدید در query بسازید و عبارت زیر رو داخلش بنویسید (در قسمت Field):
Expr1: Left([Table1]![demand_num],2)
حالا در قسمت creteria مربوط به همین فیلد جدید علامت ["کد شرکت را وارد کنید"] را قرار بدید. البته در قسمت شرط نویسی می تونید از هر روشی استفاده کنید.
در واقع query در زمان اجرا از شما یک عدد درخواست میکنه و شما باید یک عدد دو رقمی کد همون کد شرکت هستش رو وارد کنید و اکسس از فیلد کد واقع در جدول، 2 رقم سمت چپ را جدا کرده و با عددی که شما در زمان اجرای query وارد کردید مقایسه میکنه و اون رو در صورت وجود رکورد نشون میده.
برای شرط های مختلف میتونید از کدهای زیر استفاده کنید
مثلا با شرط تاریخ (تاریخ رو از میان متن جدا میکند)
Expr1: Mid([Table1]![demand_num],5,8)
مثلا با شرط کد قطعه (کد را از 4 رقم سمت راست جدا میکند)
Expr1: Right([Table1]![demand_num],4)
برای اینکه در زمان اجرا این فیلدها رو نبینید میتونید گزینه Show را غیر فعال کنید.


باید با اینا یکم کار کنید تا دستت بیاد. چیز بسیار آسونیه. امیدوارم مشکلت حل شده باشه