lمرتب سازی اعداد در access

farhadamin

New Member
سلام
من در یکی از فیلذ های در برنامه اکسس 2003 اعدادی به صورت 12-3444-1998 دارم.... می خوام اعداد اول بر اساس اعداد قسمت دوم... در مثال 3444 و بعد قسمت سوم 12 و بعد قسمت اول 1998 مرتب شوند..... نمی توانم اعداد را جا به جا کنم..... در فیلد جداگانه هم نمی توانم بنویسم.
مثال
fild1
1998-3444-12
1999-3442-15
2000-3544-11
2001-3129-20
اعداد مثل این هستند و زمانی که من مرتب می کنم بر اساس اعداد اول مرتب می شوند که مورد نظر من نیست.....
امیدوارم که متوجه منظورم شده باشید
از کمکتون ممنون.....
 

Salman_MP

Member
سلام
خوش اومدی.
اتفاقاً کاری که گفتی رو میتونی بکنی !
یعنی فیلدها رو جدا کنی !
اگر هم نمیتونی من فکر میکنم چاره ای نیست غیر از خوندن همه ی جدول و بعد سورت کردنش توی برنامه (البته اگه جدول کوچیکه !).
شاید هم یه توابعی توی اکسس بشه تعریف کرد که این کار رو بکنه (که من خودم بلد نیستم و منتظر می مونم ببینم الباقی چی میگن...)
 
شما میتونی یک فانکشن بنویسی که ورودیش مقدار فیلد و خروجیش همون ترتیب مورد نظر باشه (قسمت دوم - قسمت سوم - قسمت اول) و بعد بر اساس اون sort کنی.
 

farhadamin

New Member
salam man mahalee karam hastam va font farsi nadaram bebakhshid

mishee dar morede fankshen[/B tozih bebdidi.
agee momkenee khodeton ye nemonee benevisid.
monatzeree javabam mamnon
]



عالم زاده گفت:
شما میتونی یک فانکشن بنویسی که ورودیش مقدار فیلد و خروجیش همون ترتیب مورد نظر باشه (قسمت دوم - قسمت سوم - قسمت اول) و بعد بر اساس اون sort کنی.
 
1- اول باید یک فانکشن پابلیک در یک ماژول تعریف کنی (مثلا با نام reorder) که در اون با استفاده از تابع split و تعیین کارآکتر "-" بعنوان دلیمیتر مقدار ورودی رو به 3 بخش تبدیل و دوباره طبق خواسته اونها رو سر هم کنه. برای طرز کار تابع به help اکسس مراجعه کن.

2- در کوئری که مینویسی order by بر اساس reorder(fld) بگذار که fld اسم همون فیلدی هست که میخوای به ترتیب مورد نظر سورت بشه.
 

farhadamin

New Member
filee nemone

bazam 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 اسم همون فیلدی هست که میخوای به ترتیب مورد نظر سورت بشه.
 

پیوست ها

  • db2.rar
    9 کیلوبایت · بازدیدها: 3
یک 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([field1])
 

farhadamin

New Member
هنوز درست نشده است.....

سلام از کمکن ممنون اما نشد...
نمی دونم من مودول را درست کردم اما تاثیری در کوئری نداره....
یعنی درست نشد......
من فایل را دویاره می گذارم خودت نگاه کن
ممنون.....
amirlol گفت:
در کویری نوشته شده
SELECT Table1.Field1, Table1.Field2, Table1.Field3, Table1.Field4, Table1.Field5
FROM Table1
ORDER BY Mid([Field1],6,4);



در مودول
Public Function reorder(x As String)
a = Split(x, "-")
reorder = a(1) + "-" + a(2) + "-" + a(0)
End Function
 

پیوست ها

  • db2.rar
    13 کیلوبایت · بازدیدها: 7

farhadamin

New Member
سلام و متوجه منظورتون نمی شم

سلام و متوجه منظورتون نمی شم.. شما یک بار برای من کد فرستادید من هم استفاده کردم و براتون نوشتم که کار نمی کنه و فایل را پیوست کردم.... اگه ممکنه خودتون به فایل یه نگاهی بیندازید...... ممنون می شم......
بر اساس شماره Id باید به ترتیب....
4
2
1
5
3
6
باید باشه... که البته فایل اصلی تعداد رکوردش خیلی زیاده.....
بازم ممنون از کمک همگی




عالم زاده گفت:
شکل کوئری صحیح رو گذاشتم - اون رو باید استفاده کنی نه قبلی رو.
 
این قسمت کوئریت رو باید عوض کنی:
کد:
ORDER BY Mid([Field1],6,4

و بجاش این رو بگذاری
کد:
ORDER BY reorder([field1])
 

farhadamin

New Member
mamnon ama nashod

salam 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([Field1],6,4

و بجاش این رو بگذاری
کد:
ORDER BY reorder([field1])
 
باید تابع 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

New Member
salam bazam nashod

karhayee 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
 

جدیدترین ارسال ها

بالا