PDA

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



vsamsami
سه شنبه 15 مرداد 1387, 21:37 عصر
سلام
میخواستم ببینم چه جوری برنامه یک شمارنده اتوماتیک رو برای یکی از فیلدهای جدول در فرم access بنویسم. لطفا کمکم کنید.................

رضا جاسبی
سه شنبه 15 مرداد 1387, 23:24 عصر
خیلی ساده. یک فیلد تعریف کن و نوعش رو AutoNumber انتخاب کن.

مهدی قربانی
سه شنبه 15 مرداد 1387, 23:50 عصر
سلام
میخواستم ببینم چه جوری برنامه یک شمارنده اتوماتیک رو برای یکی از فیلدهای جدول در فرم access بنویسم. لطفا کمکم کنید.................
سلام
اگر مي خواين با كد نويسي اين شمارنده رو داشته باشيد با استفاده از ركوردست و تابع حلقه البته روشهاي ديگه اي هم قابل استفاده هست كه بستگي داره به سليقه و طراحي برنامه تون .

hamed_air_line
پنج شنبه 17 مرداد 1387, 12:46 عصر
سلام
میخواستم ببینم چه جوری برنامه یک شمارنده اتوماتیک رو برای یکی از فیلدهای جدول در فرم access بنویسم. لطفا کمکم کنید.................

اگر منظورت از شمارنده یک فرم باشه که مثل یک تایمر کار کنه و زمان بندازه باید گزینه( Time Interval ) را در فرم را برابر با 1 قرار بدی و بعد در قسمت ( On Timer ) به فیلدت دستور شمارنده را بدی مثال a = 1 بعد به( On Timer ) بگی a+1
امید وارم که بدردت بخوره:لبخندساده:

vsamsami
شنبه 19 مرداد 1387, 21:37 عصر
سلام
از این که سعی داشتید منو راهنمایی کنید ممنونم
من میخوام یک شمارنده داشته باشم که کار aoutnumber (یعنی به ازای هر رکورد فیلد مورد نظر یکی اضافه بشه)
رو انجام بده ولی با برنامه نویسی . اگه ممکنه برنامه اش رو برام بزارید و دیگه اینکه چه جوری میشه از طریق برنامه به محتویات یک فیلد از فرم دسترسی پیدا کرد و تغییر دادیا ...
باز هم ممنون لطفادر این زمینه کمکم کنید

مهدی قربانی
یک شنبه 20 مرداد 1387, 11:23 صبح
سلام
در مورد سئوال اول :
يك نمونه ساده از الگوريتم شماره گذاري :


Private Sub nam_AfterUpdate()
Dim dbs As Database
Dim rst As Recordset
If Not IsNull(Me.id) Then
Exit Sub
Else
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("table1")
If rst.RecordCount = 0 Then
Me.id.Locked = False
Me.id.Value = 1
Else
rst.MoveLast
Me.id.Value = rst.Fields("id") + 1
End If
End If
Me.id.Locked = True
End Sub

در مورد سئوال دوم كاملتر توضيح بديد و بفرمائيد چه پروسه اي رو مي خوايد انجام بديد .

نمونه فايل مرتبط :
به رخداد After Update‌ فيلد nam توجه كنيد

هادی2020
سه شنبه 22 مرداد 1387, 15:48 عصر
دوست عزیز فایل ضمیمه شما دارای یه مشکله و اونم اینه که وقتی رکوردی مثلا رکورد یکی به آخری را حذف می کنی بعد از درج یه رکورد جدید، شماره رکورد پاک شده را ایجاد می کنه که تکراری نیست ولی بعد از درج مجدد یه رکورد دیگه شماره ای که ایجاد می کنه برابر با شماره آخرین رکورد هستش که تکراریه!؟

مهدی قربانی
سه شنبه 22 مرداد 1387, 17:56 عصر
نمونه اصلاح شد

vsamsami
سه شنبه 22 مرداد 1387, 22:22 عصر
با سلام خدمت آقای قربانی از اینکه منو راهنمایی کردید خیلی ممنونم و در ضمن فایلی که برام گذاشتید خیلی خوب بود. ولی من میخوام برنامه ام چیزی مثل برنامه زیر باشه که از کتاب محمود زرگر برداشتم ولی مشکل داره

error میده . در قسمت:

(([dd = val(rec.[row

حال سوال ها:

1-دفعه پیش هم پرسیدم که دسترسی به فیلد ها از طریق برنامه نویسی چه جوری هست مثلا در برنامه برای دسترسی به محتویاتrow از طریقrec چطوریه؟

آیا rec.[row درسته؟

2- اگه این برنامه نواقص داره لطفا ذکر کنید چون تو کتاب همین رو نوشته بود و من هم که زیاد وارد نیستم مثلاً چرا اینجا dd رو تعریف نکرده و یا strdd...



Dim rec As Recordset

Set rec = Me.RecordsetClone

If rec.RecordCount > 0 Then

rec.MoveLast

dd = Val(rec.[row])

Else

dd = 0

End If

dd = dd + 1

strdd = LTrim(RTrim(Str(dd)))

Me!row = strdd





در ضمن یک مشکلی که برنامه شما داره اینه که اگه کاربر 8 تا رکورد داشته باشه و سپس اون بخواد رکورد 3 رو حذف کنه ، بعد بهنگام ایجاد رکورد جدید با شماره تکراری در num

روبه رو میشه.
باز از توجهتان ممنونم.

مهدی قربانی
سه شنبه 22 مرداد 1387, 23:55 عصر
میخوام برنامه ام چیزی مثل برنامه زیر باشه که از کتاب محمود زرگر برداشتم ولی مشکل دارهنمونه برنامه اي كه گذاشتم شبيه به همين كدها عمل مي كنه .


در ضمن یک مشکلی که برنامه شما داره اینه که اگه کاربر 8 تا رکورد داشته باشه و سپس اون بخواد رکورد 3 رو حذف کنه ، بعد بهنگام ایجاد رکورد جدید با شماره تکراری در num
روبه رو میشه.
من كه چك كردم مشكلي نبود بجاي يك ركورد چند ركورد رو حذف كردم ولي در ركوردهاي جديد شماره تكراري ثبت نشد !


دفعه پیش هم پرسیدم که دسترسی به فیلد ها از طریق برنامه نویسی چه جوری هست مثلا در برنامه برای دسترسی به محتویاتrow از طریقrec چطوریه؟دوست عزيز سئوالتون مفهوم نيست اين دسترسي براي چه عملياتي بايد صورت بگيره ، ببينيد در واقع باستناد كدهايي كه گذاشتيد rec در اينجا يك نوع ركوردست فرم هست كه روي حافظه قرار ميگيره و row هم احتمالاً نام فيلديه در همون فرمي كه عمليات در اون انجام ميشه ( ثبت شماره ) اين قطعه كد با استفاده از ركوردست ميره اطلاعات آخرين ركورد فيلد row‌ رو در فرم ميخونه و بعد از انجام عمليات ، شماره جديد رو در ركورد جديد ثبت ميكنه .
نهايتاً پيشنها مي كنم براي آشنايي با VBA به اين تاپيك سري بزنيد :
http://www.barnamenevis.org/forum/showpost.php?p=506983&postcount=53