PDA

View Full Version : افزایش اتوماتیک ردیف



tabarestan
دوشنبه 24 اسفند 1388, 09:30 صبح
چگونه میشود یک ردیف اتوماتیک به ازای هر رکورد ثبت شده افزایش پیدا کند
با تشکر

Felony
دوشنبه 24 اسفند 1388, 09:34 صبح
سوالتون نامفهوم هست ، یک ردیف به کجا اضافه بشه ؟

Jozef
دوشنبه 24 اسفند 1388, 10:07 صبح
من که متوجه نشدم
گفته شما دو حالت داره.
1 : اگر میخواین ردیف اضافه کنین از یه فیلد ID استفاده کنین.
2 : اگر میخواین تعداد سطرهای جدول رو در یه رکورد داشته باشید، باید بعد از هر ثبت یا حذف، رکورد مورد نظر را آپدیت کنین.

حسین شهریاری
دوشنبه 24 اسفند 1388, 10:36 صبح
سلام

بهتر بود توي بخش بانكهاي اطلاعاتي در دلفي مطرح ميكرديد!

يه فيلد محاسباتي از نوع integer ايجاد كنيد و كد زير را در رويداد OnCalcField مربوط به كنترل مربوطه(چه كوئري و چه تيبل) بنويسيد:


Adotable1.fieldbyname('id').asinteger:=Adotable1.R ecNo;
if Adotable1.fieldbyname('id').asinteger<0 then
Adotable1.fieldbyname('id').asinteger:=Adotable1.f ieldbyname('id').asinteger*(-1);

چون اولين ركورد را به دلايلي 1- بر ميگر دونه شرط اظافه شد.

موفق باشيد

tabarestan
دوشنبه 24 اسفند 1388, 11:18 صبح
سلام

بهتر بود توي بخش بانكهاي اطلاعاتي در دلفي مطرح ميكرديد!

يه فيلد محاسباتي از نوع integer ايجاد كنيد و كد زير را در رويداد OnCalcField مربوط به كنترل مربوطه(چه كوئري و چه تيبل) بنويسيد:


Adotable1.fieldbyname('id').asinteger:=Adotable1.R ecNo;
if Adotable1.fieldbyname('id').asinteger<0 then
Adotable1.fieldbyname('id').asinteger*(-1);

چون اولين ركورد را به دلايلي 1- بر ميگر دونه شرط اظافه شد.

موفق باشيد
ضمن تشکر از پاسخ شما
نام فیلد ردیف در بانک اکسس row است من نمی خواهم دستی هرردیف را وارد کنم میخواهم وقتی که ورود اطلاعات شد و ذخیره گردید برای ورود اطلاعات بعدی خود ROW یکی اضافه شود و دستورات شمارا انجام دادم و در سطر سومی در موقع اجرا میماند

حسین شهریاری
دوشنبه 24 اسفند 1388, 12:23 عصر
سلام

به نمونه اي كه قرار دادم نگاه كنيد.به همون روشي است كه گفتم .البته سطر سوم را اصلاح كردم.

واما اگه خودتون به طور فيزيكي فيلد توي اكسس تعريف كردين(كه من با وجود روش فوق اصلا توصيه نميشه) بايد توصط يه كوئري بياين و بزرگترين مقدار اون فيلد را گرفته و با يه عدد يك جمع و ازش استفاده كنيد.

Adoquery1.sql.text:='select max(row) as maxno from tablename';
Adoquery1.close;
Adoquery1.open;
if Adoquery1.fieldbyname('maxno').asinteger=null then
adotable1.fieldbyname('row').asinteger:=1
else
adotable1.fieldbyname('row').asinteger:=adoquery1. fieldbyname('maxno').asinteger + 1;

كد فوق بايد بعد از عمل Insert يا قبل از Post انجام شود.حتي ميتواند يه زير برنامه باشد.