שאילתה בזמן ריצה ב-VBA

שאילתה בזמן ריצה ב-VBA

יצרתי שאילתה ב-VBA באמצעות משפט SQL שמתקבל מטופס שממלא המשתמש בזמן ריצה. הבעיה שהנתון שמתקבל הופך לפרמטר (כלומר סגור בסוגרים מרובעות) במקום להיות קריטריון פשוט (שסגור בגרשיים). מה הסיבה לכך ואיך ניתן לפתור את הבעיה?
 
קטע הקוד הרלוונטי

strSQL = "SELECT * FROM Candidates " & _ "WHERE Candidates.FirstName = " & strFirstName & " AND Candidates.FamilyName = " & FamilyName MsgBox strSQL CurrentDb.QueryDefs("qryCandidates").SQL = strSQL
 

nscom2k

New member
שגיאה ראשונה

מחרוזות STRING יש לסגור בגרשיים :
strSQL = "SELECT * FROM Candidates " & _ "WHERE Candidates.FirstName = ´" & strFirstName & "´ AND Candidates.FamilyName = ´" & FamilyName & "´"​
 

nscom2k

New member
שגיאה שניה

מומלץ לתחום בסוגריים במשפט AND:
strSQL = "SELECT * FROM Candidates WHERE (Candidates.FirstName = ´" & strFirstName & "´) AND (Candidates.FamilyName = ´" & FamilyName & "´)"​
 
ועדיין הבעיה קיימת

העתקתי את הקוד בשתי הורסיות, ולמרות השינוי השאילתה דורשת פרמטר והנתון מופיע סגור בסוגרים מרובעות. מה עושים?
 

nscom2k

New member
עשה מספר בדיקות ...

אם השדות שאתה משתמש קיימים ? אם ה-CAPES של האותיות בשמות נכון(אותיות גדולות/קטנות) ? נסה לבדוק אם ניתן לגשת לשדות משאילתה אחרת, כפי שהם מופיעים. עצה : תבנה את אותה שאילתה אם אותו תפקיד בשאילתה של ACCESS ותעתיק משם את המשפט SQL, שה-ACCESS יוצר עבור השאילתה.
 
למעלה