PDA

View Full Version : نوع bigint



SADAF
شنبه 18 شهریور 1385, 08:05 صبح
فیلدی در اسکیو ال دارم با نوع BIGINT . وقتی این فیلد را می خواهم در دلفی ورود اطلاعات کنم متغیر خود را از نوع INT64 گرفتم . ولی وقتی مقداری بالاتر از 15 رقم می زنم در بانک 0 ذخیره می کند . باید از جه TYPE یی استفاده کنم ؟

SADAF
دوشنبه 20 شهریور 1385, 06:54 صبح
یعنی هیچ کس تا حالا با BIGINT کار نکرده ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟

حمیدرضاصادقیان
دوشنبه 20 شهریور 1385, 08:07 صبح
دوست عزیز یک مشکل دیگه ایی وجود داره .


Integer (whole number) data from -2^63 (-9223372036854775808) through 2^63-1 (9223372036854775807). Storage size is 8 bytes.


اگه دقت کنی میبینی سایز bigint 19 رقمه.پس مشکلت یک جای دیگه هست احتمالا.

Saeid59_m
دوشنبه 20 شهریور 1385, 13:27 عصر
منهم به این مشکل برخوردم و هر کاری کردم نشد ولی اگه از نوع Real‌ در دلفی استفاده کنی نتیجه قدری بهتره

ghabil
دوشنبه 20 شهریور 1385, 15:20 عصر
میشه بگی با چه دستوری در دیتابیس ذخیره میکنی ؟ (کدش رو بزار)

SADAF
سه شنبه 21 شهریور 1385, 08:51 صبح
سلام دوستان
1. ماکسیمم عددی که bigint در sql میگیره دقیقا برابر است با ماکسیمم عددی که int64 تو دلفی میگیره و هر دو 19 رقم هستند .
2. من یه عدد در یک Edit از کاربر میگیرم . با دستور StrToInt64 این مقدار رو به پارامتر کلاسم میدم . و بعد هم با دستور Int64ToStr به رشته Insert می چسبونم . و سپس این دستور Insert که تو دلفی ساخته شده در sql اجرا می شه .
عین همین کار رو با نوع Real و دستورات StrToFloat , FloatToStr هم انجام دادم که در این حالت لحظه ای که StrToFloat می کنیم عدد را E دار می کند .

؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ چه کار کنم ؟؟؟؟؟

ghabil
سه شنبه 21 شهریور 1385, 10:22 صبح
سلام دوستان
1. ماکسیمم عددی که bigint در sql میگیره دقیقا برابر است با ماکسیمم عددی که int64 تو دلفی میگیره و هر دو 19 رقم هستند .
2. من یه عدد در یک Edit از کاربر میگیرم . با دستور StrToInt64 این مقدار رو به پارامتر کلاسم میدم . و بعد هم با دستور Int64ToStr به رشته Insert می چسبونم .

فعلا و فقط برای اینکه دقیقا متوجه بشیم اطلاعات رو داری کجا از دست میدی بجای اینکه یکبار به Int64 تبدیل کنی همون String رو مستقیم با دستور SQL بزن توی دیتابیس (حتی بدون ساختن Parametr و Value دادن پارامتر) یعنی یک چیزی اینطوری :


CommandText:= ' Insert into Table name (BIgIntFiled) Values(' + Edit1.Text + ')';

بعد نتیجه رو بگو تا مرحله بعد رو تست کنیم.

SADAF
چهارشنبه 22 شهریور 1385, 12:25 عصر
سلام دوستان
مشکلی که من اینجا عنوان کردم رو بچه های بخش برنامه نویسیم برخورده بودند و خودم کنترل نکرده بودم .دیشب که نهایتا خودم این مشکل رو کنترل کردم دیدم اصلا مشکلی وجود نداره و با کد زیر به راحتی می تونیم مقدار 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;

ظاهرا خودم سر کار بودم توسط همکارانم . . .
ممنون از همه