@סקרן-0 לשאלתך הראשונה:
האם ואיך ניתן להגדיר משתנה ב VBA על בסיס משפט SQL?
משפט SQL באקסס לא מחזיר ערך. הוא פשוט הוראה לבסיס הנתונים לבצע שאילתה מסויימת.
שמא כוונתך לשאול: האם ניתן לשלוף ערך מסויים מתוך שאילתא\משפט SQL?
התשובה הקצרה היא כן. השאלה היא מה המשתנה אמור להכיל? תוצאה של שדה מסויים? סכום של עמודה מסויימת? מספר הרשומות? לכל מקרה יש אופן ביצוע אחר. לחלק יש כבר פונקציות מובנות באקסס, כמו DSum שציין @אפר-שריפה.
באופן כללי, אם אתה מבקש לקבל שדה מסויים בשאילתא, אפשר להשתמש באובייקט RecordSet, כמו שציין יפה @אפר-שריפה.
מובן שעליך לוודא שהשאילתא מחזירה רק רשומה אחת, אחרת לא ברור מאיזו רשומה יאוחזר הערך.
הפונקציה הבאה מחזירה ערך של שדה מתוך שאילתא. אם יש כמה רשומות, היא מחזירה את השדה ברשומה הראשונה:
Public Function GetFieldFromSQL(SQL As String, fieldName As String) As Variant
Dim rs As DAO.Recordset
Dim result As Variant
Set rs = CurrentDb.OpenRecordset(SQL, dbOpenSnapshot, dbReadOnly)
result = Null
If Not rs.EOF Then result = rs.Fields(fieldName).Value
rs.Close
GetFieldFromSQL = result
End Function
לדוגמא (על פי המדריך למערכת תורמים):
Dim SQL As String
SQL = "SELECT FullName FROM qryDonor_FullName WHERE ID=2"
Debug.Print GetFieldFromSQL(SQL, "FullName")
תודפס התוצאה:
לוי יצחק
לגבי שאלותיך האחרות, נא פתח פוסטים נפרדים עבור כל שאלה, עם כותרת מתאימה, כדי שיהיה בזה תועלת לשאר החברים, ואשתדל לענות.