فیلدی در اسکیو ال دارم با نوع BIGINT . وقتی این فیلد را می خواهم در دلفی ورود اطلاعات کنم متغیر خود را از نوع INT64 گرفتم . ولی وقتی مقداری بالاتر از 15 رقم می زنم در بانک 0 ذخیره می کند . باید از جه TYPE یی استفاده کنم ؟
فیلدی در اسکیو ال دارم با نوع BIGINT . وقتی این فیلد را می خواهم در دلفی ورود اطلاعات کنم متغیر خود را از نوع INT64 گرفتم . ولی وقتی مقداری بالاتر از 15 رقم می زنم در بانک 0 ذخیره می کند . باید از جه TYPE یی استفاده کنم ؟
یعنی هیچ کس تا حالا با BIGINT کار نکرده ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟
دوست عزیز یک مشکل دیگه ایی وجود داره .
Integer (whole number) data from -2^63 (-9223372036854775808) through 2^63-1 (9223372036854775807). Storage size is 8 bytes.
اگه دقت کنی میبینی سایز bigint 19 رقمه.پس مشکلت یک جای دیگه هست احتمالا.
Telegram : @SQL_Server
منهم به این مشکل برخوردم و هر کاری کردم نشد ولی اگه از نوع Real در دلفی استفاده کنی نتیجه قدری بهتره
میشه بگی با چه دستوری در دیتابیس ذخیره میکنی ؟ (کدش رو بزار)
سلام دوستان
1. ماکسیمم عددی که bigint در sql میگیره دقیقا برابر است با ماکسیمم عددی که int64 تو دلفی میگیره و هر دو 19 رقم هستند .
2. من یه عدد در یک Edit از کاربر میگیرم . با دستور StrToInt64 این مقدار رو به پارامتر کلاسم میدم . و بعد هم با دستور Int64ToStr به رشته Insert می چسبونم . و سپس این دستور Insert که تو دلفی ساخته شده در sql اجرا می شه .
عین همین کار رو با نوع Real و دستورات StrToFloat , FloatToStr هم انجام دادم که در این حالت لحظه ای که StrToFloat می کنیم عدد را E دار می کند .
؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ چه کار کنم ؟؟؟؟؟
فعلا و فقط برای اینکه دقیقا متوجه بشیم اطلاعات رو داری کجا از دست میدی بجای اینکه یکبار به Int64 تبدیل کنی همون String رو مستقیم با دستور SQL بزن توی دیتابیس (حتی بدون ساختن Parametr و Value دادن پارامتر) یعنی یک چیزی اینطوری :نوشته شده توسط SADAF
CommandText:= ' Insert into Table name (BIgIntFiled) Values(' + Edit1.Text + ')';
بعد نتیجه رو بگو تا مرحله بعد رو تست کنیم.
سلام دوستان
مشکلی که من اینجا عنوان کردم رو بچه های بخش برنامه نویسیم برخورده بودند و خودم کنترل نکرده بودم .دیشب که نهایتا خودم این مشکل رو کنترل کردم دیدم اصلا مشکلی وجود نداره و با کد زیر به راحتی می تونیم مقدار Bigint را ذخیره کنیم
procedure TForm1.BitBtn2Click(Sender: TObject);
var a,b:Int64;
begin
a:=StrToInt64(Edit1.Text);
ADOCommand1.CommandText:='Insert Into Table1 Values('+IntToStr(a)+')';
ADOCommand1.Execute;
end;
البته برای FieldByName کردن باید از روش زیر استفاده کرد :
procedure TForm1.BitBtn4Click(Sender: TObject);
var a,b:Int64;
begin
a:=ADOQuery1.FieldByName('a').Value;
end;
ظاهرا خودم سر کار بودم توسط همکارانم . . .
ممنون از همه