@odeddvir
עכשיו הוא מחזיר שגיאה שהוא לא מוצא את השדה
והשדה כן נמצא
@odeddvir
עכשיו הוא מחזיר שגיאה שהוא לא מוצא את השדה
והשדה כן נמצא
@odeddvir
עוד לפני שהוא נכנס לריצה של הפונקציה
כאשר עשיתי למטה אנטר כדי להריץ את הפונקציה הוא הקפיץ את ההודעה
@odeddvir
אותו הדבר בדיוק כמו שכתבתי בפוסט הראשון
סורי
כתבתי כך
Public Function vb_HidesFieldsDonates(TrueOfFalse As Integer)
'ñëåí úøåîä
Me!TextBoxDonationAmount.Visible = TrueOfFalse
Me!LabelDonationAmount.Visible = TrueOfFalse
'ñåâ îèáò
Me!TextBoxCurrency.Visible = TrueOfFalse
'àåôï äúøåîä
Me!TextBoxDonationType.Visible = TrueOfFalse
Me!LabelDonationType.Visible = TrueOfFalse
'äòøåú úøåîä
Me!TextBoxRemarksDonates.Visible = TrueOfFalse
Me!LabelRemarksDonates.Visible = TrueOfFalse
'ô÷ã ÷áìú îñ
Me!CheckboxTaxReceipts.Visible = TrueOfFalse
Me!LabelTaxReceipts.Visible = TrueOfFalse
End Function
אבל זה לא כזה משנה כי הוא אפי' לא נכנס לריצת הקוד
אלא פשוט מחזיר שגיאה
@odeddvir
להעתיק את כל הפונקציה בשלמותה לקוד של הטופס או להכניס את הקוד לתוך קוד הפקד?
כי סתם כך להכניס פונקציה לתוך הטופס הוא מחזיר שגיאה...
@odeddvir אני עוקב אחר כל מילה
אבל ליישם את זה אני לא יכול כי אני באמצע פרוייקט אחר שאני חייב לסיים אותו
אבל שתדע שאני פשוט קורא בשקיקה כל מילה
זה התמונה שאני יכול להעלות לך
שאפו ענק
יש לי פונקציה באקסס שמסתירה ומציגה פקדים בטופס
זה הקוד
Public Function vb_HidesFieldsDonates(TrueOfFalse As Integer)
'ñëåí úøåîä
Forms.board.TextBoxDonationAmount.Visible = TrueOfFalse
Forms.board.LabelDonationAmount.Visible = TrueOfFalse
'ñåâ îèáò
Forms.board.TextBoxCurrency.Visible = TrueOfFalse
'àåôï äúøåîä
Forms.board.TextBoxDonationType.Visible = TrueOfFalse
Forms.board.LabelDonationType.Visible = TrueOfFalse
'äòøåú úøåîä
Forms.board.TextBoxRemarksDonates.Visible = TrueOfFalse
Forms.board.LabelRemarksDonates.Visible = TrueOfFalse
'ô÷ã ÷áìú îñ
Forms.board.CheckboxTaxReceipts.Visible = TrueOfFalse
Forms.board.LabelTaxReceipts.Visible = TrueOfFalse
End Function
ומשום מה בשורה 8 קופצת לו שגיאה כזו
והשגיאה הזו קופצת לו רק בשורה הזו לפני ואחרי הכל עובד טוב
הפקד קיים (כך שזו לא הבעיה)
זה העזרה שאקסס מביא אבל גם שם לא הצלחתי להבין למה מגיעה השגיאה הזו
אשמח להבין מן המומחים למה ומהי השגיאה הזו...
תודה רבה מראש
@odeddvir אמר באקסס למתחילים: תגובות:
@אוריי לא הבנתי כוונתך.
הפונקציות Nz ו-IsNull הן פונקציות VBA ולא SQL. לכן יש להמנע מהם בשאילתות.
זה לא היה נשמע כך מדבריך שם
בכל אופן אין ביהמ"ד ללא חידוש...
ואינו דומה החוזר 100 ל 101 ...
@odeddvir
כפי איך שהבנתי משם
שים לב שאפילו בפונקציות טריוויאליות, כמו Nz() או IsNull() עדיף לרשום בSQL טהור ולא לבצע קריאה ל-VBA
אני מבין שיש הבדל בין ה SQL ל VBA בקריאת הקוד
אבל כאשר גם ה IF וגם הNZ נמצאים ב SQL טהור ואין קריאה ל VBA האם גם אז יש הבדל?
@odeddvir
כמו כולם מי לא עוקב
אני מרגיש כמו איזה נוסטלגיה מלפני... (פחות משנה..)
מחכה בשקיקות לעוד איזה מדריך...
כן, מצוין! (שאר התלמידים ישארו בסוף השיעור לנקות את הכיתה
)
ועם כאלו מדריכים אני מוכן לנקות את הכיתה (ולא שאני פרעייר..) אלא פשוט לא השארת שום בלאגן...
שאלה קטטנטנה לגבי מה שכתבת כאן..
שימו לב שהסכום של ישראל הוא ריק ולא מכיל 0.
הערה: כאשר שאילתת צירוף חיצוני לא מוצאת רשומה עם מפתח תואם בטבלת המשנה, היא מחזירה ערך מיוחד שנקרא NULL, שפירושו = כלום, שום דבר, גורנישט, וכו'.
אם ברצוננו להציג שם אפס, צריך ליצור שדה מחושב:
TotalAmount: IIf(TotalAmount Is Null, 0, TotalAmount)
אני התרגלתי במצבים כאלו לכתוב כך
TotalAmount: nz(TotalAmount , 0)
האם אני טועה או שאין הבדל?
@odeddvir אמר בעזרה באקסס | שגיאה 13 אי התאמת נתונים:
שאלת תם, תמהני, מה התועלת שאתה משיג ב:
Like ' * '
אם להסיר רווחים - תשתמש בפונקציה Trim()
א. תודה רבה זה פתר את השגיאה
ב. באמת זה לא עזר לי תכלס טעיתי קצת בקוד אבל ב"ה הסתדר..
הייתי צריך לכתוב Is Not Null
במקום Like ' * '
@OdedDvir הרבה תודה
כתבתי פונקציה ב VBA עם כמה שאילתות
תכלס בדקתי את כל המשפטי SQL באשף והכל עובד ..
הבעיה היא כאשר אני מריץ את זה ב vba הוא נתקל בשגיאה 13 של אי התאמת נתונים
המוזר הוא שאת השאילתה הראשונה הוא עובר בקלות ואילו את השניה הוא נתקע בה (והרי שניהם עובדים באשף של אקסס)
ניסיתי לחפש ברשת משהו מעין זה ומה שניסיתי לא כזה הועיל לי
זה הקוד
Public Function vb_status() As Integer
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("SELECT DnoriId,status,DialDate " & _
"FROM DonorManagement " & _
"WHERE (((DonorManagement.status)=5) And ((DonorManagement.DialDate)<Now()))" & _
"ORDER BY DonorManagement.DialDate;")
If rs.EOF Then
Set rs = CurrentDb.OpenRecordset("SELECT DnoriId, status, HomePhone,Phone1,Phone2 FROM DonorManagement WHERE (((status)=1) AND ((HomePhone) Like " * ")) OR (((status)=1) AND ((Phone1) Like " * ")) OR (((status)=1) AND ((Phone2) Like " * "));")
If rs.EOF Then
Set rs = CurrentDb.OpenRecordset("SELECT DnoriId,status,DialDate " & _
"FROM DonorManagement " & _
"WHERE (((status)=8) And ((HomePhone) Like " * ")) Or " & _
"(((status)=8) And ((Phone1) Like " * ")) Or " & _
"(((status)=8) And ((Phone2) Like " * "));")
Else
vb_status = rs!DnoriId
End If
Else
vb_status = rs!DnoriId
End If
End Function
השגיאה היא בשורה 8
אשמח אם תעירו את היכן תעיתי...
@בערל אמר במערכת לניהול תורמים:
אוקי
אז אני חושב אכן לקבל את המלצתכם ו"ללכת על זה" בעז"ה.
אודה מאוד לעזרה, כרגע אני לא מתחיל מאפס אלא ממינוס, בגדר "אינו יודע לשאול".
אשמח לקבל לינק למדריך מומלץ בכדי להשלים את הפערים.
תודה רבה רבה!
@בערל שיהיה בהצלחה!!!
בכל אופן אני אשמח גם לעזור מזמני הפנוי (אם @OdedDvir ילך לישון ... האמת נראה לי שזה לא קורה... )
@קינג-קומפיוטר אמר במענה לצינתוקים:
@nigun החוצפה גדולה בין השאר שהם מתקשרים ממספר כשר רגיל 05276
זה יכול להיות גם זיוף שיחה מאיזה מרכזיה ( @mgm-ivr לאוו דווקא חברה)
@dovid כל מילה בסלע שום דבר לא מיותר
אני הייתי חושב להוסיף עוד משפט קטן
כשהתחלתי לכתוב קוד vab היה לי מאד קשה לזכור את השפה כך שכל פעם הייתי צריך לחפש מה עשיתי בפרוייקט אחר ולהעתיק משם את הקוד עד שלאט לאט קלטתי מה כל פקודה עושה (פשוט ללמוד ארמית בגמ')
גם כאן בעברית הזו זה לא יקל כי סו"ס אני יצטרך לזכור מה כל מילה אומרת (לא פחות אם זה היה אנגלית)
@פוחצ-בסקי זה מזכיר לי שכאשר התחלתי לבנות באקסס כתבתי שמות של שדות בעברית
ואז.... כל פעם הייתי צריך להחליף בקוד בין עברית לאנגלית וקוד לא קריא
אולי את זה זה פותר אבל את כל השגיאות של האימות על סמך אותיות בעברית זה נראה לי קצת יותר מידי מסוכן....
@בערל אמר בשליפת נתונים מתוך מסמך אקסל:
והכי יעזור לי אם זה יכול לשלוף את הנתונים מקובץ שונה לגמרי ולא מגיליון נוסף באותו קובץ.
אני לא זוכר אם אפשרי ואיך להעביר נתונים משני קבצי אקסל באותו המחשב (צריך לראות אם זה אפשרי) אם אתה רוצה שלא יוכלו לשחק בנתונים אתה יכול להסתיר את הגיליון
@בערל אמר בשליפת נתונים מתוך מסמך אקסל:
כי אני רוצה לשחק עם זה יותר, לא רק לקבל את כל השורה לפי הסדר.
לדוגמה:
עמודה D תקבל נתונים מעמודה I
עמודה F תקבל נתונים מעמודה G
וכו'
וכל זה ע''י הזנת ה-ID בעמודה A
זה פשוט מאד
בפרמטר השלישי במקום COLUMN()
תחזיר כל פעם מספר של העמודה שאתה רוצה להחזיר אם זה A תכתוב 1 ואם אתה רוצה להחזיר את B תכתוב 2 וכן הלאה. (יותר מדוייק: כלומר העמודה השניה בטבלה שבפרמטר 2 שאם הטבלה מתחילה בעמודה B אז מס' 1 הוא B ו 2 הוא C)
כמו שכתבתי קודם
@אוריי אמר בשליפת נתונים מתוך מסמך אקסל:
איזה עמודה להחזיר (אם הערך נמצא) בד"כ מכניסים מספר עמודה (אבל אני הכנסתי נוסחה המחזירה את מס' העמודה כדי שיהיה אפשר לגרור שמאלה בלי לשנות)
@בערל
תפתח גיליון חדש בתא A1 תכתוב את הid
בתא b2 תכתוב את הנוסחה הבאה
=VLOOKUP($A$1,גיליון1!$A:$I,COLUMN(),0)
ותגרור לצד שמאל עד סוף העמודות
ואני אסביר מה אומר כל פרמטר לפי הסדר
סימני ה $ הם כדי לקבע את הנוסחה ולא תשתנה בגרירה.
@בערל
אתה רוצה לקבל את הנתונים בהודעה קופצת msgbok או לקבל בתוך תאים?
@mgm-ivr אמר במענה לצינתוקים:
אגב
אני באופן קבוע כשיש צינתוק עונה
ובחיים לא חוזר
שירד להם עוד יחידות או עוד כסף.....
אני גם בעבר חשבתי כך...
עד שהבנתי שמי ששולח את הצינטוקים ואת ההודעות מחשבן את כל האלו כמוך שעונים לטלפון בלי או עם להקשיב כי בסוף כל האלו שחוזרים (או נופלים בפח....) מכסים להם בקלות את העלות של המענה שלך... אע"פ שאתה אולי קצת יותר חכם ולא נופל בפח..