PDA

View Full Version : مشکل در ذخیره ی اعداد فارسی در access



sorroshsaket
جمعه 21 مرداد 1390, 12:08 عصر
من یه مشکلی دارم
داده های من اعداد فارسی هستن وقتی اون ها رو تو Access
وارد می کنم به علامت سوال تبدیل می شه
چکار کنم خیلی بهش نیازدارم
Hep Me
ممنون

mazoolagh
جمعه 21 مرداد 1390, 17:50 عصر
ظاهرا شما اعداد رو به شکل متن ذخیره کردین - عدد باید به شکل عدد ذخیره بشه. تبدیلشون کنین درست میشن.

Younestalebi
جمعه 21 مرداد 1390, 22:28 عصر
من یه مشکلی دارم
داده های من اعداد فارسی هستن وقتی اون ها رو تو Access
وارد می کنم به علامت سوال تبدیل می شه
چکار کنم خیلی بهش نیازدارم
Hep Me
ممنون
لطفاً نمونه فایلتون رو قرار بدین

sorroshsaket
شنبه 22 مرداد 1390, 14:10 عصر
من رشته ام رو به این کلاس می فرستم اونم تبدیلش می کنه
public static char ensurePersianChar(char c) {
if (c >= '\u0030' && c <= '\u0039'){
c = (char) ('\u06f0' + Character.getNumericValue(c));
}
if (c >= '\u0660' && c <= '\u0669') {
c = (char) (c + ('\u06f0' - '\u0660'));
}
if (c == '\u003b') {
c = '\u061b';
}
if (c == '\u002c') {
c = '\u060c';
}
if (c == '\u0649' || c == '\u064a') {
c = '\u06cc';
}
if (c == '\u0643') {
c = '\u06a9';
}
if (c == '\u0025') {
c = '\u066a';
}
return c;
}

StringBuffer ensurePersianChars(String original) {
StringBuffer ret = new StringBuffer();
for (int i = 0; i < original.length(); i++)
{
char c = original.charAt(i);
c = ensurePersianChar(c);
ret.append(c);
}
return ret;
}



}

mazoolagh
شنبه 22 مرداد 1390, 23:04 عصر
خوب نباید اینکار رو بکنین!
اگر میخواین که اعداد حتما به شکل فارسی نمایش داده بشن باید موقع نمایش این کار رو بکنین و نه موقع ذخیره سازی.

در هر صورت در اکسس میتونین یک فانکشن بنویسین که عکس این کار رو انجام بده.

PUBLIC FUNCTION F1(X AS STRING) AS STRING
DIM I AS INTEGER
FOR I=ASC(0) TO ASC(9)
X=REPLACE(X,CHRW(I+VAL(&H0660)-ASC(0)),CHRW(I))
NEXT
F1=X
END FUNCTION

sorroshsaket
شنبه 22 مرداد 1390, 23:27 عصر
میشه بیشتر توضیح بدی؟
یعنی چی عکس این کار
ببین من می خوام داده هم فارسی باشه تا وقتی با Ireport اونا رو می خونم تو گزارشم اعداد فارسی باشن
اگه راه دیگه ای بلدی بگو
ضمنا این Function چکار می کنه؟

mazoolagh
یک شنبه 23 مرداد 1390, 15:21 عصر
این تابع معکوس کاری رو که قبلا کردین انجام میده و باید در محیط اکسس اجرا بشه.
با کمک این تابع میتونین در هر متن، اعدادی رو که تغییر دادین به شکل اولیه اش برگردونین.

راه منطقی همین هست که قبلا هم اشاره شد:
اعداد در دیتابیس باید بصورت عدد ذخیره بشن ... حداقل اگر متن هست نباید در متن اصلی تغییر بدین؛ که شما اینکار رو میکنین. هر تغییری خواستین بدین موقع نمایش هست.

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