הצטרפו לקבוצות שלנו לקבלת עדכונים מרוכזים פעם בשבוע:

ווטסאפ:
http://wa.dwh.co.il
טלגרם:
http://telegram.dwh.co.il

Always one selected value

More
15 years 3 weeks ago - 15 years 3 weeks ago #6301 by davidvir
היי אנשים,
צריך את עזרתכם כאן.
בכל ליסט בוקס יש את האופציה של בחירת ערך אחד (ורק אחד)
מהרשימה.
הבעיה היא שבחירה כזו משפיעה על כל המודל ויש לשונית מסוימת שבא ניתן יהיה לבחור לא רק רשומה אחת אלא את כולן או חלקן ,מה שיבחר המשתמש.
מצאתי דוגמא למאקרו שאמור לעשות זאת,אשמח אם אנשי VB יוכלו לתת יד כי אני הסתבכתי עם המאקרו והוא לא עובד.
(בעת הפעלתו אמור לסמן וי [או למחוק וי] מה-צ'ק בוקס של
always one selected value)

אגב,פתרונות אחרים ומתוחכמים יתקבלו בברכה.

תודה,
דויד


sub Always
'' call SetFieldPropAlwaysSetOne("ddd", true)
call SetFieldPropAlwaysSetOne("ddd", false)
end sub


sub SetFieldPropAlwaysSetOne(FieldName, OnlyOne)
set fld=ActiveDocument.GetField(FieldName)
if fld.GetValueCount(1) = 0 then
set val=fld.GetPossibleValues
if val.Count=1 then
fld.SelectValues val
end if
end if

if fld.GetValueCount(1) = 1 then
set fprop = fld.GetProperties
fprop.ShowAlternatives = false
fprop.OneAndOnlyOne = OnlyOne
fld.SetProperties fprop
if not OnlyOne then
fld.Clear
end if
end if
end sub
Last edit: 15 years 3 weeks ago by davidvir.

Please התחברות to join the conversation.

More
15 years 3 weeks ago #6302 by avishayl
אני אישית לא אוהב להתשמש במקרו לבצע דברים כאלו רק אם אני חייב.
כמה אובייקטים יש לך בגיליונות הנ"ל?
האם לא כדאי להגדיר ב SET ANALYSIS להתעלם מבחירה בשדה זה?
או הפוך - בשאר הגיליונות להגדיר באובייקטים תנאי חישוב לאובייקט רק אם בוחרים ערך אחד בשדה הנ"ל.

Please התחברות to join the conversation.

More
15 years 3 weeks ago #6304 by davidvir
היי אבישי,
נראה לי שאתה צודק לגבי ה-set analysis מכיוון שכפי שנראה כרגע
מדובר על שלושה-ארבעה אוביקטים ועדיף לבצע
הגדרות ספציפיות עבורם מאשר להיכנס למאקרו.

תודה

Please התחברות to join the conversation.

More
15 years 3 weeks ago #6311 by Daniel Chotzen
הפתרון של אבישי נכון יותר גם לטעמי, אבל מתוך סקרנות
מה בדיוק לא עבד לך במקרו?
אם הבדיקה שלך לגבי הצלחת המקרו היתה להסתכל בליסטבוקס ולחפש את הסימן שהמקרו סימן, אז אולי פיספסת את כוונת המקרו.
המקרו בעצם עובד ברמת השדה!! כלומר הוא משנה את רמת השדה כך שתמיד יהיה רק ערך אחד "בחור" ולא משנה באיזה אובייקט (או נוסחה) השדה מופיע. אבל.... מעבר לזאת אין כל השפעה ויזואלית למקרו (הוא לא מסמן בליסטבוקס את האופציה).

הבעיה שהמקרו ניצב מולה היא אותה בעיה שיש למשתמש: מה לעשות כשיש כבר בבחירה יותר מערך אחד בשדה (possible or selected). במקרה של המשתמש קליקוויו פשוט "מאפיר" את האופציה לסמן זאת בליסטבוקס, אך המקרו מטפל בזה בצורה שונה: במידה ויש ערך אחד אך הוא possible ולא selected אז הוא יהפוך אותו לselected ורק אז ימשיך ויסמן את השדה. בכל מקרה אחר הוא יגש לביצוע סימון השדה רק אם יש ערך אחד selected בשדה.

בכל מקרה כל זה רק ניחוש מכיוון שנראה לי שבמקרו ששלחת יש מספר בעיות וכנראה חסרות שורות.
יש אי תאימות מבחינת שורות ה-IF וה-ENDIF
לקראת הסוף נעשה שימוש במשתנה הנקרא:OnlyOne
אולם באף מקום הוא לא מוגדר ולא מקבל ערך לפני זה

האם יש ברשותך את הקוד המלא? או שזה מה שקיבלת.


לסיום טיפ קטן
במקרו נעשה שימוש בmethod הנקרא:GetValueCount
פונקציה זו מחזירה את מספר הערכים בשדה מסוים, אך ניתן לסננן אותה באמצעות פרמטר 5 סינונים שונים.

1=selected
2=optional
3=deselected
4=alternative
5=excluded

Please התחברות to join the conversation.

More
15 years 3 weeks ago #6312 by davidvir
היי דניאל,
כאשר הרצתי את המאקרו ולא קרה דבר הנחתי שמשהו לא עובד בו
באופן תקין.
ניסיתי 'לחפור' בו עוד קצת אבל אני ו-VB לא חברים טובים...
אכן הנחתי שיסומן ה-V באופצייה "בחירת ערך אחד" בליסטבוקס ולמעשה ייבחר אחד הערכים.
תודה שהארת את עיני שהמאקרו כלל לא מבצע זאת. (לפחות לא מבחינה ויזואלית שזה בדיוק מה שחיפשתי)

Please התחברות to join the conversation.

Moderators: avishaylgiladlDaniel Chotzenodedth
Time to create page: 0.239 seconds