مشکل در وارد کردن اطلاعات

farhadamin

New Member
سلام من در یکی از فیلد ها اعدادی به صورت زیر دارم
4-3455-1999
12-3455-2000
می خوام اون اعداد آخر 4 و 12 در مثال بالا به صورت اتوماتیک سه رقمی بشن... یعنی به صورت 004 و 012 در بیان لطفا راهنمایی کنید..
در ضمن می خوام این اتفاق برای رکوردهای قبلی هم که وارد شده بیفته.

ممنون
 

mosyhey

Member
ابتدا با تابع split اعدادت را سه پاره کن. سپس تعداد ارقام پاره سوم را بشمار با تابع Len. حالا با Select Case مثلاً کار کن یا هر چه از 3 رقم کمتر داشتند به اول آن ها 0 اضافه کن.
اگر خواستی برایت بنویسم.
 

farhadamin

New Member
mosyhey گفت:
ابتدا با تابع split اعدادت را سه پاره کن. سپس تعداد ارقام پاره سوم را بشمار با تابع Len. حالا با Select Case مثلاً کار کن یا هر چه از 3 رقم کمتر داشتند به اول آن ها 0 اضافه کن.
اگر خواستی برایت بنویسم.
سلام ممنون می شم برام بنویسی....یه کم هم بیشتر توضیح بدی.....ممنون
برنامه هم توی accéss 2003
منتظرم
 
آخرین ویرایش:

mosyhey

Member
با سلام.
شما برای این کار به دو فایل جدا گانه نیاز دارید. اول یک مقدار کد در فایل اصلی اتان که ورودی های جدید را با فرمت صحیحی در دیتا بیس قرار دهد. دوم هم فایلی که برای یک بار اجرا شود و تمام رکورد ها را بپیماید و آن ها را از اول تصحیح کند. در این پست فایل اولی را می گویم. ابتدا باید اعداد را با فرمت خراب مساوی متغیر bad_format قرار دهید. در آخر اعداد با فرمت صحیح را در متغیر good_format می توانید تحویل دیتابیس دهید. سعی کرده ام دستورات را باز بنویسم و توضیح هم بدهم.
HTML:
<%
'عددی که بایستی ترمیم شد در این متغیر قرار داده شود
bad_format="1999-3455-4"

'با این دستور می گوییم با فواصل - عدد ما به سه قسمت بخش شود و در آرایه ای به همین نام ذخیره شود 
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

'فرمت صحیح را چاپ می کنیم
Response.Write(good_format)
%>
 

farhadamin

New Member
mosyhey گفت:
با سلام.
شما برای این کار به دو فایل جدا گانه نیاز دارید. اول یک مقدار کد در فایل اصلی اتان که ورودی های جدید را با فرمت صحیحی در دیتا بیس قرار دهد. دوم هم فایلی که برای یک بار اجرا شود و تمام رکورد ها را بپیماید و آن ها را از اول تصحیح کند. در این پست فایل اولی را می گویم. ابتدا باید اعداد را با فرمت خراب مساوی متغیر bad_format قرار دهید. در آخر اعداد با فرمت صحیح را در متغیر good_format می توانید تحویل دیتابیس دهید. سعی کرده ام دستورات را باز بنویسم و توضیح هم بدهم.
HTML:
<%
'عددی که بایستی ترمیم شد در این متغیر قرار داده شود
bad_format="1999-3455-4"

'با این دستور می گوییم با فواصل - عدد ما به سه قسمت بخش شود و در آرایه ای به همین نام ذخیره شود 
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

'فرمت صحیح را چاپ می کنیم
Response.Write(good_format)
%>


ممنون از همه توضیحالتت.... من فایل را این جا قرار می دم اکه ممکنه خودت یه نگاهی بهش بکن...... چون من در نهایت نتونستم انجام بدم با همه توضیحات کاملت ... این کار نیستم....

خیلی خیلی ممنون.....
 

پیوست ها

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

mosyhey

Member
با سلام.
اول از همه یک کپی از دیتابیس خو داشته باش که اگر خراب شد چیزی را از دست ندهی. در ضمن بعضی از رکورد های این دیتابیس فرمت اعدادشان با بقیه فرق می کند مانند رکوردهای با 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
%>
 

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

بالا