PDA

View Full Version : سوال: ساحت تکس باکس شماره ردبف در فرم



samuel*
جمعه 23 دی 1390, 19:37 عصر
میخوام تو یه فرم تکس باکسی ایجاد کنم تا شماره ردیف رکوردهام باشه و چنانچه مثلا ردیف شماره4رکوردش پاک شد از3به 5 نره همون ترتیب سریالیش رو داشته باشه

ممنون دوستان

strong46202
جمعه 23 دی 1390, 20:55 عصر
میشه وقتی 4 پاک شد از همه رکوردهای بعدی یکی کم بشه؛ مثل یه جور شیفت ......ببخشید اگه جوابم آماتوری بود چون تازه کارم

samuel*
جمعه 23 دی 1390, 20:59 عصر
تو فبلدهای با فرمت autonumber این اتفاق میفته

بهزادانلاین
جمعه 23 دی 1390, 22:40 عصر
ميتونيد رويه زير را قبل از ثبت ركورد فرا خواني كنيد.

()Private Sub InID
Dim NextID As Long
If IsNull(DMax("[id]", "custumer")) Then
NextID = 1
Text1.Value = NextID
Else
NextID = DMax("[id]", "custumer") + 1
Text1.Value = NextID
End If
End sub

Abbas Amiri
جمعه 23 دی 1390, 23:21 عصر
چنانچه تکست باکس موردنظر به فیلدی ازجدول بایند شده باشد کاملا امکان پذیراست . اما چنانچه این فیلد بعنوان کلید اصلی باشد حتما باید تمهیدات لازم جهت کنترل جدول Child بکاربرده شود

samuel*
دوشنبه 26 دی 1390, 23:02 عصر
من میخواستم تو فیلد ردیف در فرم یک فرمول شرطی بنویسم که اگر فیلد نام کالا (NamKala)خالی باشه ردیف هم عددی رو تو خودش نیاره
میشه راهنمایی کنید
ممنون

Abbas Amiri
دوشنبه 26 دی 1390, 23:39 عصر
در ایونت Form_Dirty عبارت ID = CurrentRecord را درج کنید واز ایونت Current حذف کنید

emami.sie
سه شنبه 27 دی 1390, 10:40 صبح
سلام
یک نمونه هم من تو آرشیوم داشتم که به نظرم از جامعیت بیشتری برخورداره و به راحتی در تمامی فرمها قابل فراخوانی هست... (مثلا نیازی به فیلد ID در جداولی که می خواد فرمش شماره ردیف داشته باشه نیست (در نمونه استادمون جناب امیری))
میشه گفت این ماژول کاری مثل Running Sum توی گزارش رو انجام میده و اصلا ارتباطی به نوع فرم و جداول مرتبطش نداره...
کافیه یک Text Box به فرمتون اضافه کنید و داخلش بنویسید : =RowNum([Form])
یا علی

samuel*
سه شنبه 27 دی 1390, 19:45 عصر
:قلب::بوس:.............

royasaz_bam
چهارشنبه 28 دی 1390, 03:36 صبح
مطالب مربوطه همه عزیزان صحیح ولی مشکل این دوست عزیز بسیار جالبه بگذارید جور دیگر عنوان شود یک رکورد ردیف داریم که اعداد آن به ترتیب 1 الی 10 ثبت کردیم حال اگر عدد 5 حذف شد عدد پایانی ما عدد 9 شود و این در حالی است که ردیف های ما به ترتیب از یک تا 9 سریالی و با فاصله یک عدد باشند حال بماند چگونه آنها را دفعه اول و هنگام ثبت چگونه ردیف کرده ایم زیرا تابع عنوان شده بعد از حذف عدد 5 پون که بیشترین مقدار را میگیرد رکورد بعدی را از 11 شروع میکند و این در حالی گه ما 9 رکورد بیشتر نداریم به گمانم باید هنگام ردیف دادن ار dcount نیز استفاده شود یعنی هنگامی ماکزیمم را میگیریم اگر از count کمتر بود به دنبال عدد حذف شده (5) بگردد و از آن به بعد مجددا ردیف کند اگر کسی بتواند در تابع ذکر شده بالا این شرط و نحوه درج اصلاحات را عنوان و توضیح دهد حق استادی را بر من گذاشته ... البته ایده دوستمان یعنی اینکه از عدد حذف شده به بعد هر کدام یک عدد کم کند هم بسیار جالب است ولی چگونه و با چه تابعی

royasaz_bam
چهارشنبه 28 دی 1390, 04:39 صبح
در تا بع زیر جدولی به نام kalaداریم که ردیف آن در فیلدی به نام redif ثبت میشه
Dim sql As String, rst As Recordset

sql = "select max(redif) as Max_Code from kala "
Set rst = CurrentDb.OpenRecordset(sql, dbOpenSnapshot)

trk = Nz(rst!Max_Code, 0)

redif= trk + 1
rst.Close

با تابع فوق ردیف به صورت سریالی و پشت سر هم ایجاد میشه تقریبا برابر با ماژون ذکر شده در بالا حال به طور مثال ( قبلا 10 ردیف ثبت کرده ایم و ردیف 5 را حذف) با استفاده از تابع dcount به جای max متوانیم تعداد رکوردها را نیز داشته باشم (9 رکورد) سپس تعداد رکوردها با بیشترین عدد ردیف که قبلابا هیمن ماژوال بدست آورده ایم (عدد 10) چک میکینم اگر کمتر بود پیامی مبنی بر یک ردیف حذف شده داده شود سپس از آخرین و یا بیشترین ردیف ثبت شده (عدد 10) یک واحدکم کند (برابر با 9) و با تابع loockup به دنبال عدد گم شده در ردیف بگردد اگر پیدا شد یعنی ردیف ماقبل حذف نشده مجددا از عدد کم شده (9) یک واحد کم کند و باز جستجو کند ان قدر ادامه دهد تا به عدد حذف شده دست یابد(عدد 5) سپس با استفاده از دستورا رکوردست ،ادیت یک ردیف بعداز عدد حذف شده (ردیف6) را باز و یک واحد کم (ردیف 6 برابر با 5 میشود) و برای ردیفهای بعدی نیز تکرار کند تا به پایان برسد که این امر با دستورات رکوردست ، ادیت امکان پذیر است حال کسی که تجربه در کد نویسی داره ابن عبارات عنوان شده را در ادامه تابع ناقص اینجانب حقیر به زبان آدمی در بیاره و حق استادی را بر من حقیر بگذاره یا اینکه راه حلی مناسبتر و استاندارتر پیدا کند نه مثل من دستشو دور سرش بگردونه لقمه را توی دهنش آخه من همبن راحی را که عنوان کرده ام را نیز نمیتوانم به ماژول تبدیل کنم زیرا با خیلی از دستورات و توابع و نحوه تایپشان آشنا نیستم ولی میدانم می شود با تشکر ......
آ

r_v_K = ch + 1
rst.Close

arpachi
چهارشنبه 30 فروردین 1391, 10:32 صبح
با سلام و تشکر از شما.
کد بالا برای اضافه کردنردیف بسیار مناسب وصحیح کارمیکند.
لطفا در صورت امکان کد مربوط به کاهش و مرتب کردن دوباره فیلد شمار ردیف را هم لطف کنید.
ممون.