מערך אוניברסלי

מערך אוניברסלי

שלום .. אני רוצה ליצור מערך של איברים שלא בהכרח מאותו סוג ניסיתי לעשות משהו אבל לא הלך לי... איך יוצרים מערך כזה ?
 

טרמפיסט

New member
אין חיה כזו

הכי קרוב זה מערך Variant. כל טיפוס תופס מספר קבוע של בייטים בזכרון, כך שבמערך הם פשוט מסודרים אחד אחרי השני כשמערכת ההפעלה יודעת "לקפוץ" מתא אחד לשני ע"י הכפלת האינדקס המבוקש בגודל הטיפוס. מערך של טיפוסים שונים אומר במילים אחרות - גדלים שונים של איברים וע"H כך קפיצות לא קבועות. אין דבר כזה.
 

נוייברט

New member
אני בשוק

בביטוי "אין חיה כזאת" לגבי ענין דומה השתמש Sharos מהאתר דוקטור VB זה אתה?
 

ארזירון

New member
כן ולא ../images/Emo13.gif

אתה יכול עם מערך של אובייקטים, מערך של variants, או בכלל collection למשל. זה מספיק טוב?
 
חחחחחחח זאת תשובה נחמדה אבל

Dim a As Collection Set a = New Collection​
אחרי הקוד הזה שאני רושם יש הגבלה של בתים בכל אחד מאיברי המערך או הגבלה מסויימת על טיפוס איבר במערך ? שאלה נוספת.... דחוף ! כי זה מעצבן אותי כבר !
sSql = "SELECT * FROM groups " rs.Find "experimentCode = ' " & codeExp & " ' "​
כמובן שעשיתי פתיחה לרשומה וקישור לבסיס נתונים . עכשיו על פי הנתונים בטבלא של groups אני אמור למצוא מספר רשומות ולהציג אותם לפי המשפט find אבל זה לא עושה כלום !! הוא מחזיר לי מספר רשומות מינוס 1 ! וזאת למרות שקיימות רשומות שעונות על התנאי ! בדקתי את המשתנה והשדה שמופיעים במשפט find אלף פעם והאיות שלהם נכון והם קיימים והכל אבל עדיין מחזיר לי מספר רשומות מינוס 1 ! האם יש בעיה עם המשפט ולא כותבים אותו בצורה הזאת ?
 
שאלה נוספת - טפשית משהו אבל

מעצבנת ולא מצליח לפתור אותה וגם לא הגיונית
Private Sub co_next_Click() form2.Visible = True form2.te_codeExp.Text = te_expCode.Text Unload Me End Sub​
יש לי תיבת טקסט בשם expCode שאני רוצה לשמור תערך שלה בטופס אחר לאחר שאני יוצר אירוע קליק בטופס מסויים אבל משום מה היא לא נקלטת בטופס form2 וזה בדוק שהיא בעלת ערך מסויים כלומר היא לא null. למה זה קורה ???
 

נוייברט

New member
לגבי השאלה השלישית(הטפשית)

במקומך הייתי מצהיר על משתנה ציבורי(Public)שיכיל את המידע וכך הייתי פותר את הבעיה. אבל יכול להיות גם שזה בעיה של Refresh כלומר הכנסת את הנתונים אחרי שהראית את הטופס אבל עדיין לא רואים אותו כי לא הסתרת את הטופס הנוכחי ולכן זה ידרוש רענון של התיבת טקסט כדי שיראו את הנתונים. בכל אופן הרגע בדקתי את זה וזה עובד יכול להיות שיש איזה בעיה ספציפית אצלך, הנה הקוד שכתבתי והוא עובד מעולה Private Sub Command1_Click() Form2.Visible = True Form2.Text1 = Text1.Text Unload Me End Sub
 

נוייברט

New member
לגבי השאלה על האוסף(הראשונה)

לא הבנתי בדיוק מה השאלה שלך אבל אין הגבלה של מספר איברים שאתה יכול להצהיר עליהם וכל האברים הם מסוג Variant
 

davidea

New member
שלום תימני ../images/Emo11.gif

העברת נתונים מטופס לטופס: עקרונית אתה עובד נכון (ולא היה צריך את Visible=true לטופס השני אלה אם כן עשית זאת לדיבאגינג...) בכל מקרה, ליתר בטחון, האם בכל פרוייקט ובכל טופס (ואני מדגיש כל!!!) יש לך את Option Explicit.האופציה הנ"ל מחייבת הגדרת משתנים (Dim או Global במודולים) ובקבועים (Const). הגדרה זו מחייבת אותך להיות מסודר ולהגדיר כל מה שאתה עומד להתשמש בו (ולכן גם מחייב אותך לתכנן ולחשוב...). אבל יש עוד יתרון. אם במקרה הקלדת שגיאת כתיב, ללא Option Explicit המתשנה שלא הוגדר ולמעשה מהווה שגיאת כתיב יוכר כמשתנה חוקי לכל דבר. אבל מאחר ולמעשה השתמשת במשתנה עם הכתיב הנכון כל הזמן, ערכו של המשתנה הלא חוקי הוא Null. לאומת זאת, וזו המטרה של כל התגובה שלי, כל משתנה שלא הוגדר והוחדר לקוד כשגיאת כתיב, כיבוא מתוכנה אחרת וכד' לא יעבור קומפילציה ויודיע לך שהמשתנה אינו חוקי!!!! היתכן שבכך מדובר אצלך בטפסים?
 
לדוד !! - תגובה....

"העברת נתונים מטופס לטופס: עקרונית אתה עובד נכון (ולא היה צריך את Visible=true לטופס השני אלה אם כן עשית זאת לדיבאגינג...) בכל מקרה, ליתר בטחון, האם בכל פרוייקט ובכל טופס (ואני מדגיש כל!!!) יש לך את Option Explicit.האופציה הנ"ל מחייבת הגדרת משתנים (Dim או Global במודולים) ובקבועים (Const). הגדרה זו מחייבת אותך להיות מסודר ולהגדיר כל מה שאתה עומד להתשמש בו (ולכן גם מחייב אותך לתכנן ולחשוב...). אבל יש עוד יתרון. אם במקרה הקלדת שגיאת כתיב, ללא Option Explicit המתשנה שלא הוגדר ולמעשה מהווה שגיאת כתיב יוכר כמשתנה חוקי לכל דבר. אבל מאחר ולמעשה השתמשת במשתנה עם הכתיב הנכון כל הזמן, ערכו של המשתנה הלא חוקי הוא Null. לאומת זאת, וזו המטרה של כל התגובה שלי, כל משתנה שלא הוגדר והוחדר לקוד כשגיאת כתיב, כיבוא מתוכנה אחרת וכד' לא יעבור קומפילציה ויודיע לך שהמשתנה אינו חוקי!!!! היתכן שבכך מדובר אצלך בטפסים? " - אני לא חושב שזאת הבעיה מכיוון שאין לי Option Explicit אמנם , אבל ! אני מקפיד להגדיר כל משתנה שאני משתמש בו ! דבר נוסף - האם יש לך פתרון בשבילי בשבילי הפקודה find לאחר שאילתת SQL ??
rs.Find "experimentCode = ' " & codeExp & " ' "​
כמובן - חיבור עובד ותקין , משתנים תקינים ולפי מה שאני יודע גם מבנה הפקודה תקין. אני מעוניין להציג את כל הקבוצות בניסוי מסויים ולכן עשיתי שאילתא פשוטה שפותחת לי את כל הרשומות בטבלת קבוצות ( יש לי קישור אחד לרבים בין ניסוי לקבוצה - לכל ניסוי כמה קבוצות ) ואח"כ על ידי find אני מעוניין למצוא את כל הקבוצות ששייכות לניסוי מסויים. משום מה הפקודה הזאת לא עובדת לי . יש פתרון ??
 
למעלה