אקסס

[eLad]

New member
אקסס

שלום כולם! אני עושה פוייקט באקסס ונתקלתי בבעיות הבאות: 1. בשאילתת פרמטר, איך אני יכול לבצע LIKE? ניסתי את השאילתה הבאה [יש לי בסיס מורחב בSQL]:
SELECT tblMovies.*, tblMovies.title FROM tblUsers INNER JOIN tblMovies ON tblUsers.userID=tblMovies.userID WHERE (((tblMovies.title) Like ´*[שם סרט]*´) AND ((tblUsers.userName)=[שם משתמש]) AND ((tblUsers.password)=[סיסמא]));​
כפי שראיתם, ´*[שם סרט]*´ LIKE לא יפעל כראוי, מפני שהוא חושב שמה שבתוך הסוגריים המרובעות הוא חלק מהמחרוזת. בהורדת הגרשים הבודדים הוא נותן שגיאת SYNTAX. איך אפשר לעשות LIKE על פרמטר מתקבל? 2. כפי שראיתם, אני מבקש גם שם משתמש וסיסמא. האם על כל פעולה אני אצטרך לעשות זאת או שיש דרך לשמור SESSION כלשהו (כמו בASP) או HIDDEN שיכיל אותם? 3. איך אני יכול להציג msgBox אם אין תוצאות לטופס מסויים? או להפעיל מאקרו מסויים? בתודה, אלעד.
 
תנסה, אני מקווה שיעבוד....

א. כוכבית אחת בלבד, אחרי שם הפרמטר. ב. אני אציג לך את זה כאן:
Like ´ & [שם סרט] & * ´)​
 

[eLad]

New member
לא... זה לא פועל

זה עדיין לא דורש את זה בפרמטר. אתה יודע את התשובות האחרות?
 
יש עוד אפשרות מעבר לפרמטר....

להשתמש במשתנה בקוד.... נתחיל מזה שהמשתנה יקבל את הנתון בפקד טקסט בטופס.... ואז להשתמש ב -
.... like ´" & Me![TXT] & "*´ ...​
יכול להיות שצריך לשחק במיקום של ה - * לגבי השאלות האחרות שלך.... אתה יכול במסך הפתיחה לקבל את ה-User וה-PassWord ולאחסן אותם במשתנה גלובאלי. דבר זה ימנע ממך את הצורך לבקש כל פעם מחדש נתונים אלו. לגבי השאלה השלישית
If DCount("[Field]","TBL","Criteria")<1 then Msgbox "אין רשומות בחתך"​
אני מקווה שעזרתי יותר
 

[eLad]

New member
../images/Emo51.gif

אבל משום מה זה לא פועל. אקסס יצר לי את הSUB הבא:
Private Sub Form_Open(Cancel As Integer) On Error GoTo Exit_Form_Open MsgBox DCount("[userID]", "tblUsers", "userID=" & [userID]) If DCount("[userID]", "tblUsers", "userID=" & [userID]) < 1 Then MsgBox "ריק" Exit_Form_Open: Exit Sub Err_Form_Open: MsgBox Err.Description Resume Exit_Form_Open End Sub​
אבל הוא לא מודיע לי כלום אם אין תוצאות... אגב, אם יש תוצאות הוא מודיע לי 1. אם אין גם את זה לא. איך אפשר לקבוע משתנה גלובלי ולפנות אליו בשאילתות? [עד עכשיו ביקשתי בשאילתת פרמטר את השם והסיסמא] בתודה, אלעד.
 
ברור מאליו....

אם אין ערך אז הוא לא יציג לך כלום כי הוא במצב של NULL. ניתן לעקוף את זה על ידי.... השינוי הבא (השינויים מהקוד שלך מודגשים)
Private Sub Form_Open(Cancel As Integer) Dim iCountValue As Integer On Error GoTo Exit_Form_Open iCountValue = Nz(DCount("[userID]", "tblUsers", "userID=" & [userID]),0) If iCountValue <> 1 Then MsgBox "ריק" else msgbox iCountValue end if Exit_Form_Open: Exit Sub Err_Form_Open: MsgBox Err.Description Resume Exit_Form_Open End Sub​
 

[eLad]

New member
זה עדיין לא עובד...

אפילו כשניסיתי לבדוק אם IsNull או שווה ל0 זה לא עשה כלום... ושוב
על ההענות.
 
למעלה