واضح آرشیو وب فارسی:سایت ریسک: lمرتب سازی اعداد در access farhadamin 25 ارديبهشت 1385, 23:21سلام من در یکی از فیلذ های در برنامه اکسس 2003 اعدادی به صورت 12-3444-1998 دارم.... می خوام اعداد اول بر اساس اعداد قسمت دوم... در مثال 3444 و بعد قسمت سوم 12 و بعد قسمت اول 1998 مرتب شوند..... نمی توانم اعداد را جا به جا کنم..... در فیلد جداگانه هم نمی توانم بنویسم. مثال fild 1 1998-3444-12 1999-3442-15 2000-3544-11 2001-3129-20 اعداد مثل این هستند و زمانی که من مرتب می کنم بر اساس اعداد اول مرتب می شوند که مورد نظر من نیست..... امیدوارم که متوجه منظورم شده باشید از کمکتون ممنون..... Salman_MP 26 ارديبهشت 1385, 02:14سلام خوش اومدی. اتفاقاً کاری که گفتی رو میتونی بکنی ! یعنی فیلدها رو جدا کنی ! اگر هم نمیتونی من فکر میکنم چاره ای نیست غیر از خوندن همه ی جدول و بعد سورت کردنش توی برنامه (البته اگه جدول کوچیکه !). شاید هم یه توابعی توی اکسس بشه تعریف کرد که این کار رو بکنه (که من خودم بلد نیستم و منتظر می مونم ببینم الباقی چی میگن...) عالم زاده 26 ارديبهشت 1385, 07:41شما میتونی یک فانکشن بنویسی که ورودیش مقدار فیلد و خروجیش همون ترتیب مورد نظر باشه (قسمت دوم - قسمت سوم - قسمت اول) و بعد بر اساس اون sort کنی. farhadamin 26 ارديبهشت 1385, 09:14salam man mahalee karam hastam va font farsi nadaram bebakhshid mishee dar morede [B]fankshen[/B tozih bebdidi. agee momkenee khodeton ye nemonee benevisid. monatzeree javabam mamnon ] شما میتونی یک فانکشن بنویسی که ورودیش مقدار فیلد و خروجیش همون ترتیب مورد نظر باشه (قسمت دوم - قسمت سوم - قسمت اول) و بعد بر اساس اون sort کنی. عالم زاده 26 ارديبهشت 1385, 10:091- اول باید یک فانکشن پابلیک در یک ماژول تعریف کنی (مثلا با نام reorder) که در اون با استفاده از تابع split و تعیین کارآکتر "-" بعنوان دلیمیتر مقدار ورودی رو به 3 بخش تبدیل و دوباره طبق خواسته اونها رو سر هم کنه. برای طرز کار تابع به help اکسس مراجعه کن. 2- در کوئری که مینویسی order by بر اساس reorder(fld) بگذار که fld اسم همون فیلدی هست که میخوای به ترتیب مورد نظر سورت بشه. farhadamin 26 ارديبهشت 1385, 13:46bazam bebakhshid ke fonte farsi nadaram. man ye nenoneyeekochik az barname ferestadam chon khodam natonestam on kari ro ke goftid anjam bedam.. mamnon az komaketon 1- اول باید یک فانکشن پابلیک در یک ماژول تعریف کنی (مثلا با نام reorder) که در اون با استفاده از تابع split و تعیین کارآکتر "-" بعنوان دلیمیتر مقدار ورودی رو به 3 بخش تبدیل و دوباره طبق خواسته اونها رو سر هم کنه. برای طرز کار تابع به help اکسس مراجعه کن. 2- در کوئری که مینویسی order by بر اساس reorder(fld) بگذار که fld اسم همون فیلدی هست که میخوای به ترتیب مورد نظر سورت بشه. عالم زاده 26 ارديبهشت 1385, 18:02یک module جدید باز کن و این رو توش بنویس و ذخیره کن: Public Function reorder(x As String) a = Split(x, "-") reorder = a(1) + "-" + a(2) + "-" + a(0) End Function شکل کوئری رو باید مشابه این استفاده کنی: SELECT * FROM table1 ORDER BY reorder([field 1]) amirlol 26 ارديبهشت 1385, 18:14حل شد یا نه ؟ farhadamin 26 ارديبهشت 1385, 20:30سلام از کمکن ممنون اما نشد... نمی دونم من مودول را درست کردم اما تاثیری در کوئری نداره.... یعنی درست نشد...... من فایل را دویاره می گذارم خودت نگاه کن ممنون..... حل شد یا نه ؟ در کویری نوشته شده SELECT Table1.Field 1, Table1.Field 2, Table1.Field 3, Table1.Field 4, Table1.Field 5 FROM Table1 ORDER BY Mid([Field 1],6,4); در مودول Public Function reorder(x As String) a = Split(x, "-") reorder = a(1) + "-" + a(2) + "-" + a(0) End Function عالم زاده 27 ارديبهشت 1385, 07:36شکل کوئری صحیح رو گذاشتم - اون رو باید استفاده کنی نه قبلی رو. farhadamin 27 ارديبهشت 1385, 19:25سلام و متوجه منظورتون نمی شم.. شما یک بار برای من کد فرستادید من هم استفاده کردم و براتون نوشتم که کار نمی کنه و فایل را پیوست کردم.... اگه ممکنه خودتون به فایل یه نگاهی بیندازید...... ممنون می شم...... بر اساس شماره Id باید به ترتیب.... 4 2 1 5 3 6 باید باشه... که البته فایل اصلی تعداد رکوردش خیلی زیاده..... بازم ممنون از کمک همگی شکل کوئری صحیح رو گذاشتم - اون رو باید استفاده کنی نه قبلی رو. عالم زاده 27 ارديبهشت 1385, 20:12این قسمت کوئریت رو باید عوض کنی: ORDER BY Mid([Field 1],6,4 و بجاش این رو بگذاری ORDER BY reorder([field 1]) farhadamin 28 ارديبهشت 1385, 09:08salam man taghiro anjam dadam ama alan digee guery baz nemishee va eror midee be payghamee - reorder- ham gir midee. mamanon va montazeretonam... agee maomkenee khodetn filo negah konid... این قسمت کوئریت رو باید عوض کنی: ORDER BY Mid([Field 1],6,4 و بجاش این رو بگذاری ORDER BY reorder([field 1]) عالم زاده 29 ارديبهشت 1385, 08:20باید تابع reorder رو همونطور که گفتم تعریف کنی: modules --> new Public Function reorder(x As String) a = Split(x, "-") reorder = a(1) + "-" + a(2) + "-" + a(0) End Function file --> save file --> close and return farhadamin 29 ارديبهشت 1385, 15:43karhayee ke shoma neveshtid ra anjam dadam ama taghiri dar natijee ijad nemishee... yani hich taziriroyee tartibee rekordha dar query be vojod nemiyad... agee momkene khodeyon ye negahi be file bokonid... باید تابع reorder رو همونطور که گفتم تعریف کنی: modules --> new Public Function reorder(x As String) a = Split(x, "-") reorder = a(1) + "-" + a(2) + "-" + a(0) End Function file --> save file --> close and return
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 401]