PDA

View Full Version : رکوردDefault



Fazaeli
چهارشنبه 13 اردیبهشت 1385, 19:01 عصر
دوستان عزیز
چگونه میتوان در سطح فرم مقدار یک رکورد را Default رکورد بعدی قرار داد؟
مثال :آقای محمدی را با مشخصات خاص خود در یک رکورد وارد کردیم وقتی به رکورد بعدی میرویم آقای محمدی بصورت Default در رکورد بعدی تایپ شده باشد تا شخص جدیدی را وارد کنیم
باتشکر

moustafa
چهارشنبه 13 اردیبهشت 1385, 19:31 عصر
در رویداد لاست فوکوس فیلد اخر فرمتون بنویسید

on error goto lable1
docmd.gotorecord acdataform,"formname",acnext
lable1:
docmd.gotorecord acdataform,"formname",aclast
m=name
docmd.gotorecord acdataform,"formname",acnewrec
name=m
یعنی برود به رکورد بعدی اگر خطای صورت گرفت برود به رکورد اخر مقدار اخرین فیلدنام را در mبگذارد وسپس یک رکورد جدید ایجاد کند ومقدار m رادر فیلد نام بگذارد

Fazaeli
چهارشنبه 13 اردیبهشت 1385, 21:14 عصر
در رویداد لاست فوکوس فیلد اخر فرمتون بنویسید

on error goto lable1
docmd.gotorecord acdataform,"formname",acnext
lable1:
docmd.gotorecord acdataform,"formname",aclast
m=name
docmd.gotorecord acdataform,"formname",acnewrec
name=m
یعنی برود به رکورد بعدی اگر خطای صورت گرفت برود به رکورد اخر مقدار اخرین فیلدنام را در mبگذارد وسپس یک رکورد جدید ایجاد کند ومقدار m رادر فیلد نام بگذارد
دوست عزیز
منظور از lable1چیست؟
mنام فیلد است یا نه؟
اگه میشه یک نمونه برام درتاپیک میگذارید ببینم!!!

moustafa
چهارشنبه 13 اردیبهشت 1385, 22:25 عصر
منظور از lable1چیست؟
با کنترل خطاها اشنا نیستی ؟ شی یا کنترل نیست برچسبی که به هنگام خطا برنامه به ان خط هدایت میشه شما میتونی از حروف یا کلمات دلخواه بجای lable1 استفاده کنی

mنام فیلد است یا نه؟
نه عزیز جان یه متغیره و میتوانی ان را با dim تعریف کنی عینه اینکه بگی مقدار فیلدنام اخرین رکورد را بخاطر بسپار حالا یه رکورد جدید تشکیل بده چیزی را که بخاطرسپردی بذار توفیلدنام رکورد جدید
شما این کدها را کپی کن به رویداد lostfocus اخرین فیلد فرمتون سپس بجای formname نام فرمتون وبجای name نام فیلدی را که می خواهی دیفالت بشه بذار حله
این کارها رابکن اگه نشد فایلت رابذار برات درست کنم

Fazaeli
چهارشنبه 13 اردیبهشت 1385, 23:34 عصر
با کنترل خطاها اشنا نیستی ؟ شی یا کنترل نیست برچسبی که به هنگام خطا برنامه به ان خط هدایت میشه شما میتونی از حروف یا کلمات دلخواه بجای lable1 استفاده کنی

نه عزیز جان یه متغیره و میتوانی ان را با dim تعریف کنی عینه اینکه بگی مقدار فیلدنام اخرین رکورد را بخاطر بسپار حالا یه رکورد جدید تشکیل بده چیزی را که بخاطرسپردی بذار توفیلدنام رکورد جدید
شما این کدها را کپی کن به رویداد lostfocus اخرین فیلد فرمتون سپس بجای formname نام فرمتون وبجای name نام فیلدی را که می خواهی دیفالت بشه بذار حله
این کارها رابکن اگه نشد فایلت رابذار برات درست کنم
دوست عزیز دستورات شما را مو به مو انجام دادم ولی باز errorمیده
فایلم رو گذاشتم تا مشکلشو ببینید
متشکرم

moustafa
پنج شنبه 14 اردیبهشت 1385, 10:21 صبح
دررویداد beforeInsert فرم:


DoCmd.GoToRecord acDataForm, "b", acLast
m = Nam
n = ID
k = SPH
DoCmd.GoToRecord acDataForm, "b", acNewRec
Nam = m
ID = n + 1
SPH = k
Nam.SetFocus

End Sub
البته پس از ایجاد رکورد جدید یک دکمه کنار اینتر عددی یا حروفی را فشاربده اطلاعات وارد میشود
فیلد id راهم عددمعمولی کردم که با هر بار یک واحد به ان اضافه میشه

moustafa
یک شنبه 24 اردیبهشت 1385, 11:55 صبح
کامل کردن روش فوق
در روبداد ()GotFocus فیلد اولت یه مقدار را به یکی از فیلدها بدی دیگه نیاز به فشردن کلید اضافی نیست مثلا یه فیلد rowid به جدول و فرمت اضافه کن وخاصیت ویزبل ان را در فرم فالز کن واین کد رادر رویداد ()GotFocus فیلد id بنویس :
rowid=0

mohsenna30ri
یک شنبه 02 مهر 1385, 07:19 صبح
:لبخند: :لبخند: :لبخند: می خواهیم در یک فرم اطلاعاتی را وارد کنیم که اغلب اطلاعات یک فیلد تکراری است مثلا سال تولد اغلب یک فیلد 1366 می باشد وقتی یک نفر با سال تولد 1367 وارد کردیم اکثر افراد بعد از او نیز متولد همین سال 1367 هستند چگونه می توان در یک فرم حالت پیش فرض یک فیلد را برابر آخرین مقدارش قرار داد تا ورود اطلاعات تسریع یابد
توجه: در پنجره پروپرتیز فرم مشخصه ای بنام Default value داریم که قابل تغییر است و در کد فرم هم می توان تغییر داد اما چگونه می توان برابر آخرین مقدار آن فیلد گذاست؟

samaneh_h
یک شنبه 02 مهر 1385, 08:38 صبح
خب شما می‌تونی یک سلکت کوئری ایجاد کنی که مقدار اون تکست باکس رو بذاره last(year)
برو تو کوئری سال رو انتخاب کن از قسمت groupby گزینه last رو انتخاب کن .

hamedinho
یک شنبه 02 مهر 1385, 13:49 عصر
با رعایت قوانین و مقررات سایت و احترام به اساتید سوال رو در عنوان مطرح کردم
اگر لطف کنید و من رو کمک کنید ممنون می شوم

karmand
دوشنبه 03 مهر 1385, 07:33 صبح
هر فردی بنا به سلیقه خودش روشی برای ورود اطلاعات دارد و لی شاید بهتر این است که ما تکست باکسهای ایجاد شده روی فرم را مستقیم به بانک وصل نکنیم و وقتی کاملا از درست بودن اطلاعات مطمعن شدیم با یک کد نویسی در on click یک باتن تکستها را مساوی فیلدها کنیم در این حالت با add newتکستهای شما پاک نمیشود و انهایی را که میخواهید ثابت باشد را با enter رد میکنید حتی می توانید tabstopرا از آنها بگیرید تا سرعت بیشتر شود

mohsenna30ri
دوشنبه 03 مهر 1385, 08:24 صبح
خب شما می‌تونی یک سلکت کوئری ایجاد کنی که مقدار اون تکست باکس رو بذاره last(year)
برو تو کوئری سال رو انتخاب کن از قسمت groupby گزینه last رو انتخاب کن .
منظورتون از تکست باکس چیه؟ ما که تو فرممون اصلا حرفی از تکس باکس نزدیم - تو کوئری هم از قسمت گروپ لاست رو انتخاب کردم اما مشکلی حل نکرد
شاید من منظورتون رو متوجه نمی شم لطفا کمی بیشتر توضیح بدین یا یک مثال ساده بفرستین - مرسی

moustafa
دوشنبه 03 مهر 1385, 09:00 صبح
درجواب اقا حامد:کپی یک فیلد از رکورد اول برای تمام رکورد ها

همون روش بالا این کد رو به اولش اضافه کن :

docmd.GoToRecord acDataForm, "b", acfrist
x=fild1

moustafa
دوشنبه 03 مهر 1385, 11:07 صبح
هر فردی بنا به سلیقه خودش روشی برای ورود اطلاعات دارد و لی شاید بهتر این است که ما تکست باکسهای ایجاد شده روی فرم را مستقیم به بانک وصل نکنیم و وقتی کاملا از درست بودن اطلاعات مطمعن شدیم با یک کد نویسی در on click یک باتن تکستها را مساوی فیلدها کنیم در این حالت با add newتکستهای شما پاک نمیشود و انهایی را که میخواهید ثابت باشد را با enter رد میکنید حتی می توانید tabstopرا از آنها بگیرید تا سرعت بیشتر شود
گذاشتن دکمه های save ,edit, new سرعت از کاربر میگیره در محل کار ما دوبرنامه یکی بدون اون دکمه ها بااکسس و دیگری با اون دکمه ها با دلفی ، کاملا سرعت و راحتی کار نمود پیدا می کنه
البته یه جا استاد عزیزم جناب اقای صارمی فرموده بودند که unbound بهترینه

sarami
دوشنبه 03 مهر 1385, 11:57 صبح
متاسفانه در حالتی که Bound کار میشه کنترل کاربر سخت میشه و درمورد مقایسه هم باید عرض کنم به طراحی بستگی شدیدی داره ......

moustafa
دوشنبه 03 مهر 1385, 12:13 عصر
متاسفانه در حالتی که Bound کار میشه کنترل کاربر سخت میشه
متوجه نشدم سخت میشه یعنی چی ؟
مگه اعتبار سنجی رو خود فیلدها تعریف نمیشه که کاربر در محدوه مجاز اطلاعات رو وارد کنه ؟
ساده ،راحت ،سریع در " bound"
برای عدم ویرایش هم پس از ورود اطلاعات روزانه دستوراتی قرار دادم که در محدوده زمانی یا .... رکوردها رو قفل میکنه

sarami
دوشنبه 03 مهر 1385, 12:27 عصر
تو تجربیاتی که من داشتم error های ناخواسته و پیش بینی نشده که از جمله اون موارده و دیگری اینکه فرمها ایستا میشن و حالت Dynamic ازشون گرفته میشه شما میتونین از فرمهای Unbound چند منظوره استفاده کنین البته گفته های بنده وحی منزل نیست ممکنه تجربه شما و یا نگاهمون باهم تفاوت داشته باشه. هرکدوم رو که کاربر باهاش راحت تره فکر کنم و شما هم باهاش مشکلی نداری میتونه بهترین باشه . تجربه بنده Unbound بهتر بوده بعضی مواقع هم تلفیق این دو چاره ساز تره. در ضمن مشتاقانه منتظر ترجمه ی مقاله ایتالیایی شما هستیم ...:قهقهه: :قهقهه: :متفکر:

moustafa
دوشنبه 03 مهر 1385, 12:33 عصر
در ضمن مشتاقانه منتظر ترجمه ی مقاله ایتالیایی شما هستیم ...
شرمنده استاد، من فرانسه ،اسپانولی ،پرتغالی ،المانی و هندی و چینی وژاپنی بلدم:قهقهه: :قهقهه:

moustafa
دوشنبه 03 مهر 1385, 20:31 عصر
تو تجربیاتی که من داشتم error های ناخواسته و پیش بینی نشده که از جمله اون موارده و دیگری اینکه فرمها ایستا میشن و حالت Dynamic ازشون گرفته میشه

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


select case id
case 1:forms!form1.caption=" فرم ثبت درامد ها "
fild1.visible=false
me.backcolor=12632256
.....
case 2:forms!form1.caption=" فرم ثبت هزینه ها "
fild1.visible=true
me.backcolor=12154621
.....