PDA

View Full Version : سوال: یک کد ساده برای گرفتن خودکار بیشترین عدد به اضافه +1(خواهشا راهنماییم کنید گشتم نبود)



payafar
دوشنبه 18 دی 1391, 13:46 عصر
سلام خیلی خوشحالم که این فروم رو پیدا کردم

3 روز هست که کل فروم رو بالا پایین کردم ولی یه کد ساده رو پیدا نکردم
خیلی احتیاج دارم کمکم کنید


من میخوام اتونامبرم خودکار باشه به صورتی که فانکشنی که نوشته شده بگرده بین شماره های قبلی بیشترین رو پیدا کنه به اضافه 1 کنه اگر نبود اولیش رو برابر مثلا 1000 قرار بده
میخوام این کد رو در قسمت ایونت قبل از ورود اطلاعات وارد کنم

خواهشا این کد را برام بزارید خیلی لازم دارم هرچه زودتر بهتر
خیلی خیلی ممنون

RESMAILY
دوشنبه 18 دی 1391, 21:28 عصر
به نام خدا
با سلام. شايد اينجوري باشد:
intX = Dmax(intID,strTableName)
If isNull(intX) Then
intX= 1000
End if

payafar
سه شنبه 19 دی 1391, 09:58 صبح
ممنون ولی نتونستم از این استفادده کنم
میخوام بیشترین رو وقتی گرفت به اضافه یک کنه
نکته دیگه اینکه من این کد رو در قسمت Before Update فیلد بعدی قرار میدم که به محضی که شروع به وارد کردن اطلاعات کرد اون عدد بگیره
در ضمن اگر لطف کنید واضح تر بگید جای گذاری اسم فیلدها در کد شما رو چطور عوض کنم ممنون میشم ، من در کد نویسی بسیار مبتدیم !!!! خیلی خیلی ممنون
فیلدی که میخوام عدد بگیره WrID هست میخوام وقتی شروع به نوشتن در WrFName کردم بیشترین عدد رو در WrID حساب کنه و به اضافه یک کنه و قرار بده

ممنون

RESMAILY
سه شنبه 19 دی 1391, 21:51 عصر
به نام خدا
با سلام. منظور از intID همان فيلدي است كه مي خواهيد . البته اگر از متغير استفاده نمي كنيد نام فيلد را ميا كوتيشن بگذاريد. مثلا "intID". طبعا strTableName هم به همين روش بايد به كار گرفته شود. نهايتا intX بزرگتين عدد موجود است. خوب اگر بود آن را بعلاوه يك كنيد و اگر هم نبود كه...

payafar
چهارشنبه 20 دی 1391, 13:53 عصر
من یه همچین چیزی توی فیلد بعدی نوشتم

Private Sub WrFName_Before Updat()

intX = DMax("WrID", Wrietr)
If IsNull(intX) Then
intX = 1000
Else: intX = (DMax("WrID", Wrietr)) + 1
End Sub


ولی کار نمی کنه !! اگر میشه واضح تر بگید من مبتدیم

RESMAILY
چهارشنبه 20 دی 1391, 18:59 عصر
به نام خدا
با سلام. اولا كد را اينگونه تغيير دهيدPrivate Sub WrFName_Before Updat()

intX = DMax("WrID", Wrietr)
If IsNull(intX) Then
intX = 1000
Else: intX =intX + 1
End Sub
در ثاني اگر Wrietr نام جدول شماست بايد آن را هم داخل كوتيشن بگذاريد "Wrietr"
اگر كار نكر د بفرماييد تايك نمونه برايتان بسازم.

payafar
پنج شنبه 21 دی 1391, 09:38 صبح
سلام بازم ممنون که وقت میذارید خیلی خیلی ممنون
من کد رو قرار دادم

Private Sub WrFName_BeforeUpdate()
intX = DMax("WrID", "Writer")
If IsNull(intX) Then
intX = 1000
Else: intX = intX + 1
End If
End Sub
اولش به If End گیر میداد گذاشتم دیگه ارور نداد ولی هیچ کاری نمیکنه

لطف میکنید اگر یه نمونه برام بزارید

Abbas Amiri
پنج شنبه 21 دی 1391, 17:11 عصر
سلام
برای این مورد معمولا در خصوصیت Default Value کنترل موردنظر نوشته میشه :
=Nz(DMax("fldName";"tableName");999)+1

RESMAILY
پنج شنبه 21 دی 1391, 22:23 عصر
به نام خدا
با سلام. ضمن تشكر از راهنمايي اقاي اميري. بفرماييد

payafar
جمعه 22 دی 1391, 12:12 عصر
با تشکر از این که وقت میزارید واقعا ممنونم

ولی هنوز مشکلم حل نشد هر دو روش دوستان رو اجرا کردم ولی هیچکدوم درست کار نکرد

فایلی که پیوست کردم دقیقا کاری رو که میخوام نشون میده
میخوام وقتی فیلد WrFName رو پر کرد و خواست بره فیلد بعدی WrID عدد مورد نظرم که بیشترین عدد به اضافه 1 هست رو بگیره

ممنون میشم کمکم کنید!98252

Abbas Amiri
جمعه 22 دی 1391, 12:29 عصر
سلام
کد زیر رو جایگزین کنید و بعدهم جدول رو کامل پاک کنید و فرم رو اجراکنید

Private Sub WrFName_AfterUpdate()
WrID = Nz(DMax("WrID", "Writer"), 999) + 1
End Sub

payafar
جمعه 22 دی 1391, 15:23 عصر
سلام
کد زیر رو جایگزین کنید و بعدهم جدول رو کامل پاک کنید و فرم رو اجراکنید

Private Sub WrFName_AfterUpdate()
WrID = Nz(DMax("WrID", "Writer"), 999) + 1
End Sub

ممنون
درست شد
دستتون درد نکنه!!