PDA

View Full Version : جلوگیری از ورود داده تکراری



MBTJKQC
سه شنبه 27 بهمن 1388, 14:14 عصر
با سلام خدمت همه دوستان

برنامه ای نوشتم و میخوام که برای یک فیلد مشخص مقدار اون برابر مقدار رکورد قبلی باشه تا زمانیکه داده جدید وارد بشه و این سیکل تکرار بشه البته دوستان دقت کنند منظور من استفاده از مقدار پیش فرض نیست

مثلاً برای وارد کردن اطلاعات فاکتورهای فروش هر سازمان در هر فاکتور یک تاریخ داریم و چند قلم کالا و من میخوام که وقتی تاریخ رو وارد کردم تا تاریخ جدید مقدار اون برابر مقداری باشه که آخرین بار وارد کردم
البته در تاپیکی که قبلاً ایجاد کرده بودم آقای smderfan تابع dlast رو بصورت زیر برام بعنوان جواب گذاشتن که من ازشون ممنونم ولی نتونستم از این تابع استفاده کنم چون مفهوم سه عنصر اون رو درک نکردم

dlast ( expression, domain, [criteria])

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

dadsara
سه شنبه 27 بهمن 1388, 14:30 عصر
سلام
فرم شما Boundاست یا خیر؟

MBTJKQC
سه شنبه 27 بهمن 1388, 14:50 عصر
منظورتون از bond چیه ؟
از form برای ورود اطلاعات به داخل table استفاده میکنم

dadsara
سه شنبه 27 بهمن 1388, 15:14 عصر
دوست عزیز
شما می توانید هم فرم خود را مستقیما به جدول مربوطه متصل کنید(Bound) و یا اینکه اطلاعات از طریق کد نویسی در جدول ذخیره شود (Unbound)

alirezabahrami
سه شنبه 27 بهمن 1388, 15:15 عصر
با سلام خدمت همه دوستان





برنامه ای نوشتم و میخوام که برای یک فیلد مشخص مقدار اون برابر مقدار رکورد قبلی باشه تا زمانیکه داده جدید وارد بشه و این سیکل تکرار بشه البته دوستان دقت کنند منظور من استفاده از مقدار پیش فرض نیست


مثلاً برای وارد کردن اطلاعات فاکتورهای فروش هر سازمان در هر فاکتور یک تاریخ داریم و چند قلم کالا و من میخوام که وقتی تاریخ رو وارد کردم تا تاریخ جدید مقدار اون برابر مقداری باشه که آخرین بار وارد کردم
البته در تاپیکی که قبلاً ایجاد کرده بودم آقای smderfan تابع dlast رو بصورت زیر برام بعنوان جواب گذاشتن که من ازشون ممنونم ولی نتونستم از این تابع استفاده کنم چون مفهوم سه عنصر اون رو درک نکردم


dlast ( expression, domain, [criteria])



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

سلام
ببين نمونه ضميمه خواسته ات را برآورده مي كند !
موفق باشيد

MBTJKQC
یک شنبه 02 اسفند 1388, 11:58 صبح
نه اصلاً کار نمیکرد

alirezabahrami
یک شنبه 02 اسفند 1388, 14:15 عصر
برنامه ای نوشتم و میخوام که برای یک فیلد مشخص مقدار اون برابر مقدار رکورد قبلی باشه تا زمانیکه داده جدید وارد بشه و این سیکل تکرار بشه البته دوستان دقت کنند منظور من استفاده از مقدار پیش فرض نیست



سلام
نه اصلاً كار نمي كرد يعني چه ؟ به استناد خواسته خودتان ( در جمله بالا ) ميخواهيد در يك فیلد مشخص مقدار اون برابر مقدار رکورد قبلی باشه تا زمانیکه داده جدید وارد بشه و این سیکل تکرار بشه . خوب در نمونه ارائه شده يك فيلد مشخص با عنوان مقدار در نظر گرفته شده كه شما در هر بار كه بر روي كمند باتن ثبت جديد كليك مي كنيد شماره ركورد قبلي ثبت ميشود و اگر آخرين مقدار وارد شده را تغيير بدهيد مقدار جديد در رجيستري ذخيره ميشود و در ثبت هاي جديد مقدار تغيير يافته بعنوان مقدار جديد ثبت ميشود .
علي ايحال بفرمائيد ايراد نمونه فوق كجاست تا نسبت به رفع آن اقدام شود
موفق باشيد

انگوران
یک شنبه 02 اسفند 1388, 14:25 عصر
احتمالاً منظور دوستمون اينه :
در رويداد exit فيلد مورد نظر بنويس

me.field name.defultvalue=me.fieldname

MBTJKQC
دوشنبه 03 اسفند 1388, 12:37 عصر
آقای alirezabahrami ممنون از جوابتون
فایل رو وقتی تو سیستم خودم دانلود و اجرا کردم جواب داد خیلی خیلی ممتشکرم ولی اونچی که مهمه اینه که چطوری اون برنامه رو نوشتن یعنی کدوم شیء و تو کدوم قسمت از خصوصیات و چی نوشتین
ممنون میشم اینو هم جواب بدین

alirezabahrami
دوشنبه 03 اسفند 1388, 12:50 عصر
آقای alirezabahrami ممنون از جوابتون
فایل رو وقتی تو سیستم خودم دانلود و اجرا کردم جواب داد خیلی خیلی ممتشکرم ولی اونچی که مهمه اینه که چطوری اون برنامه رو نوشتن یعنی کدوم شیء و تو کدوم قسمت از خصوصیات و چی نوشتین
ممنون میشم اینو هم جواب بدین
سلام !
راستش متوجه منظور شما نشدم ، ممكنه قدري بيشتر توضيح بدهيد كه در خصوص كدام قسمت از نمونه فوق توضيح بدهم . آيا منظورت كد هاي زير است ؟


DoCmd.GoToRecord , , acLast
Text8 = meghdar
SaveSetting "My Project", "Setting", "Text8 ", Text8
DoCmd.GoToRecord , , acNewRec
Text8 = GetSetting("My Project", "Setting", "Text8 ")
meghdar = Text8


موفق باشيد

MBTJKQC
دوشنبه 03 اسفند 1388, 17:09 عصر
ببخشيد تو متن بالا اشتباهات نگارشي داشتم
منظورم اين بود كه چكار كنم تا texbox چنين خاصيتي داشته باشه - اين فرمول رو كجا تعريف كنم

alirezabahrami
دوشنبه 03 اسفند 1388, 18:11 عصر
ببخشيد تو متن بالا اشتباهات نگارشي داشتم
منظورم اين بود كه چكار كنم تا texbox چنين خاصيتي داشته باشه - اين فرمول رو كجا تعريف كنم

سلام
با توجه به مطالب مطرح شده توسط جنابعالي در پست شماره 1 :


برنامه ای نوشتم و میخوام که برای یک فیلد مشخص مقدار اون برابر مقدار رکورد قبلی باشه تا زمانیکه داده جدید وارد بشه و این سیکل تکرار بشه البته دوستان دقت کنند منظور من استفاده از مقدار پیش فرض نیست

مثلاً برای وارد کردن اطلاعات فاکتورهای فروش هر سازمان در هر فاکتور یک تاریخ داریم و چند قلم کالا و من میخوام که وقتی تاریخ رو وارد کردم تا تاریخ جدید مقدار اون برابر مقداری باشه که آخرین بار وارد کردم


شما به هر حال براي وارد كردن اطلاعات جديد بايد از يك كمند باتن بعنوان كنترل استفاده كنيد ;يعني با كليك بر روي كنترل فوق از كاربر مي پرسيد كه آيا قصد اضافه نمودن ثبت جديد را دارد يا نه ، در صورت پاسخ مثبت بلافاصله مقدار فيلد شما معادل مقدار قبلي مي گردد و اگر خواستيد در همين جا بعد از وارد كردن تاريخ ، مقدار آن را عوض كنيد . پس نتيجه مي گيريم كه اين دستور بعد از تأييديه كاربر مبني بر ثبت جديد بايد بكار رود ( نمونه بنده را مجدداً دانلود كن بر اساس يك پيغام آن را اصلاح كردم ).
و اينكه سؤال كرده ايد كه چكار كنم تا texbox چنين خاصيتي داشته باشه ، بايد عرض كنم textbox فاقد چنين خاصيتي است كه بدون وصل بودن به يك بانك اطلاعاتي مقداري را در خود ذخيره نمايد مگر با استفاده از دستور فوق .
موفق باشيد

arman2000
شنبه 28 فروردین 1389, 13:07 عصر
سلام
اگر بخواهيم بيشتر از يك تكست باكس، اين خاصيت را داشته باشند دستورات چه تغييري مي كنند؟

جعفر88
یک شنبه 29 فروردین 1389, 09:55 صبح
البته دوستان دقت کنند منظور من استفاده از مقدار پیش فرض نیست

مثلاً برای وارد کردن اطلاعات فاکتورهای فروش هر سازمان در هر فاکتور یک تاریخ داریم و چند قلم کالا و من میخوام که وقتی تاریخ رو وارد کردم تا تاریخ جدید مقدار اون برابر مقداری باشه که آخرین بار وارد کردم


سلام
اين قسمت از درخواست دوست عزيزمون را كه اين موضوع (همان تاپيك كه اغلب خيلي ازش استفاده ميشه) را مطرح كردن زياد متوجه نشدم ولي همان طوري دوستان ميدونن اگه تو برنامه شون كدي رو براي مقدار پيش فرض يك textbox بنويسن و خاصيت TabStop=No بشه(براي ورود آسان اطلاعات از طريق صفحه كليد) كه مشكل حله . حالا شايد منظور ، روشي غير از اينه يا نه؟ اگه بيشتر توضيح بدن ممنون ميشيم ما هم استفاده بكنيم .

جعفر88
یک شنبه 29 فروردین 1389, 10:12 صبح
و اينكه سؤال كرده ايد كه چكار كنم تا texbox چنين خاصيتي داشته باشه ، بايد عرض كنم textbox فاقد چنين خاصيتي است كه بدون وصل بودن به يك بانك اطلاعاتي مقداري را در خود ذخيره نمايد مگر با استفاده از دستور فوق .

البته به نظرم يك textbox وسيله ايي براي ورود اطلاعات هست نه محلي براي ذخيره آن و همان طوري مستحضريد در صورتي كه به يك فيلد از جدولي مرتبط نباشه براي تعريف مقدار پيش فرض(براي استفاده از آن در هنگام بارگذاري مجدد فرم) خاصيت DefaultValue ميتونه هدف ما را تامين كنه . البته بازهم عرض مي كنم كه اين برداشت و نظرم از فرمايش دوستمونه .

arman2000
سه شنبه 31 فروردین 1389, 09:31 صبح
سلام مجدد
اگر بخواهيم بيشتر از يك تكست باكس، اين خاصيت را داشته باشند دستورات چه تغييري مي كنند؟
امكان داره نمونه اي بگذاريد؟

جعفر88
شنبه 04 اردیبهشت 1389, 12:15 عصر
سلام مجدد
اگر بخواهيم بيشتر از يك تكست باكس، اين خاصيت را داشته باشند دستورات چه تغييري مي كنند؟
امكان داره نمونه اي بگذاريد؟
سلام
براي اينكار به نظرم دو راه وجود داره :
1- مي تونيد خاصيت TabStop كادرهاي متني(TextBox) ها رو به No تنظيم كنين .همان طور كه مي دونيد اين عمل باعث مي شه كاربر با زدن كليد اينتر به اونا وارد نشه . و كدي هم براي تغيير احتمالي ( هر وقت كه كاربر خواست ) براي تنظيم مقدار پيش فرض آنها بنويسين .
2- به جاي قسمت اول راه حل فوق مي تونيد يك checkbox براي كنترل فعال يا غير فعال بودن textbox ها جهت ورود داده در فرم قرار بدين اليته اگه تعداد اونا كم باشه اين روش شايد ايده خوبيه ولي در كل روش اول رو من ترجيح مي دم .

arman2000
چهارشنبه 10 شهریور 1389, 16:03 عصر
دوست من منظور از yes(Duplicates OK) در Indexed فیلدی که AutoNumber در نظر گرفته شده است چگونه می تواند داده های تکراری وارد کند؟
یعنی می توان شماره گذاری خودکار داشت ولی شماره های تکراری چطور امکان دارد؟ ما هر وقت که نیاز داشتیم تکرار یک شماره را تعیین می کنیم؟