PDA

View Full Version : مشکل ذخیره متن فرمت بندی شده در دیتابیس 123456 و 123,456



Chabok
یک شنبه 19 تیر 1384, 12:24 عصر
خواهشا کمک کنید !!! فوری فوریه


با عرض سلام خدمت خدمت حضار گرامی

از دوستان محترم کسانی که اعداد فرمت بندی شده را در
دیتابیس ذخیره می کنند کمک می خواهم .

من توی برنامه توسط تابعی که توی همین سایت معرف شده بود
تکست باکس ها را فرمت بندی کردم و سپس توسط تابع زیر
کاما را برداشتم و در دیتابیس بصورت عددی Integer ذخیره می کنم

یعنی ابتدا 123,456 رو به 123456 تبدیل کردم و سپس بصورت عددی ذخیره می کنم



Public Function DelCamaDS(ByVal Text As String) As String
DelCamaDS = Text.Replace(",", "")
End Function


و در ذخیره کردن بدون کاما مشکلی ندارم
ولی برای نشان دادن به مشکل بر می خورم

من می خواهم کل فیلد مورد نظر را در دیتاست دوباره فرمت بندی کنم
یعنی 123456 رو به 123,456 تبدیل کنم و نمایش دهم
ولی چون فیلد من عددی است نمی توان در آن ستون متن فرمت بندی شده متنی ذخیره کرد



For I = 0 To DS.Tables("HS").Rows.Count - 1
Dim S1 As Int64 = DS.Tables("HS").Rows(I).Item(12)
Dim S2 As Int64 = DS.Tables("HS").Rows(I).Item(13)
DS.Tables("HS").Rows(I).Item(12) = PutcamaDS(S1)
DS.Tables("HS").Rows(I).Item(13) = PutcamaDS(S2)
Next


پس می بینیم که نمی توان بصورت عددی ذخیره کرد . چون در تغییر دیتاست مشکل داریم .

حال اگر بخواهیم اعداد بدون کاما را در دیتا بیس بصورت متنی 12345 ذخیره کرد
هنگام تغییرات در دیتاست مشکلی ندارم . ولی برای جستجو در دستور Select مشکل ایجاد می شود



Select * From Table1 Where P1 between @A,@B
Select * From Table1 Where P1 between '200','1800'

چون این فیلد P1 بصورت رشته ای می باشد نتایج جستجو غلط می باشد

خواهشا برای چگونگی ذخیره اعداد در دیتابیس و فرمت بندی اعداد در دیتاست راهنمایی کنین

خواهشا اگه کسی چیزی میدونه دریغ نکنه . چون خیلی فوریه

از همگی سپاسگزارم

PalizeSoftware
یک شنبه 19 تیر 1384, 12:52 عصر
دوست عزیز شما فرمت‌بندی اعداد را فقط در نمایش آنها به کاربر نیاز دارید. پس چرا به خودتان زحمت می‌دهید و اصرار دارید تا فرمت شده درون بانک بریزید؟
بعلاوه می‌دانید که اگر اعداد را بصورت عددی (و نه رشته‌ای) ذخیره کنید فضای کمتری در بانک به خود اختصاص می‌دهند و سرعت بازیابی و سایر عملیات بر روی آنها سریع‌تر انجام می‌گیرد؟

Chabok
یک شنبه 19 تیر 1384, 16:51 عصر
من هم در بانک بدون فرمت ثبت می کنم
فقط به من بگویید اگر عددی ذخیره کردم چگونه می توانم برای نمایس مجدد به کاربر آن را فرمت بندی کنم ؟

مشکل نمایش آن به کاربر است و نمی توان آن را فرمت بندی کنم
چون نتوانستم دیتاست راتغییر دهم و مثلا 123456 را به 123,456 تبدیل کنم
چون اولی عددی است و دومی رشته ای

کمک کنین !!!!

PalizeSoftware
یک شنبه 19 تیر 1384, 19:14 عصر
اگر در VB قصد نمایش دارید، مثلا بر روی فرم از این دستور برای فرمت‌بندی استفاده کنید:
Format(1234567,"#,##0")

Chabok
دوشنبه 20 تیر 1384, 16:37 عصر
دوست عزیز

من لیبل ها را به دیتاست بایند کرده ام
و نمیتوانم خودم متن آن را تغییر دهم

امیدوارم متوجه منظورم شده باشید

PalizeSoftware
دوشنبه 20 تیر 1384, 20:18 عصر
دوست عزیز شما باید خصوصیت DataFormat رو به نوع Number تغییر بدی.
اینجوری مشکل حل می‌شه.
به عکس زیر توجه کن

Chabok
سه شنبه 21 تیر 1384, 11:28 صبح
این ها خواص چه شیئی هستند ؟

لیبل یا تکست باکس یا دیتا گرید ؟

PalizeSoftware
سه شنبه 21 تیر 1384, 11:54 صبح
دوست عزیز هر شئی را که شما بایند کرده‌اید، برای نمایش آنگونه که می‌خواهید می‌توانید فرمت نمایش آنرا انتخاب کنید. شما فرمت لیبل را به Number تغییر دهید تا آن مشکلی که داشتید حل شود.

Chabok
پنج شنبه 23 تیر 1384, 12:08 عصر
فکر کنم شما با وی بی 2005 کار میکنید
چون من در لیبل خاصیتی به نام فرمت پیدا نکردم

در وی بی 2003 نیست یا من پیداش نکردم