PDA

View Full Version : افزودن مستقیم آیتم به کومبو



daglararan
چهارشنبه 17 خرداد 1385, 18:55 عصر
چطور میتونیم بدون مراجعه به جدولی که کومبوموجوددرفرم به ان مربوط است ازطریق همین کومبواطلاعات جدیدرا دران جدول وارد کنیم؟باتوجه به رابطه موجود

daglararan
پنج شنبه 18 خرداد 1385, 08:14 صبح
اگه ممکنه دوستان راهنمائی کنند.

daglararan
جمعه 19 خرداد 1385, 09:34 صبح
اگه این کارممکن نیست بفرمائید راه دیگرش چییه؟

moustafa
جمعه 19 خرداد 1385, 11:11 صبح
من دقیقا منظورتو نمی گیرم اگه ممکنه با یه مثال شرح بدی

daglararan
جمعه 19 خرداد 1385, 14:29 عصر
باسلام:چطورمیتونم مشخصات مثلااقای D راازطریق کومبو fd در فرم به جدول t1 وارد کنم ؟ توضیح بیشتر اینکه ما فقط اطلاعاتی که در خودکومبو موجوده یکی را میتونیم انتخاب کنیم واگر مثلا اسم جدیدی را بخواهیم واردکنیم پیام ارور میده ومامجبوریم اول بریمجدول بعداز وارد کردن اطلاعات جدید میتونیم اونو از کومبو انتخاب کنیم حال ایا میشه فیل fn را ازکومبو اپدیت کرد؟ اگه لطف کردی و جواب دادی یه خورده باتوضیح بفرمائید

moustafa
جمعه 19 خرداد 1385, 20:22 عصر
اگر درست متوجه منظورتون شده باشم :
شما اول اطلاعات در جدول وارد وتعریف می کنید یعنی در فرم تعاریفتون امکان یه سری محدودیتها
یا شرایط باشه که با صدور پیغامهای خاص به کاربر اگاهی بده سپس از طریق کمبو که به ان جدول بوند شده اطلاعات را به یه جدول دیگر وارد می کنید پس طبیعی که اول اطلاعات تعریف بشه تا محدودیتها وشرایط خاص اعمال بشه بعد از طریق کمبو وارد جدول دیگه بشه که به هنگام گزارش گیری یا محاسبات مشکلی بوجود نیاد
حال اگه کمبو شما فقط بخاطر راحتیه میتونید خاصیت limit to list ان را به no تنظیم کنید تا اطلاعاتی جدیدی وارد کنید ولی در جدول بوند شده موجود نخواهد بود
نمیگم راهی وجود نداره که جدول هم با اطلاعات کمبو اپدیت بشه روش کار میکنم اگه به نتیجه رسیدم براتون نمونه میذارم

daglararan
جمعه 19 خرداد 1385, 21:13 عصر
دقیقامنظورمن وارد کردن اطلاعات به جدولی است که کومبو بهش بوندشده......

شاپرک
شنبه 20 خرداد 1385, 09:26 صبح
نمیشه اینکارو بکنی ؟
اگه اشتباه متوجه شدم بگو

moustafa
شنبه 20 خرداد 1385, 15:02 عصر
من راهش را پیدا کردم بزودی نمونه برات میذارم

mohkhosh
شنبه 20 خرداد 1385, 16:03 عصر
یه راه برای اضافه کردن رکورد به یک 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 اضافه می کنیم.
امیدوارم بدردت بخوره

moustafa
شنبه 20 خرداد 1385, 17:12 عصر
اگر کمبو داری سه ستون بود یعنی 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

daglararan
شنبه 20 خرداد 1385, 18:27 عصر
شاپرک عزیز من هم ازروش پیشنهادی شمافعلادربرنامه ام استفاده میکنم وهدف من حذف این پروسه ازبرنامه به کمک دوستان کدنویس میباشد. ضمناکددوستمان موحخوش را بکاربردم متاسفانه در خط سوم ارور داد. باز منتظرکمک دوستان میمانم

دوست عزیزمصطفی! منم مثل خودت طرفدار نمونه فایل هستم کاش نمونه ای که خودت اینکارو کردی میزاشتی .......بااینکه توقع بیش از اندازه است!

moustafa
شنبه 20 خرداد 1385, 20:56 عصر
چشم
چون دوست عزیزمون mohkhosh زحمت کشیدند وکد گذاشتند منمهم فکر کردم از کد ایشون استفاده کنم تا دودستگی ایجاد نشه برای استفاده از این کدهاهم باید یسری رفرنسها را تیک بزنی وتیک بعضی را برداری
من بشخصه از روش های استفاده می کنم که قابل استفاده برای همه باشه با استفاده از کدهای دیگه براتون انشاله یه فایل میذارم

moustafa
یک شنبه 21 خرداد 1385, 00:00 صبح
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

شاپرک
یک شنبه 21 خرداد 1385, 06:27 صبح
اگه بشه پیغامی که موقع اضافه کردن میده حذف کرد یا فارسی کرد خیلی خوبه

moustafa
یک شنبه 21 خرداد 1385, 07:46 صبح
اگه
بشه پیغامی که موقع اضافه کردن میده حذف کرد یا فارسی کرد خیلی خوبه
tools/option/(find/edit)/confirm
تیک زیر را بردار
Actionquery

daglararan
یک شنبه 21 خرداد 1385, 09:08 صبح
مصطفی عزیز: اززحمتی که کشیدین صمیمانه تشکر میکنم زنده باشی ازاینکه با متانت کامل علم خودرادراختیار دیگران میزاری! من مسئله رااز یک ذاویه دیگر در یک تایپینگ جدید مطرح میکنم که فکرمیکنم به درد خیلی ها خواهد خورد.

moustafa
یک شنبه 21 خرداد 1385, 09:17 صبح
ممنونم دوست عزیز
تجربه خوبی بود منبعد منهم در برنامه هام از ان استفاده میکنم ولی برای شما نمدونم :
بالاخره اونچیزی که مد نظرت بود شد

شاپرک محترم
اگر اون کاری که گفتم بکنی پیغام فارسی را هم خودت می تونی بذاری مثلا" مورد فوق در جدول تعاریف وجو ندارد ایا مایلید اضافه گردد"

hasanr
یک شنبه 12 مهر 1388, 12:50 عصر
با تشکر از آقا مصطفی و بقیه دوستان
من یه کمبو باکس دارم که مشابه نمونه آقا مصطفی درست شده و یه باتون که کوئری شماره 2 ایشون رو اجرا می کنه اما مشکل اینه که وقتی باتون رو می زنم یا بهتره بگم وقتی هر آیتم دیگری رو در فرم می زنم
پیغام می ده که این تکست در لیست شما موجود نیست

در حالتی که بخواهیم از طریق یک کوئری مقداری را به کمبو اضافه کنیم یه مشکل وجود داره که حتی تو نمونه آقا مصطفی هم مشکل داره اونم اینه که مقدار اضافه شده در کمبو باکس قرار نمی گیره هر چند به جدول مورد نظر و جدول اصلی اضافه میشه . و تا فرم رو نبندیم و دوباره باز نکنیم توی کمبو باکس دیده نمیشه آیا راهی هست که بشود این مشکل را حل کرد ؟؟
ممنون

مهدی قربانی
یک شنبه 12 مهر 1388, 13:27 عصر
سلام
فكر مي كنم اگر كامبو يا فرم رو Refresh يا Requery كنيد مشكل برطرف بشه .

hasanr
یک شنبه 12 مهر 1388, 13:52 عصر
سلام
فكر مي كنم اگر كامبو يا فرم رو 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 کرد .