PDA

View Full Version : سوال: الگوریتم تقسیم بانکaccsess



tabarestan
دوشنبه 27 مهر 1388, 13:22 عصر
با سلام
چگونه میشود یک بانک 200000 رکوردی را طوری تقسیم کرد که موقع چاپ از رکورد 1 تا 100000را در قسمت اول صفحه A4 و از 100000 به بعد را درقسمت دوم A4 یعنی از 100001 شروع به چاپ کند
با تشکر

دلفــي
دوشنبه 27 مهر 1388, 14:38 عصر
با سلام
چگونه میشود یک بانک 200000 رکوردی را طوری تقسیم کرد که موقع چاپ از رکورد 1 تا 100000را در قسمت اول صفحه A4 و از 100000 به بعد را درقسمت دوم A4 یعنی از 100001 شروع به چاپ کند
با تشکر

شما برای این منظور می تونید از دو Select مجزا استفاده کنید و در اولیRowNum را کوچکتر از 100000 گرفته و در دومی بزرگتر از این عدد قرار دهید .

این دستور برای اوراکل کار میکنه ولی در اکسس نه !
برای اکسس هم می تونید با مدیریت RecNo و دستور Top به نتیجه دلخواه برسید .

حسین شهریاری
سه شنبه 28 مهر 1388, 09:54 صبح
سلام!!

استفاده از کدهای زبان SQL محدود به هیچ پایگاه داده ای نیست و Access , غیره از نظر پرسش و پاسخ فرقی ندارن.

شما میتونید از adoquery استفاده کنید و رنج مربوطه را در دستور select تنظیم نمایید.
البته اگه جدول مربوطه شما فیلدی مثل Code یا id داشته باشه اینطوری عمل کنید:
adoquery.1.sql.text:='select * from table1 where code between 1 and 100000'
adoquery1.closde
adoquery1.open
بعد محتویات dataset را چاپ کنید و بعد مجددا رنج را از 100001 تا 200000 بدین.البته میدونید که من کدمربوطه را استاتیک نوشتم برای داینامیک شدن جای دستور اول بنویس:
adoquery.1.sql.text:='select * from table1 where code between '+edit1.text+' and '+edit2.text
همیشه سعی کنید کدی که مینویسین داینامیک و انعطاف پذیر باشه!!

امیدوارم بدردبخوره!
موفق باشید.

tabarestan
شنبه 02 آبان 1388, 08:54 صبح
سلام!!

استفاده از کدهای زبان SQL محدود به هیچ پایگاه داده ای نیست و Access , غیره از نظر پرسش و پاسخ فرقی ندارن.

شما میتونید از adoquery استفاده کنید و رنج مربوطه را در دستور select تنظیم نمایید.
البته اگه جدول مربوطه شما فیلدی مثل Code یا id داشته باشه اینطوری عمل کنید:
adoquery.1.sql.text:='select * from table1 where code between 1 and 100000'
adoquery1.closde
adoquery1.open
بعد محتویات dataset را چاپ کنید و بعد مجددا رنج را از 100001 تا 200000 بدین.البته میدونید که من کدمربوطه را استاتیک نوشتم برای داینامیک شدن جای دستور اول بنویس:
adoquery.1.sql.text:='select * from table1 where code between '+edit1.text+' and '+edit2.text
همیشه سعی کنید کدی که مینویسین داینامیک و انعطاف پذیر باشه!!

امیدوارم بدردبخوره!
موفق باشید.
ضمن تشکر از پاسخی که دادید
منظور ما این است که دو قسمت را همزمان شروع به چاپ کند
با تشکر اگر بیشتر یادم بدهی

حسین شهریاری
شنبه 02 آبان 1388, 09:15 صبح
سلام دوست گرامی!!

حالا دیگه ساده تر شد.شما بیاین و ازدو تا Query مجزا استفاده کنین.واطلاعات هرکدوم را چاپ کنید.
یا این که اعمال را پشت سر هم انجام بدین یعنی:اول از ابتدا تا میانه اطلاعات را لیست کرده و دستور چاپ بدین و دوم رنج را از نصف تا انتها و مجددا دستور چاپ بدین.
ضمنا برای این گونه کارها که خیلی هم پیچیدگی ندارند سعی کنین از کوئیک ریپورت استفاده کنین.چون کار باهاش خیلی راحته!!

موفق باشی.اگه بازم جواب نداد بگین تا یه نمونه براتون بفرستم.

hadisalahi2
شنبه 02 آبان 1388, 10:51 صبح
اول اینکه شما نمیخواهید بانک رو تقسیم کنید ، بلکه میخواهید جدول رو تقسیم کنید.
دوما این پرسش رو باید در قسمت گزارشات مطرح میکردید.
سوما از چه کامپوننتی برای گزارش گیری استفاده میکنید؟
چهارما فکر کنم خود FR برای این کارها تنظیمات رکورد داشته باشه.