-
שלום,
אני באמצע פיתוח תוכנה באקסס,
יש טופס שצריך לבצע פעולה (לאשר או לא לאשר תהליך) ע"פ תוצאת שאילתה שהגדרתי.
ניסיתי לעשות את זה ע"י הגדרת ListBox שה- source שלו זו שאילתה שמוגדרת ב- VB, אבל לא הצלחתי להגיע לקוד שיתן לי את תוצאת השאילתה או לפחות כמה רשומות יש בתוצאה.
מישהו יודע לעזור?? זה דחוף..
תודה מראש -
@chagold אמר בעזרה באקסס - הפעלת שאילתה ע"י קוד VB:
@moshe11 לפני שאני או מישהו מסתכל
יש בתיבת התגובות כפתור בצורה הזו </>. תלחץ עליו ותעתיק את הקוד לבפנים.בהעתקה העברית הופכת לג'בריש אבל זה
code: Private Sub ô÷åãä82_Click() Dim available As Boolean Dim FirstDate As Date Dim eventData As String Dim msg As String eventData = Me.t_lohazi.Caption FirstDate = eventData available = True msg = "available" For i = -3 To 3 Dim dateToCheck As Date Dim dateStr As String dateToCheck = DateAdd("d", i, FirstDate) dateStr = dateToCheck Dim degem As Integer degem = [Forms]![äæîðä çãùä]![ãâí_ðáçø] Dim ctl As Control Set ctl = Me.dateList ctl.RowSourceType = "Table/Query" ctl.RowSource = "SELECT [ëîåú äæîðåú ãâí ìàøåò].úàøéê_àøåò" & _ "FROM [ëîåú äæîðåú ãâí ìàøåò]" & _ "WHERE ((([ëîåú äæîðåú ãâí ìàøåò].úàøéê_àøåò) = '" & dateStr & "' ) AND (([ëîåú äæîðåú ãâí ìàøåò].÷åã_ôøéè)=[Forms]![äæîðä çãùä]![ãâí_ðáçø]))" ctl.Requery If ctl.ItemsSelected.count > 0 Then available = False msg = "not available" End If Next i Me("ok").Enabled = available End Sub
-
@moshe11 למספר הרשומות, תוכל להשתמש בפונקציה DCount:
Dim SQL As String SQL = "SELECT ........" Dim RecordsInQuery As Long RecordsInQuery = DCount("*", SQL)
עבור תוצאה מסויימת בשאילתא, תשתמש ב-DLookUp:
Dim SQL As String SQL = "Select FirstName, LastName, BirthDate FROM Students" Dim Result As Variant Dim MyBirthDay As Date Result = DLookup("BirthDate", SQL, "FirstName='OdedDvir') If Not IsNull(Result) Then MyBirthDay = CDate(Result) Else MsgBox("Sorry...") End If
-
@moshe11
תראה את זהSub SelectX2() Dim dbs As Database, rst As Recordset ' Modify this line to include the path to Northwind ' on your computer. Set dbs = OpenDatabase("Northwind.mdb") ' Count the number of records with a PostalCode ' value and return the total in the Tally field. Set rst = dbs.OpenRecordset("SELECT Count " _ & "(PostalCode) AS Tally FROM Customers;") ' Populate the Recordset. rst.MoveLast ' Call EnumFields to print the contents of ' the Recordset. Specify field width = 12. EnumFields rst, 12 dbs.Close End Sub
המקור מכאן. הוא עושה שאילתת ספירת שורות.
הוא בהתחלה מקבל טבלה וירטואלית המכילה את תוצאת השאילתא שלך, עם שורה אחת.
ואז הוא ניגש אל השורה האחרונה שלה עם rst.MoveLast
כמו"כ בשאילתא רגילה אתה יכול לקבל את התוכן ע"י גישה לשדות (=העמודות) באחת משתי האופציות דלהלן (הראשונה סימן קראה עם שם השדה, והשניה קריאה למספר העמודה)
strText = rs!AText strText = rs.Fields(1)
-