چطور میتونیم بدون مراجعه به جدولی که کومبوموجوددرفرم به ان مربوط است ازطریق همین کومبواطلاعات جدیدرا دران جدول وارد کنیم؟باتوجه به رابطه موجود
Printable View
چطور میتونیم بدون مراجعه به جدولی که کومبوموجوددرفرم به ان مربوط است ازطریق همین کومبواطلاعات جدیدرا دران جدول وارد کنیم؟باتوجه به رابطه موجود
اگه ممکنه دوستان راهنمائی کنند.
اگه این کارممکن نیست بفرمائید راه دیگرش چییه؟
من دقیقا منظورتو نمی گیرم اگه ممکنه با یه مثال شرح بدی
باسلام:چطورمیتونم مشخصات مثلااقای D راازطریق کومبو fd در فرم به جدول t1 وارد کنم ؟ توضیح بیشتر اینکه ما فقط اطلاعاتی که در خودکومبو موجوده یکی را میتونیم انتخاب کنیم واگر مثلا اسم جدیدی را بخواهیم واردکنیم پیام ارور میده ومامجبوریم اول بریمجدول بعداز وارد کردن اطلاعات جدید میتونیم اونو از کومبو انتخاب کنیم حال ایا میشه فیل fn را ازکومبو اپدیت کرد؟ اگه لطف کردی و جواب دادی یه خورده باتوضیح بفرمائید
اگر درست متوجه منظورتون شده باشم :
شما اول اطلاعات در جدول وارد وتعریف می کنید یعنی در فرم تعاریفتون امکان یه سری محدودیتها
یا شرایط باشه که با صدور پیغامهای خاص به کاربر اگاهی بده سپس از طریق کمبو که به ان جدول بوند شده اطلاعات را به یه جدول دیگر وارد می کنید پس طبیعی که اول اطلاعات تعریف بشه تا محدودیتها وشرایط خاص اعمال بشه بعد از طریق کمبو وارد جدول دیگه بشه که به هنگام گزارش گیری یا محاسبات مشکلی بوجود نیاد
حال اگه کمبو شما فقط بخاطر راحتیه میتونید خاصیت limit to list ان را به no تنظیم کنید تا اطلاعاتی جدیدی وارد کنید ولی در جدول بوند شده موجود نخواهد بود
نمیگم راهی وجود نداره که جدول هم با اطلاعات کمبو اپدیت بشه روش کار میکنم اگه به نتیجه رسیدم براتون نمونه میذارم
دقیقامنظورمن وارد کردن اطلاعات به جدولی است که کومبو بهش بوندشده......
نمیشه اینکارو بکنی ؟
اگه اشتباه متوجه شدم بگو
من راهش را پیدا کردم بزودی نمونه برات میذارم
یه راه برای اضافه کردن رکورد به یک table که فرم براساس اون table کار نمی کنه استفاده از این کد نویسی در onclick یه command botton است
(Set db = DBEngine(0)(0
("set rst = db.OpenRecordset("main
DoCmd.GoToRecord , , A_NEWREC
rst.AddNew
rst![name] = Combo36
rst.Update
End Sub
با این کد مقدار وارده در Combo36 را به فیلد name از table با اسم main اضافه می کنیم.
امیدوارم بدردت بخوره
اگر کمبو داری سه ستون بود یعنی name,cod,job
از جدول main که به ان بوند شده بود
اول یه کوئری میسازم که در ناحیه شرط سه فیلد مربوطه :
forms!form1!combo36
forms!form1!combo36.column(1
forms!form1!combo36.column(2
سپس با شرط ifتعداد ان را در جدول کنترل می کنیم )(در رویدادafterupdate کمبوباکس
(Set db = DBEngine(0)(0
("set rst = db.OpenRecordset("main
if dconut("name","main)=0 then
DoCmd.GoToRecord , , A_NEWREC
rst.AddNew
rst![name] = Combo36
rst![code]=combo36.column(1)
rst![job]=combo36.column(2)
rst.Update
End IF
End Sub
در column(1 اگر جواب نداد عدد یک را به دو یا سه جواب عوض کن و همینطور برای ستون 2
شاپرک عزیز من هم ازروش پیشنهادی شمافعلادربرنامه ام استفاده میکنم وهدف من حذف این پروسه ازبرنامه به کمک دوستان کدنویس میباشد. ضمناکددوستمان موحخوش را بکاربردم متاسفانه در خط سوم ارور داد. باز منتظرکمک دوستان میمانم
دوست عزیزمصطفی! منم مثل خودت طرفدار نمونه فایل هستم کاش نمونه ای که خودت اینکارو کردی میزاشتی .......بااینکه توقع بیش از اندازه است!
چشم
چون دوست عزیزمون mohkhosh زحمت کشیدند وکد گذاشتند منمهم فکر کردم از کد ایشون استفاده کنم تا دودستگی ایجاد نشه برای استفاده از این کدهاهم باید یسری رفرنسها را تیک بزنی وتیک بعضی را برداری
من بشخصه از روش های استفاده می کنم که قابل استفاده برای همه باشه با استفاده از کدهای دیگه براتون انشاله یه فایل میذارم
table1:id,esm
table2:row ,nam,code
nam بوند شده بهesm از table1
دوتا کوئری :
q1:
SELECT Table1.id, Table1.Esm
FROM Table1
WHERE (((Table1.Esm)=[forms]![f1]![nam]));
q2:
INSERT INTO Table1 ( Esm, id )
SELECT forms!f1!nam AS Expr1, DCount("*","table1")+1 AS Expr2;
دستور برای رویدا gotfocus کمبو (nam)که خودکار باز بشه ونیازی به کلیک روی زبانه یا فشردن کلید f4 نباشه :
Private Sub nam_GotFocus()
nam.Dropdown
End Sub
دستور برای افتر اپدیت کمبو
Private Sub nam_AfterUpdate()
If DCount("esm", "q1") = 0 Then
DoCmd.OpenQuery "q2"
End If
End Sub
اگه بشه پیغامی که موقع اضافه کردن میده حذف کرد یا فارسی کرد خیلی خوبه
اگهtools/option/(find/edit)/confirmنقل قول:
بشه پیغامی که موقع اضافه کردن میده حذف کرد یا فارسی کرد خیلی خوبه
تیک زیر را بردار
Actionquery
مصطفی عزیز: اززحمتی که کشیدین صمیمانه تشکر میکنم زنده باشی ازاینکه با متانت کامل علم خودرادراختیار دیگران میزاری! من مسئله رااز یک ذاویه دیگر در یک تایپینگ جدید مطرح میکنم که فکرمیکنم به درد خیلی ها خواهد خورد.
ممنونم دوست عزیز
تجربه خوبی بود منبعد منهم در برنامه هام از ان استفاده میکنم ولی برای شما نمدونم :
بالاخره اونچیزی که مد نظرت بود شد
شاپرک محترم
اگر اون کاری که گفتم بکنی پیغام فارسی را هم خودت می تونی بذاری مثلا" مورد فوق در جدول تعاریف وجو ندارد ایا مایلید اضافه گردد"
با تشکر از آقا مصطفی و بقیه دوستان
من یه کمبو باکس دارم که مشابه نمونه آقا مصطفی درست شده و یه باتون که کوئری شماره 2 ایشون رو اجرا می کنه اما مشکل اینه که وقتی باتون رو می زنم یا بهتره بگم وقتی هر آیتم دیگری رو در فرم می زنم
پیغام می ده که این تکست در لیست شما موجود نیست
در حالتی که بخواهیم از طریق یک کوئری مقداری را به کمبو اضافه کنیم یه مشکل وجود داره که حتی تو نمونه آقا مصطفی هم مشکل داره اونم اینه که مقدار اضافه شده در کمبو باکس قرار نمی گیره هر چند به جدول مورد نظر و جدول اصلی اضافه میشه . و تا فرم رو نبندیم و دوباره باز نکنیم توی کمبو باکس دیده نمیشه آیا راهی هست که بشود این مشکل را حل کرد ؟؟
ممنون
سلام
فكر مي كنم اگر كامبو يا فرم رو Refresh يا Requery كنيد مشكل برطرف بشه .
درسته دوست من اما با این کار اطلاعات وارد شده در کمبوهای قبلی رو هم باید از نو وارد کرد
اما در مورد سوال اول :
باید تو properties کمبو باکس ، limit to list برابر no باشه ولی برای من نمیشه
سوال من هم در مورد همین نکته بود اگر بخوام از اول بگم همون نمونه آقا مصطفی رو در نظر بگیرید
table1:id,esm
table2:row ,nam,code
nam بوند شده بهesm از table1
به نظر اگر nam رو به esm از table 1 بوند کنیم ، قانون اول نرمال سازی رو رعایت نکردیم چون طبق این قانون فیلدهایی که مقادیر تکراری( nam در جدول 2) می گیرند باید به جدول دیگری منتقل شوند ( esm در جدول 1) و مقادیر کلید اصلی جدول 1 ( id ) در جدول 2 قرار داده بشه و نه خود مقادیر فیلد منتقل شده (اگر اشتباه می کنم لطفا راهنمایی کنید ). بخاطر همین من id رو در جدول 2 قرار دادم وبرای اینکه در هنگام وارد کردن اسامی در جدول 2 مجبور به حفظ کردن id ها نشوم و در واقع به جای اعداد با اسامی کار کنم ، در جدول 2 row source را SELECT Table1.id, Table1.Esm FROM Table1 قرار دادم و bound column = 1 و column count =2 و column widths را 0 گذاشتم اما یک مشکل دارم و آن اینست که هر کار می کنم در این وضعیت نمی شود limit to list را no کرد .