PDA

View Full Version : چرا int64 در دیتا بیس اکسس به صورت منفی یه عدد دیگه ذخیره می شه.



mf4arman24
یک شنبه 18 مرداد 1394, 21:24 عصر
با سلام.
من یک دیتا بیس اکسس دارم که وقتی یک تکستی رو در محیط برنامه دلفی به عدد int64 تبدیل می کنم و ذخیره می کنم در دیتا بیس اکسس. بعد از ذخیره به صورت یک عدد منفی ذخیره می شه.البته زمانی که عدد خیلی بزرگ باشه.
فکر کنم تا یک میلیارد رو مشکل نداره . انگار که عدد از یک مقدار بشتر می شه . این شکلی که تصویرش رو پایین می زارم ذخیره می شه. چه کار کنم هم فیلدم عددی باشه و هم اینکه درست ذخیره بشه. چون اعدادی که از طرف کاربر وارد می شند بزرگ هستند.
تصاویر دیتابیس اکسس رو هم براتون می زام.
134096134095


این کد تبدیل از تکست به int64 و ذخیره اون

ADOQuery1.Active :=true;

ADOQuery1.Insert ;
ADOQuery1.FieldByName ('jamekol').AsLargeInt:=StrToInt64(sedit21.Text);
ADOQuery1.Post;
ADOQuery1.Active:=false;


showmessage('مبلغ جدید ثبت شد');

یوسف زالی
دوشنبه 19 مرداد 1394, 00:00 صبح
سلام. نوع داده currency رو امتحان کنید.

mf4arman24
دوشنبه 19 مرداد 1394, 00:41 صبح
سلام. نوع داده currency رو امتحان کنید.

با تشکر از شما. کجا از currency استفاده کنم. میشه دقیق تر توضیح بدید.
چطور و کجا تعریفش کنم

یوسف زالی
دوشنبه 19 مرداد 1394, 00:43 صبح
نوع فیلد به جای number در اکسس

mf4arman24
دوشنبه 19 مرداد 1394, 06:21 صبح
تو خط زیر به جای AsLargeInt و StrToInt64 از چی استفاده کنم.


ADOQuery1.FieldByName ('jamekol').AsLargeInt:=StrToInt64(sedit21.Text);

mf4arman24
دوشنبه 19 مرداد 1394, 06:41 صبح
نوع فیلد به جای number در اکسس

با تشکر از پاسخ شما ولی باز خطا می ده. هم یکبار دیتا بیس رو تغییر دادم و هم یکبار AsLargeInt به AsCurrency تغییر دادم . ویکبار هم هر دو رو هم زمان. باز خطا میده. راهکار چیه. البته می تونم کل دیتا بیس رو به تکست تبدیل کنم ولی اشکال اینه که اگر بتونم طرف ر ومتقاعد کنم که دیتا بیس رو تغییر بدیم.و از تکست استفاده کنم و فقط موقع فراخوانی به int64 تبدیل کنم. ولی مشکل بزرگش اینه که وقتی فیلد از نوع متنی باشه نمی شه براش در کوئیک ریپورت ،در
QRDBText نمی شه براش mask تعیین کرد که سه رقم سه رقم جدا کنه.
http://barnamenevis.org/showthread.php?504304-%D8%AA%D8%B9%DB%8C%DB%8C%D9%86-DisplayFormat-%D8%A8%D8%B1%D8%A7%DB%8C-QRDBText-%D8%AF%D8%B1-%D8%AD%D8%A7%D9%84%D8%AA%DB%8C-%DA%A9%D9%87-%D9%81%DB%8C%D9%84%D8%AF-%D8%A8%D9%87-%D8%B5%D9%88%D8%B1%D8%AA-%D8%B1%D8%B4%D8%AA%D9%87-%D8%AF%D8%B1-%D8%AF%DB%8C%D8%AA%D8%A7-%D8%A8%DB%8C%D8%B3-%D8%A7%DA%A9%D8%B3%D8%B3-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D8%B4%D8%AF%D9%87&p=2250542#post2250542

یوسف زالی
دوشنبه 19 مرداد 1394, 11:20 صبح
به جا AsLargeInt بنویسید Value تست کنید.