ورود

View Full Version : مشکل حذف صفر قبل عدد



ali_abbasi22145
چهارشنبه 30 آذر 1384, 12:05 عصر
سلام
من با دستور زیر در DBEdit یا DBRichEdit به کاربر اجازه می دهم که فقط اعداد را بگیرد که و نهایتا در یک
فیلد VarChar در SQL SERVER ذخیره می کنم و اگر صفر قبل عدد زد با رویداد on Exit انرا از بین ببرم:

یعنی اگر کاربر 000123 تایپ کرد بشود 123

On key press در خود DBRichEdit کد زیر نوشتم:

if NOT ( KEY in ['0'..'9']) then
key :=#0

On Exitدر خود DBRichEdit کد زیر نوشتم:

t:=StrToInt(DBRichEdit4.Text);
DBRichEdit4.Text:=IntToStr(t);

وقتی که با تب یا ماوس به DBRichEdit دیگر می روم بعد ذخیره می کنم صفر قبل عدد حذف می شود .
اما مشکل این است که دوباره برمی گردم به DBRichEdit کد نویسی شده دوباره صفر قبل عدد ظاهر می شود.

اَرژنگ
چهارشنبه 30 آذر 1384, 15:18 عصر
این خط را :


DBRichEdit4.Text:=IntToStr(t);

با این خط


DBRichEdit4.Field.AsString := IntToStr(t);

عوض کنید.

mzjahromi
چهارشنبه 30 آذر 1384, 16:10 عصر
کدی که شما بالا نوشتید یه عیب داره و اون هم اینکه اگه اطلاعات رو توش Paste کنیم کاراکتر های غیر عددی فیلتر نمیشه بهتره از Onchange استفاده کنیم. برای اون مشکلی که گفتید هم فکر میکنم روش دوستمون مشکلتون رو حل کنه

ali_abbasi22145
چهارشنبه 30 آذر 1384, 16:53 عصر
کدی که شما بالا نوشتید یه عیب داره و اون هم اینکه اگه اطلاعات رو توش Paste کنیم کاراکتر های غیر عددی فیلتر نمیشه بهتره از Onchange استفاده کنیم. برای اون مشکلی که گفتید هم فکر میکنم روش دوستمون مشکلتون رو حل کنه

سلام
با تغییر دستور در ویداد onexit مشکلم حل شد اما روش شما که در رویدداد onchange که گفتید چون من با DBNavigtor کار می کنم معلوم نیست کاربر در مد insert است یا edit و این باید چک شود و error
که در عکس می بینید را نشان می دهد اگر می شود کد برنامه را اینجا کامل بگویید که در حالت کار با کلیبورد هم مشکل نداشته باشد.

mzjahromi
چهارشنبه 30 آذر 1384, 17:05 عصر
اول اینکه در مد Edit یا Insert بودن رو میتونید با


if ADOTable1.State=dsEdit Then

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

اَرژنگ
چهارشنبه 30 آذر 1384, 19:50 عصر
از OnBeforePost استفاده کنید. یک پروجکت را ضمیمه کردم.
در ضمن همانطوری که استاد ذوالقدر فرمودند برایه چک کردن مد Edit یا Insert بودن رو میتونید با:


if Table1.State in [dsEdit,dsInsert] then

ali_abbasi22145
شنبه 03 دی 1384, 14:51 عصر
اول اینکه در مد Edit یا Insert بودن رو میتونید با


if ADOTable1.State=dsEdit Then

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

ali_abbasi22145
شنبه 03 دی 1384, 14:51 عصر
اول اینکه در مد Edit یا Insert بودن رو میتونید با


if ADOTable1.State=dsEdit Then

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

ali_abbasi22145
سه شنبه 13 دی 1384, 08:55 صبح
سلام
آقا ارژنگ عزیز با فایل project1 نتواستم کار کنم

ali_abbasi22145
پنج شنبه 22 دی 1384, 08:56 صبح
این خط را :


DBRichEdit4.Text:=IntToStr(t);

با این خط


DBRichEdit4.Field.AsString := IntToStr(t);

عوض کنید.

سلام
می شود فرق این دو دستور را بگویید؟؟؟