דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תוכנה
  3. שליפת רשומה רנדומאלית באקסס

שליפת רשומה רנדומאלית באקסס

מתוזמן נעוץ נעול הועבר תוכנה
20 פוסטים 6 כותבים 437 צפיות 4 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • S מנותק
    S מנותק
    spider
    כתב ב נערך לאחרונה על ידי
    #1

    שבוע טוב,
    איך ניתן ליצור שאילתא שתשלוף כל פעם רשומה (טקסט, לא מספר) משאילתא,
    ותציג אותו בתיבת טקסט בטופס?

    תודה רבה

    dovid123123@gmail.com

    א תגובה 1 תגובה אחרונה
    0
    • S spider

      שבוע טוב,
      איך ניתן ליצור שאילתא שתשלוף כל פעם רשומה (טקסט, לא מספר) משאילתא,
      ותציג אותו בתיבת טקסט בטופס?

      תודה רבה

      א מנותק
      א מנותק
      ארי
      כתב ב נערך לאחרונה על ידי
      #2

      @spider בשימוש עם DlookUP

      S תגובה 1 תגובה אחרונה
      1
      • א ארי

        @spider בשימוש עם DlookUP

        S מנותק
        S מנותק
        spider
        כתב ב נערך לאחרונה על ידי
        #3

        @ארי אמר בשליפת רשומה רנדומאלית באקסס:

        @spider בשימוש עם DlookUP

        תודה רבה
        תכל'ס מה אני רושם כדי שישלוף נתונים מעמודה בטבלה?

        DLookUp(«expression», «domain», «criteria») 
        

        dovid123123@gmail.com

        מלאמ תגובה 1 תגובה אחרונה
        0
        • S spider

          @ארי אמר בשליפת רשומה רנדומאלית באקסס:

          @spider בשימוש עם DlookUP

          תודה רבה
          תכל'ס מה אני רושם כדי שישלוף נתונים מעמודה בטבלה?

          DLookUp(«expression», «domain», «criteria») 
          
          מלאמ מנותק
          מלאמ מנותק
          מלא
          כתב ב נערך לאחרונה על ידי
          #4

          @spider

          DLookUp("עמודה", "טבלה","שם שדה בטבלה=" & "מה לחפש")
          
          

          תעתיק את זה, תראה איך הוא יוצא. בארגומנט הראשון, שדה. בשני, טבלה. בשלישי סינון.

          S תגובה 1 תגובה אחרונה
          1
          • מלאמ מלא

            @spider

            DLookUp("עמודה", "טבלה","שם שדה בטבלה=" & "מה לחפש")
            
            

            תעתיק את זה, תראה איך הוא יוצא. בארגומנט הראשון, שדה. בשני, טבלה. בשלישי סינון.

            S מנותק
            S מנותק
            spider
            כתב ב נערך לאחרונה על ידי
            #5

            @מלא אמר בשליפת רשומה רנדומאלית באקסס:

            @spider

            DLookUp("עמודה", "טבלה","שם שדה בטבלה=" & "מה לחפש")
            
            

            תעתיק את זה, תראה איך הוא יוצא. בארגומנט הראשון, שדה. בשני, טבלה. בשלישי סינון.

            אני רוצה שהןא ישלוף באופן אקראי מכל העמודה,
            אז מה לרשום ב"שם שדה טבלה"?
            ומה לרשום בסינון?

            dovid123123@gmail.com

            מלאמ תגובה 1 תגובה אחרונה
            0
            • S spider

              @מלא אמר בשליפת רשומה רנדומאלית באקסס:

              @spider

              DLookUp("עמודה", "טבלה","שם שדה בטבלה=" & "מה לחפש")
              
              

              תעתיק את זה, תראה איך הוא יוצא. בארגומנט הראשון, שדה. בשני, טבלה. בשלישי סינון.

              אני רוצה שהןא ישלוף באופן אקראי מכל העמודה,
              אז מה לרשום ב"שם שדה טבלה"?
              ומה לרשום בסינון?

              מלאמ מנותק
              מלאמ מנותק
              מלא
              כתב ב נערך לאחרונה על ידי
              #6

              @spider
              מה זה נקרא באופן אקראי, כאילו הגרלה?

              S תגובה 1 תגובה אחרונה
              1
              • מלאמ מלא

                @spider
                מה זה נקרא באופן אקראי, כאילו הגרלה?

                S מנותק
                S מנותק
                spider
                כתב ב נערך לאחרונה על ידי
                #7

                @מלא אמר בשליפת רשומה רנדומאלית באקסס:

                @spider
                מה זה נקרא באופן אקראי, כאילו הגרלה?

                כן
                רק לא מספר אלא מעמודה עם שמות

                dovid123123@gmail.com

                מלאמ תגובה 1 תגובה אחרונה
                0
                • S spider

                  @מלא אמר בשליפת רשומה רנדומאלית באקסס:

                  @spider
                  מה זה נקרא באופן אקראי, כאילו הגרלה?

                  כן
                  רק לא מספר אלא מעמודה עם שמות

                  מלאמ מנותק
                  מלאמ מנותק
                  מלא
                  כתב ב נערך לאחרונה על ידי
                  #8

                  @spider
                  הגרלה, לפי הידוע לי, אפשר לעשות רק על מספר.
                  לא יודע אם יש דרך לעשות הגרלה דרך אקסס לבד, עם VBA תוכל לעשות את זה.
                  אתה מכיר קצת VBA?

                  S 2 תגובות תגובה אחרונה
                  0
                  • מלאמ מלא

                    @spider
                    הגרלה, לפי הידוע לי, אפשר לעשות רק על מספר.
                    לא יודע אם יש דרך לעשות הגרלה דרך אקסס לבד, עם VBA תוכל לעשות את זה.
                    אתה מכיר קצת VBA?

                    S מנותק
                    S מנותק
                    spider
                    כתב ב נערך לאחרונה על ידי
                    #9

                    @מלא אמר בשליפת רשומה רנדומאלית באקסס:

                    @spider
                    הגרלה, לפי הידוע לי, אפשר לעשות רק על מספר.
                    לא יודע אם יש דרך לעשות הגרלה דרך אקסס לבד, עם VBA תוכל לעשות את זה.
                    אתה מכיר קצת VBA?

                    זה שלא.
                    אני חדש בתחום

                    dovid123123@gmail.com

                    תגובה 1 תגובה אחרונה
                    0
                    • מלאמ מלא

                      @spider
                      הגרלה, לפי הידוע לי, אפשר לעשות רק על מספר.
                      לא יודע אם יש דרך לעשות הגרלה דרך אקסס לבד, עם VBA תוכל לעשות את זה.
                      אתה מכיר קצת VBA?

                      S מנותק
                      S מנותק
                      spider
                      כתב ב נערך לאחרונה על ידי
                      #10

                      @מלא אפשר אולי לעשות הגרלה על מספר מטבלה (ID),
                      ושיביא את כל השורה בטבלה?

                      ככה הוא יביא גם את הID וגם את הטקסט

                      dovid123123@gmail.com

                      מלאמ 2 תגובות תגובה אחרונה
                      0
                      • S spider

                        @מלא אפשר אולי לעשות הגרלה על מספר מטבלה (ID),
                        ושיביא את כל השורה בטבלה?

                        ככה הוא יביא גם את הID וגם את הטקסט

                        מלאמ מנותק
                        מלאמ מנותק
                        מלא
                        כתב ב נערך לאחרונה על ידי
                        #11

                        @spider
                        כמובן.

                        תנסה את זה:

                        dlookup("עמודהשם", "טבלה", "עמודהID=" &  Int((DMAX("עמודהID","טבלה")  - 1 + 1) * Rnd + 1))
                        

                        זה בהנחה שכל המספרים מלאים והמספור מתחיל ב1, אם יש מספרים ריקים, לפעמים הוא לא יחזיר כלום.

                        https://www.techonthenet.com/access/functions/numeric/rnd.php

                        תגובה 1 תגובה אחרונה
                        2
                        • S spider

                          @מלא אפשר אולי לעשות הגרלה על מספר מטבלה (ID),
                          ושיביא את כל השורה בטבלה?

                          ככה הוא יביא גם את הID וגם את הטקסט

                          מלאמ מנותק
                          מלאמ מנותק
                          מלא
                          כתב ב נערך לאחרונה על ידי
                          #12
                          פוסט זה נמחק!
                          תגובה 1 תגובה אחרונה
                          0
                          • OdedDvirO מנותק
                            OdedDvirO מנותק
                            OdedDvir
                            כתב ב נערך לאחרונה על ידי
                            #13

                            @spider לאקסס אין מנגנון מובנה לשליפת רשומה אקראית, אבל מייקרוסופט הואילו בטובם לספק קוד שכזה.
                            צור מודל חדש ותדביק בו את הקוד הבא:

                            Public Function FindRandom(RecordSetName As String, Fieldname As String) 
                             
                             Dim MyDB As Database 
                             Dim MyRS As Recordset 
                             Dim SpecificRecord As Long, i As Long, NumOfRecords As Long 
                             
                             Set MyDB = CurrentDB() 
                             Set MyRS = MyDB.OpenRecordset(RecordSetName, dbOpenDynaset) 
                             On Error GoTo NoRecords 
                             MyRS.MoveLast 
                             NumOfRecords = MyRS.RecordCount 
                             SpecificRecord = Int(NumOfRecords * Rnd) 
                             If SpecificRecord = NumOfRecords Then 
                               SpecificRecord = SpecificRecord - 1 
                             End If 
                             MyRS.MoveFirst 
                             For i = 1 To SpecificRecord 
                               MyRS.MoveNext 
                             Next i 
                             FindRandom = MyRS(Fieldname) 
                             Exit Function 
                             
                            NoRecords: 
                             If Err = 3021 Then 
                               MsgBox "There Are No Records In The Dynaset", 16, "Error" 
                             Else 
                               MsgBox "Error - " & Err & Chr$(13) & Chr$(10) & Error, _ 
                                 16, "Error" 
                             End If 
                             FindRandom = "No Records" 
                             Exit Function 
                             
                            End Function 
                            

                            כעת במקור הנתונים של תיבת הטקסט תכניס את הנוסחא:

                            =FindRandom("שם_הטבלה_שלך","שם_השדה_הרצוי")
                            
                            dovidD תגובה 1 תגובה אחרונה
                            6
                            • OdedDvirO OdedDvir

                              @spider לאקסס אין מנגנון מובנה לשליפת רשומה אקראית, אבל מייקרוסופט הואילו בטובם לספק קוד שכזה.
                              צור מודל חדש ותדביק בו את הקוד הבא:

                              Public Function FindRandom(RecordSetName As String, Fieldname As String) 
                               
                               Dim MyDB As Database 
                               Dim MyRS As Recordset 
                               Dim SpecificRecord As Long, i As Long, NumOfRecords As Long 
                               
                               Set MyDB = CurrentDB() 
                               Set MyRS = MyDB.OpenRecordset(RecordSetName, dbOpenDynaset) 
                               On Error GoTo NoRecords 
                               MyRS.MoveLast 
                               NumOfRecords = MyRS.RecordCount 
                               SpecificRecord = Int(NumOfRecords * Rnd) 
                               If SpecificRecord = NumOfRecords Then 
                                 SpecificRecord = SpecificRecord - 1 
                               End If 
                               MyRS.MoveFirst 
                               For i = 1 To SpecificRecord 
                                 MyRS.MoveNext 
                               Next i 
                               FindRandom = MyRS(Fieldname) 
                               Exit Function 
                               
                              NoRecords: 
                               If Err = 3021 Then 
                                 MsgBox "There Are No Records In The Dynaset", 16, "Error" 
                               Else 
                                 MsgBox "Error - " & Err & Chr$(13) & Chr$(10) & Error, _ 
                                   16, "Error" 
                               End If 
                               FindRandom = "No Records" 
                               Exit Function 
                               
                              End Function 
                              

                              כעת במקור הנתונים של תיבת הטקסט תכניס את הנוסחא:

                              =FindRandom("שם_הטבלה_שלך","שם_השדה_הרצוי")
                              
                              dovidD מנותק
                              dovidD מנותק
                              dovid
                              ניהול
                              כתב ב נערך לאחרונה על ידי
                              #14

                              @OdedDvir אפשר ע"י שאילתה שממיינת לפי מספר אקראי ולוקחת את הראשון (SELECT TOP 1).
                              https://stackoverflow.com/a/35457559/1271037
                              אבל מבחינת ביצועים הקוד שלך הרבה יותר טוב.

                              • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                              • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                              dovidD תגובה 1 תגובה אחרונה
                              4
                              • dovidD dovid

                                @OdedDvir אפשר ע"י שאילתה שממיינת לפי מספר אקראי ולוקחת את הראשון (SELECT TOP 1).
                                https://stackoverflow.com/a/35457559/1271037
                                אבל מבחינת ביצועים הקוד שלך הרבה יותר טוב.

                                dovidD מנותק
                                dovidD מנותק
                                dovid
                                ניהול
                                כתב ב נערך לאחרונה על ידי
                                #15

                                @dovid אמר בשליפת רשומה רנדומאלית באקסס:

                                אבל מבחינת ביצועים הקוד שלך הרבה יותר טוב.

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

                                • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                                • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                                מלאמ OdedDvirO WWWW 3 תגובות תגובה אחרונה
                                0
                                • dovidD dovid

                                  @dovid אמר בשליפת רשומה רנדומאלית באקסס:

                                  אבל מבחינת ביצועים הקוד שלך הרבה יותר טוב.

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

                                  מלאמ מנותק
                                  מלאמ מנותק
                                  מלא
                                  כתב ב נערך לאחרונה על ידי מלא
                                  #16

                                  @dovid אמר בשליפת רשומה רנדומאלית באקסס:

                                  אי אפשר לגשת למשפר השורות בלי MoveLast?

                                  https://docs.microsoft.com/en-us/office/vba/access/concepts/data-access-objects/count-the-number-of-records-in-a-dao-recordset
                                  ככה הם אומרים.
                                  http://www.baldyweb.com/RecordCounts.htm

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

                                  כן יש, rs.move 10
                                  שאלות, על המדריך שם..

                                  תגובה 1 תגובה אחרונה
                                  1
                                  • dovidD dovid

                                    @dovid אמר בשליפת רשומה רנדומאלית באקסס:

                                    אבל מבחינת ביצועים הקוד שלך הרבה יותר טוב.

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

                                    OdedDvirO מנותק
                                    OdedDvirO מנותק
                                    OdedDvir
                                    כתב ב נערך לאחרונה על ידי
                                    #17

                                    @dovid האמת היא שלא טרחתי אפילו לעבור על הקוד, פשוט העתק הדבק ממיקרוסופט.
                                    אבל בודאי שעדיף לקפוץ ישירות לרשומה הרצויה על ידי Move. בנוסף, מצאתי טעות בקוד שלהם, חסרה להם MoveFirst אחרי הפקודה MyRS.MoveLast (משום מה לא מופיעים מספרי שורות לעיל)
                                    וגם הצהרה מפורשת שמדובר ב DAO.Recordset (זה כנראה קוד ישן מאוד...)
                                    להלן הפונקציה המשופרת:

                                    Public Function FindRandom(RecordSetName As String, Fieldname As String)
                                     
                                        Dim MyDB As DAO.Database
                                        Dim MyRS As DAO.Recordset
                                        Dim SpecificRecord As Long, i As Long, NumOfRecords As Long
                                     
                                        Set MyDB = CurrentDb()
                                        Set MyRS = MyDB.OpenRecordset(RecordSetName, dbOpenDynaset)
                                        On Error GoTo NoRecords
                                        MyRS.MoveLast
                                        NumOfRecords = MyRS.RecordCount
                                        SpecificRecord = Int(NumOfRecords * Rnd)
                                        If SpecificRecord = NumOfRecords Then
                                            SpecificRecord = SpecificRecord - 1
                                        End If
                                        MyRS.MoveFirst
                                        MyRS.Move SpecificRecord
                                    
                                        FindRandom = MyRS(Fieldname)
                                        Exit Function
                                     
                                    NoRecords:
                                        If Err = 3021 Then
                                            MsgBox "There Are No Records In The Dynaset", 16, "Error"
                                        Else
                                            MsgBox "Error - " & Err & Chr$(13) & Chr$(10) & Error, _
                                                                                          16, "Error"
                                        End If
                                        FindRandom = "No Records"
                                        Exit Function
                                     
                                    End Function
                                    

                                    במחשבה שניה אפשר לוותר גם על MoveFirst לחלוטין ופשוט לזוז אחורה מספר רנדומלי, כך:

                                    ' MyRS.MoveFirst
                                     MyRS.Move -SpecificRecord
                                    
                                    S תגובה 1 תגובה אחרונה
                                    3
                                    • dovidD dovid

                                      @dovid אמר בשליפת רשומה רנדומאלית באקסס:

                                      אבל מבחינת ביצועים הקוד שלך הרבה יותר טוב.

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

                                      WWWW מנותק
                                      WWWW מנותק
                                      WWW
                                      כתב ב נערך לאחרונה על ידי
                                      #18

                                      @dovid אמר בשליפת רשומה רנדומאלית באקסס:

                                      @dovid אמר בשליפת רשומה רנדומאלית באקסס:
                                      אי אפשר לגשת למשפר השורות בלי MoveLast?

                                      אי אפשר, וגם ככה צריך רחמים גדולים, כי המספר לא מדוייק, לא ברור למה.

                                      WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

                                      תגובה 1 תגובה אחרונה
                                      0
                                      • OdedDvirO OdedDvir

                                        @dovid האמת היא שלא טרחתי אפילו לעבור על הקוד, פשוט העתק הדבק ממיקרוסופט.
                                        אבל בודאי שעדיף לקפוץ ישירות לרשומה הרצויה על ידי Move. בנוסף, מצאתי טעות בקוד שלהם, חסרה להם MoveFirst אחרי הפקודה MyRS.MoveLast (משום מה לא מופיעים מספרי שורות לעיל)
                                        וגם הצהרה מפורשת שמדובר ב DAO.Recordset (זה כנראה קוד ישן מאוד...)
                                        להלן הפונקציה המשופרת:

                                        Public Function FindRandom(RecordSetName As String, Fieldname As String)
                                         
                                            Dim MyDB As DAO.Database
                                            Dim MyRS As DAO.Recordset
                                            Dim SpecificRecord As Long, i As Long, NumOfRecords As Long
                                         
                                            Set MyDB = CurrentDb()
                                            Set MyRS = MyDB.OpenRecordset(RecordSetName, dbOpenDynaset)
                                            On Error GoTo NoRecords
                                            MyRS.MoveLast
                                            NumOfRecords = MyRS.RecordCount
                                            SpecificRecord = Int(NumOfRecords * Rnd)
                                            If SpecificRecord = NumOfRecords Then
                                                SpecificRecord = SpecificRecord - 1
                                            End If
                                            MyRS.MoveFirst
                                            MyRS.Move SpecificRecord
                                        
                                            FindRandom = MyRS(Fieldname)
                                            Exit Function
                                         
                                        NoRecords:
                                            If Err = 3021 Then
                                                MsgBox "There Are No Records In The Dynaset", 16, "Error"
                                            Else
                                                MsgBox "Error - " & Err & Chr$(13) & Chr$(10) & Error, _
                                                                                              16, "Error"
                                            End If
                                            FindRandom = "No Records"
                                            Exit Function
                                         
                                        End Function
                                        

                                        במחשבה שניה אפשר לוותר גם על MoveFirst לחלוטין ופשוט לזוז אחורה מספר רנדומלי, כך:

                                        ' MyRS.MoveFirst
                                         MyRS.Move -SpecificRecord
                                        
                                        S מנותק
                                        S מנותק
                                        spider
                                        כתב ב נערך לאחרונה על ידי
                                        #19

                                        @OdedDvir דבר ראשון תודה ענקית הקוד עזר לי מאוד!!!

                                        למה כל פעם כשאני פותח את הטופס, שאליו מוזן הרשומה רנדומאלית, מוצגת לי ההודעה הבאב:
                                        3576d6ab-a185-4da7-a864-da965d846edc-image.png

                                        dovid123123@gmail.com

                                        OdedDvirO תגובה 1 תגובה אחרונה
                                        0
                                        • S spider

                                          @OdedDvir דבר ראשון תודה ענקית הקוד עזר לי מאוד!!!

                                          למה כל פעם כשאני פותח את הטופס, שאליו מוזן הרשומה רנדומאלית, מוצגת לי ההודעה הבאב:
                                          3576d6ab-a185-4da7-a864-da965d846edc-image.png

                                          OdedDvirO מנותק
                                          OdedDvirO מנותק
                                          OdedDvir
                                          כתב ב נערך לאחרונה על ידי
                                          #20

                                          @spider אני מנחש שהשאילתא שממנה אתה מנסה לשלוף את הרשומה, היא גם השאילתא שעליה מבוסס גם הטופס, או שלכל הפחות היא כבר פתוחה בטופס אחר?
                                          במקרה כזה השאילתא ננעלת, וממילא לא תוכל לפתוח אותה בקוד הנ"ל. (כי הוראת הפתיחה בו היא לפתיחה דינמית שמאפשרת שינויים).
                                          אתה צריך לשנות את השורה 8 בקוד, דהיינו את:

                                              Set MyRS = MyDB.OpenRecordset(RecordSetName, dbOpenDynaset)
                                          

                                          לשורה הבאה:

                                              Set MyRS = MyDB.OpenRecordset(RecordSetName, dbReadOnly, dbOpenSnapshot)
                                          
                                          תגובה 1 תגובה אחרונה
                                          2
                                          תגובה
                                          • תגובה כנושא
                                          התחברו כדי לפרסם תגובה
                                          • מהישן לחדש
                                          • מהחדש לישן
                                          • הכי הרבה הצבעות


                                          בא תתחבר לדף היומי!
                                          • התחברות

                                          • אין לך חשבון עדיין? הרשמה

                                          • התחברו או הירשמו כדי לחפש.
                                          • פוסט ראשון
                                            פוסט אחרון
                                          0
                                          • דף הבית
                                          • קטגוריות
                                          • פוסטים אחרונים
                                          • משתמשים
                                          • חיפוש
                                          • חוקי הפורום