PDA

View Full Version : جدا کردن سه رقم سه رقم فیلدهای عددی



AHTahan
پنج شنبه 22 بهمن 1388, 17:22 عصر
می خواستم فیلد پول سه رقم سه رقم با , جدا بشه
نمیخواستم که از MaskEdit استفاده کنم چون , ها قبل از تایپ نشون داده میشن
میخوام وقتی رقم چهارم وارد شد خودش با , جدا کنه
در آخر هم نمیخوام تو جدول دیتابیس , ها ذخیره بشه و فقط عدد ذخیره بشه

در صورت امکان طبق Delphi 7 توضیح بدید

سعید صابری
پنج شنبه 22 بهمن 1388, 17:42 عصر
جستجو كن عزيز. هم كامپوننت هست و هم تابع و ........

AHTahan
جمعه 23 بهمن 1388, 08:05 صبح
من چیز درست حسابی که به دردم بخوره تو این سایت پیدا نکردم
اگه شما سراغ داری برام لینک بذار

amirtofighi
جمعه 23 بهمن 1388, 08:38 صبح
سلام
این هم کدش


function AddComma(snum : string) : string;
var
l, i : integer;
s : string;
begin
i := 1;
l := length(snum);
while i <= l do
begin
s := snum[l - i + 1] + s;
if (i mod 3 = 0) and (i <> l) then
s := ',' + s;
i := i + 1;
end;
result := s;
end;

end.

برا اینکه تو بانک اطلاعاتی قرارش بدید بدون کاما، راههای زیادی هست
مثلا با این روش میتونید کاما رو حذف کنید


var
S : String;
begin
S := '123,456,789';
S := StringReplace(S, ',', '', [rfReplaceAll]);
end;

سعید صابری
جمعه 23 بهمن 1388, 09:21 صبح
سلام
این هم کدش


function AddComma(snum : string) : string;
var
l, i : integer;
s : string;
begin
i := 1;
l := length(snum);
while i <= l do
begin
s := snum[l - i + 1] + s;
if (i mod 3 = 0) and (i <> l) then
s := ',' + s;
i := i + 1;
end;
result := s;
end;

end.برا اینکه تو بانک اطلاعاتی قرارش بدید بدون کاما، راههای زیادی هست
مثلا با این روش میتونید کاما رو حذف کنید


var
S : String;
begin
S := '123,456,789';
S := StringReplace(S, ',', '', [rfReplaceAll]);
end;


نيازي به اين كار نيست يكي از دوستان در سايت يك كامپوننت نوشته كه ديگه نياز به كدنويسي نيست (جستجو كنيد پيداش مي كنيد) (http://www.barnamenevis.org/forum/showthread.php?t=95972). يا مي تونيد از كامپوننت TMS استفاده كنيد edit اون هم چنين قابليتي را داره

AHTahan
جمعه 23 بهمن 1388, 11:44 صبح
ممنون از توضیحاتتون

حالا اگه بخوای یه فیلد رو تو خروجی به صورت جدا جدا شده نشون داد از چه تابع یا کامپوننتی باید استفاده کرد

حسین خانی
جمعه 23 بهمن 1388, 12:09 عصر
ممنون از توضیحاتتون

حالا اگه بخوای یه فیلد رو تو خروجی به صورت جدا جدا شده نشون داد از چه تابع یا کامپوننتی باید استفاده کرد

با سلام :لبخندساده:
اگر منظور از خروجی استفاده از DBGrid باشه می توانید اینکار و انجام بدهید :
بر روی ADoTable یا ADOQuery مورد نظر خود کلیک راست نموده و گزینه Fields Editor را انتخاب نمائید .
در پنجره باز شده در بین فیلدها ، فیلدی که نوع داده Currency دارد را انتخاب و از Propreti آن حالت DisplayFormat را اینطور ###,###,### مقداردهی نمائید .
با اینکار میتوانید نتیجه را در DBGrid مربوطه ببینید .
موفق باشید ...

AHTahan
جمعه 23 بهمن 1388, 16:03 عصر
من گزینه DisplayFormat رو پیدا نمیکنم

فکر کنم قبلا هم تو سایت این رو دیده بودم ولی DisplayFormat رو پیداش نکرده بودم

Mahmood_M
جمعه 23 بهمن 1388, 17:10 عصر
من گزینه DisplayFormat رو پیدا نمیکنم

فکر کنم قبلا هم تو سایت این رو دیده بودم ولی DisplayFormat رو پیداش نکرده بودم
روی ADOTable دو بار کلیک کنید در پنجره ای که باز میشه راست کلیک کنید و گزینه Add Field رو انتخاب کنید و همه فیلدهای جدول رو انتخاب کنید و Add کنید ، حالا در لیست فیلدها هر فیلدی رو که انتخاب می کنید در Object Inspector خصوصیاتش رو می بینید که Display Format هم یکی از اونها هست ( از بالا ششمی ) ...

موفق باشید ...

AHTahan
جمعه 23 بهمن 1388, 18:33 عصر
مثل این که برای من وجود نداره
شاید چون در Delphi 7 SE استفاده میکنم!!

نسخه SE حجم کمتری داره

pezhvakco
شنبه 24 بهمن 1388, 17:05 عصر
یه نگاه به این لینک ها بنداز :
http://www.barnamenevis.org/forum/sh...d.php?t=194511
http://www.barnamenevis.org/forum/sh...d.php?t=194197
http://barnamenevis.org/forum/showpo...93&postcount=3

display format وقتی تو خاصیت های یک فیلد هست که نوع آن عددی باشد .

AHTahan
یک شنبه 25 بهمن 1388, 12:18 عصر
ممنون

من فیلد رو از نوع Text تو Access مشخص کرده بودم که بتونه اعداد بزرگ رو تو خودش جا بده

فعلا که کار من با تابع AddComma که amirtofighi (http://barnamenevis.org/forum/member.php?u=131951) معرفی کردن راه افتاد

mrm0101
دوشنبه 26 بهمن 1388, 01:02 صبح
سلام .

برای جدا کردم اعداد بصورت سه رقم بعضی از اساتید روشهایی را پیشنهاد می کنن که عدد را به رشته با خاصیت جدا کننده سه رقم تبدیل می کنه و این برای محاسبات بعدی مشکل ساز است .

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


ابتدا نوع فیلد عددی (int , float ,money ) تنظیم نمایید . فرض می کنیم نام فیلد price است

حال در فرم روی DataSource در قسمت خاصیت onDataChange کلیک کنید و کد زیر را وارد نمایید

( ADOQuery1.FieldByName('Price') as TNumericField ).DisplayFormat:='###,###,### ';





procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
( ADOQuery1.FieldByName('Price') as TNumericField ).DisplayFormat:='###,###,###';
end;

با ارزوی موفقیت

AHTahan
چهارشنبه 28 بهمن 1388, 19:24 عصر
سلام .

برای جدا کردم اعداد بصورت سه رقم بعضی از اساتید روشهایی را پیشنهاد می کنن که عدد را به رشته با خاصیت جدا کننده سه رقم تبدیل می کنه و این برای محاسبات بعدی مشکل ساز است .

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


ابتدا نوع فیلد عددی (int , float ,money ) تنظیم نمایید . فرض می کنیم نام فیلد price است

حال در فرم روی DataSource در قسمت خاصیت onDataChange کلیک کنید و کد زیر را وارد نمایید

( ADOQuery1.FieldByName('Price') as TNumericField ).DisplayFormat:='###,###,### ';





procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
( ADOQuery1.FieldByName('Price') as TNumericField ).DisplayFormat:='###,###,###';
end;

با ارزوی موفقیت

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


S := StringReplace(S, ',', '', [rfReplaceAll]);

kamran749
یک شنبه 15 اردیبهشت 1392, 07:04 صبح
سلام
من کدهایی برای اینکه اعداد را ۳ رقم ، ۳ رقم از هم جدا کند را دارم و همچنین کدهایی برای اینکه اعداد را به صورت حروف بنویسد. و مشکلی هم در استفاده جداگانه آنها ندارم. ولی اگر این دو کد را با هم ادغام کنم ، مشکل پیدا میکند و فقط ۳ رقم اول را حروفی می نویسد و خطا می دهد.لطفا مرا راهنمایی کنید یا کدی برای من بنویسید که در یک ادیت تکست اعداد ۳ رقم ، ۳ رقم از هم جدا شوند و در روی لیبل مقابل آن ، همین اعداد جدا شده به صورت حروفی نوشته شود.