با سلام.
اول از همه یک کپی از دیتابیس خو داشته باش که اگر خراب شد چیزی را از دست ندهی. در ضمن بعضی از رکورد های این دیتابیس فرمت اعدادشان با بقیه فرق می کند مانند رکوردهای با ID ی 326، 383، 738، 1179، 1777، 1923، 1930 و غیره که بررسی کن و آن ها را تصحیح کن چون باعث ایجاد اشتباه می شود. برای این که این چند مورد ایجاد خطا نکنند خط دستور <%on error resume next%> را به اول فایلمان اضافه می کنیم.
اول از همه باید برنامه ای را بنویسی که با یک بار اجرا همه اعداد را درست کند و اعداد آخر را همان طور که خواسته بودی سه رقمی کند. این برنامه در فایل format_corrector.asp است که در همان پوشه ای که دیتابیس است بریز و یک بار اجرا کن البته روی سرور یا ISS و وقتی چاپ شد Finished یعنی فرمت همه درست شده بجز آن رکورد های خراب که شاید خراب تر هم بشود. اگر این رکورد ها واقعاً این جوری هستند بگو تا فکر دیگری کنیم.
سورس فایل format_corrector.asp:
HTML:
<%on error resume next%>
<%
'معرفی مسیر و محل دیتابیس
filepath=Server.MapPath("1234.mdb")
'ایجاد دو آبجکت برای ارتباط با دیتابیس
Set oconn=Server.CreateObject("ADODB.Connection")
oconn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filePath
Set oconn1=Server.CreateObject("ADODB.Connection")
oconn1.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filePath
'انتخاب فیلد های مورد نظر از جدول مورد نظر
Set ors=oconn.Execute("SELECT ID,jnr FROM tabel1")
'ایجاد یک چرخه برای پیمایش تمام رکورد ها
Do While not ors.eof
'عددی که بایستی ترمیم شد در این متغیر قرار داده شود
bad_format=ors("jnr")
'با این دستور می گوییم با فواصل - عدد ما به سه قسمت بخش شود و در آرایه ای به همین نام ذخیره شود
bakhsh_arr=Split(bad_format,"-")
'هر بخش از عددمان را در این متغیر ها می ریزیم. توجه شود که اعداد آرایه از 0 شروع می شود
bakhsh_1=bakhsh_arr(0)
bakhsh_2=bakhsh_arr(1)
bakhsh_3=bakhsh_arr(2)
'طول بخش آخر را با این تابع می سنجیم
tool_3=Len(bakhsh_3)
'در این متغیر با این تابع به تعداد ارقامی که بخش آخر از 3 رقم کمتر دارد عدد 0 می نویسیم
ezafe=String(3-tool_3,"0")
'بخش ترمیم شده سوم که با اضافه کردن مقدار 0 های لازم به اول بخش 3 حاصل می شود را در این متغیر ریزیم
good_bakhsh_3=ezafe & bakhsh_3
'حالا فرمت صحیح عدد رابا جمع همه قسمت ها و - ها بازسازی می کنیم
good_format=bakhsh_1 & "-" & bakhsh_2 & "-" & good_bakhsh_3
'فرمت صحیح را در دیتابیس قرار می دهیم
oconn.Execute "UPDATE tabel1 SET jnr='" & good_format & "' WHERE ID=" & ors("ID")
'رفتن به رکورد بعدی
ors.MoveNext
Loop
'بستن آبجکت های باز شده
ors.close
oconn.close
Set ors=Nothing
Set oconn=Nothing
oconn1.close
Set oconn1=Nothing
'اطلاع دادن از اتمام کار
Response.Write("Finished!")
%>
حال می خواهیم برنامه ای را بنویسیم که جدول را با همان ترتیبی که خواسته ای نشان دهد یعنی از قسمت دوم عدد به بعد مرتب کند. این هم در فایل table.asp است که با اجرایش جدول به همان ترتیب نشان داده می شود.
سورس فایل table.asp:
HTML:
<%
'معرفی مسیر و محل دیتابیس
filepath=Server.MapPath("1234.mdb")
'ایجاد آبجکت برای ارتباط با دیتابیس
Set oconn=Server.CreateObject("ADODB.Connection")
oconn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filePath
'انتخاب همه فیلد های جدول مورد نظر
Set ors=oconn.Execute("SELECT * FROM tabel1 Order BY Right(jnr,len(jnr)-5)")
%>
<table border="1">
<%
'ایجاد یک چرخه برای پیمایش تمام رکورد ها
Do While not ors.eof
%>
<tr>
<%For c1=0 to (ors.fields.count-1)%>
<td><%=ors(c1)%></td>
<%Next%>
</tr>
<%
ors.MoveNext
Loop
%>
</table>
<%
'بستن آبجکت های باز شده
ors.close
oconn.close
Set ors=Nothing
Set oconn=Nothing
%>