PDA

View Full Version : نمايش 4 رقم سمت راست يك عدد



hentjanson
یک شنبه 23 تیر 1387, 16:28 عصر
سلام من عددي اينطوري وارد بانك ميكنم .
3-314-477-964-978 اينو وارد بانك مي كنم حالا مي خوام موقع نمايش در dbgrid فقط 3-314 نمايش داده بشه ميشه راهنماييم كنيد در اين مورد ؟

Hsimple11
یک شنبه 23 تیر 1387, 17:12 عصر
رکورد مورد نظر را بصورت String از دیتابیس دریافت کنید و برای جداسازی از دستور Copy استفاده کنید. این دستور سه پارامتر دارد. رشته مورد نظر، شماره کاراکتری که کپی از آنجا شروع میشود و تعداد کاراکترهایی که عمل کپی ادامه پیدا میکند. نتیجه همان تکه ای خواهد بود که میخواهید.

hentjanson
یک شنبه 23 تیر 1387, 17:36 عصر
ميشه در صورت امكان مثالي تو اين رابطه بزنيد

Hsimple11
یک شنبه 23 تیر 1387, 17:48 عصر
Copy('Hamed',3,3);

نتیجه :

med

hentjanson
یک شنبه 23 تیر 1387, 17:56 عصر
مرسي دوست من
يك سوال براي نمايش همچين موضوعي براي dbgrid بايد چكار كرد اخه dbgrid مقدارشو از بانك ميگيره ؟
چطور عدد به اينصورت در بيار براي نمايش ؟

Hsimple11
یک شنبه 23 تیر 1387, 18:08 عصر
چون ورودی تابع Copy رشته است باید فیلدتان از نوع رشته ای باشد و با متد AsString دریافت کنید. یا با InttoStr و نظایر آن ، رکوردها را به رشته تبدیل کنید.

SYNDROME
یک شنبه 23 تیر 1387, 18:08 عصر
مرسي دوست من
يك سوال براي نمايش همچين موضوعي براي dbgrid بايد چكار كرد اخه dbgrid مقدارشو از بانك ميگيره ؟
چطور عدد به اينصورت در بيار براي نمايش ؟
معادل دستور Copy در SQL دستور Substring است.


substring(Field1,1,4)

موفق باشید

hentjanson
یک شنبه 23 تیر 1387, 18:27 عصر
متوجه نشدم ميشه بگيد چطور اينكارو بكنم ميشه يك مثالي بزنيد

Hsimple11
یک شنبه 23 تیر 1387, 21:14 عصر
ایشون که مثال زدند. تفاوتی ندارد. SubString نیز همانند Copy عمل میکند با این تفاوت که دیگر نیازی به گرفتن فیلد مورد نظر ندارید و مسقیما از داخل دیتابیس رکوردها را Copy میکنید.

hentjanson
یک شنبه 23 تیر 1387, 21:23 عصر
ببين من اينو نفهميدم من data soucre جدول dbgrid رو به يك adotable وصل مي كنم . پس از اينرو همه اطلاعات مستقيم به جدول مياد و نمايش داده ميشه .
حالا سوال من اينه تو اين روند اينك كد هايه شما رو كجا بايد بنويسم

اصغر (پآچ)
یک شنبه 23 تیر 1387, 21:43 عصر
سلام دوست من

ببین روی Query یا Table که اطلاعاتت رو میگیره راست کلیک کن و ...Edit Fields رو انتخاب کن حالا در پنجره باز شده Alt+F رو بزن اسم فیلد هات میاد حالا روی فیلد شابک کلیک کن و در رویداد OnGetText اون دستور Copy یا SubString که دوستان گفتند رو به صورت زیر بنویس


var
Shabak: String;
begin
Shabak := AdoTabel1.FieldByName('Shabak').AsString;
Shabak := Copy(Shabak, 13, 5);
Text := Shabak;
end;


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

hentjanson
یک شنبه 23 تیر 1387, 21:59 عصر
مرسي دوست من راستي من يك چيزو رو هنوز نفهميدم روند كار شما عالي بود .
سوالم اينه تعداد كاراكتر ها 8 رقمه مثل اين 85479632 من مي خوام حالا 4 رقم اخر نمايش داده بشه روند اين چطوريه (Shabek, 7, 4); اين قسمت رو چطور بايد بنويسم كه 4 رقم اخر نمايش داده بشه يك توضيحي در اين مورد ميديد ؟

اصغر (پآچ)
یک شنبه 23 تیر 1387, 22:14 عصر
سلام دوست من

ببین دستور به این صورت عمل می کنه:

متغییر های داخل پرانتز از سمت چپ به راست: اسم متغییری که می خواهی از چیزی رو کپی بگیری، شماره حرفی که می خواهی کپی گرفتن از اون آغاز بشه، تعداد حروفی که می خوای کپی گرفته بشه

حالا اگه یه عدد 8 رقمی داری که می خوای 4 عدد آخر نمایش داده بشه باید اینجوری بنویسی


Shabak := Copy(Shabak, 5, 4);


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

SYNDROME
یک شنبه 23 تیر 1387, 22:17 عصر
دوست عزیز شما دستور زیر را در aDO می نویسید و آن را Open می کنید.


Select *
From Tbl_Test

جدول Tbl_Test شامل فیلد Name و Family و Date است.
حالا من می خواهم سال مربوط به Date را داشته باشم پس :


Select *,Substring(Date,1,4) Year
From Tbl_Test

حالا شما یک ستون دیگر به نام Year دارید که چهار رقم سال مربوط به Date را در خود قرار داده است.
موفق باشید

Hsimple11
یک شنبه 23 تیر 1387, 22:18 عصر
مرسي دوست من راستي من يك چيزو رو هنوز نفهميدم روند كار شما عالي بود .

دوست عزیز تمام دوستان در 12 پست همین را داشتند می گفتند!
موفق باشی...

hentjanson
یک شنبه 23 تیر 1387, 22:24 عصر
با تشكر از اساتيد مشكلم حل شد .

mohsen_r
دوشنبه 24 تیر 1387, 08:35 صبح
با اجازه اساتيد
چون ايشون ميخوان از سمت راست عدد را بردارند
از اين كد راحتتر نيست
كد:
[code]
RightStr (table.Fields[0].AsString,4);
[code/]

Hsimple11
دوشنبه 24 تیر 1387, 13:58 عصر
فرقی نمیکند.

sql_qassem
دوشنبه 24 تیر 1387, 18:10 عصر
یه روش دیگه هم می گه از :‌ onGetText , OnSetText برای اون فیلد مورد نظر استفاده کنی

tefos666
چهارشنبه 26 تیر 1387, 19:30 عصر
از تابع MidStr هم میتونی کمک بگیری



midstr (table.Fields[0].AsString,0,4)i


سوالی بود در خدمتم - یا علی :لبخند:
success is doing , not wishing