PDA

View Full Version : تعیین فرمت در هنگام خواندن از دیتابیس



Navid Asadi
جمعه 01 مهر 1390, 10:01 صبح
سلام چه طور میشه در هنگام فراخوانی داده ها از دیتا بیس برای اون ها فرمت خاصی ایجاد کرد؟
مثلا : 1300000 تبدیل بشه به 1,300,000

Navid Asadi
شنبه 02 مهر 1390, 14:25 عصر
هیچکی نیست کمک کنه

Mani_rf
یک شنبه 03 مهر 1390, 11:31 صبح
روش 1- یک تابع درون SQL ایجاد کن و در هنگام خواندم فیلد مورد نظر ابتدا مقدار فیلد را به تابع بفرست تا فرمت شود.
روش 2 - به جای استفاده از DataAdabtor از DataReader استفاده کن و هر مقداری که خوانده می شود را قبل از ثبت در جای خود از طریق یک تابع فرمت کن.

Navid Asadi
شنبه 09 مهر 1390, 07:33 صبح
یک مقدار در مورد روش دوم توضیح میدین،
اگه میشه نمونه کد بزارین....

Navid Asadi
سه شنبه 12 مهر 1390, 20:01 عصر
اگه میشه یکم بیشتر توضیح بدین....

Mani_rf
سه شنبه 12 مهر 1390, 22:06 عصر
این هم نمونه کد. به نصبت برنامه خودت تغییرش بده:
Dim Connection As New SqlConnection("Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Restaurant;Data Source=MANI-PC\MANI")
Dim Command As New SqlCommand("Select FldPrice From TblFoods", Connection)

Connection.Open()

Dim DR As SqlDataReader
DR = Command.ExecuteReader
While DR.Read
Dim X As String = FormatNumber(DR("FldPrice"), False, TriState.False)
End While

Connection.Close()

Navid Asadi
پنج شنبه 14 مهر 1390, 23:01 عصر
آیا این کار برنامه رو کند نمیکنه وقتی تعداد داده ها زیاد باشه؟

Navid Asadi
جمعه 15 مهر 1390, 09:08 صبح
فکر کنم منظورم رو بد رسوندم یه مثال میزنم :
فرض کنیم ما تاریخ رو به صورت 13900715 ذخیره میکنیم حالا موقع خوندن میتونیم از کد ریز استفاده کنیم :
da = New OleDbDataAdapter("SELECT ID, MID(mydate, 1, 4) + '/' + MID(mydate, 5, 2) + '/' + MID(mydate, 7, 2) AS mydate FROM TABLE", cn)

حالا چون طول فیلد مبلغ ثابت نیست نمیشه از این روش استفاده کرد.
آیا روشی وجود داره که فرمت رو در هنگام خوندن از دیتابیس به ستون اختصاص بدیم؟

با این روش در دیتا گرید هم با اون فرمت نمایش داده میشه!

فقط خواهشا نگید یه حلقه for بزار که اصولی نیستش و سرعت رو هم کند میکنه!

Mani_rf
جمعه 15 مهر 1390, 09:40 صبح
اونقدری که فکر می کنی به چشم نمیاد.شاید نهایتا 1ثانیه برای 10000 رکورد تفاوت داشته باشه. اگر می خوای موقع خوندن این کا را انجام بدی باید در SQL یک تابع بنویسی که این کار را انجام دهد.تا جایی که من اطلاع دارم تابعی برای این کار در SQL وجود ندارد.

alimanam
جمعه 15 مهر 1390, 17:06 عصر
با سلام

میتونی از لینکهای زیر کمک بگیری کافیه یکم ( در حد 10 دقیقه ) وقت بزاری یکم تغییرش بدی .

http://www.siccolo.com/Articles/SQLScripts/how-to-create-sql-to-format-currency.html (http://www.siccolo.com/Articles/SQLScripts/how-to-create-sql-to-format-currency.html)
http://www.baycongroup.com/learning_sql.htm (http://www.baycongroup.com/learning_sql.htm)

هلو بپر تو گلو :

http://www.tek-tips.com/faqs.cfm?fid=6157 (http://www.tek-tips.com/faqs.cfm?fid=6157)


موفق باشید ./