עזרה ב VB אקסס

אריה123

משתמש מקצוען
D I G I T A L
1. יש אפשרות לעשות שרשימה נגללת תפתח אוטומטית בעת קבלת מוקד ?
2. איך עושים שהטופס יתריע לה אם הקלדתי בשדה מסוים נתון שכבר קיים פעם אחת במערכת. (שיהיה אפשר לרשום בכפילות, אבל לקבל על זה התראה).

תודה מראש לשמחים לעזור.
 

moishy

משתמש סופר מקצוען
מנוי פרימיום
באמצעות DLookup.
 

moishy

משתמש סופר מקצוען
מנוי פרימיום
אני הייתי עושה משהו כזה (לא בדקתי אם זה עובד, אבל מסברא נראה שכן)
קוד:
If InStr(DLookup("[שם השדה בטבלה]", "[שם הטבלה]"), Me.txtSample) > 1 Then
[LEFT]  MsgBox "הערך שהוזן כבר קיים במערכת!", vbMsgBoxRight + vbMsgBoxRtlReading + vbInformation, "מידע קיים"
End If
[/LEFT]
 

אריה123

משתמש מקצוען
D I G I T A L
משם מה זה לא עובד.
הערך שחוזר זה 0 אפילו אם קיימת כבר כזו רשומה.
 

moishy

משתמש סופר מקצוען
מנוי פרימיום
האם שינית את txtSample לשם של תיבת הטקסט שבו מוכנסת הערך הנבדק?
 

חבלזון

משתמש חדש
פונקציה אחרת

לדעתי הפונקציה היא Dcount ולא instr

ולכן
קוד:
If Dcount ("[שם השדה בטבלה]", "[שם הטבלה]"), Me.txtSample) > 1 Then
  MsgBox "הערך שהוזן כבר קיים במערכת!", vbMsgBoxRight + vbMsgBoxRtlReading + vbInformation, "מידע קיים"
End If
 

אריה123

משתמש מקצוען
D I G I T A L
נכתב ע"י חבלזון;922512:
לדעתי הפונקציה היא Dcount ולא instr

ולכן
קוד:
If Dcount ("[שם השדה בטבלה]", "[שם הטבלה]"), Me.txtSample) > 1 Then
  MsgBox "הערך שהוזן כבר קיים במערכת!", vbMsgBoxRight + vbMsgBoxRtlReading + vbInformation, "מידע קיים"
End If

לא עובד...
יכול להיות שחסר כאן DLOOKUP ? בכל מקרה, הוספתי את הדלוקאפ וזה לא עובד.
הוא לוקח את הערך של השדה הנוכחי ולא את הערך מהטבלה.
 

חבלזון

משתמש חדש
תיקון

לא צריך Dlookup.

אבל היתה לי טעות בקוד אז הנה הוא מתוקן
(השינויים- המספר שונה ל-0, במאפיין הוספתי text כי זה התוכן שהוקלד (עוד לפני שנשמר בשדה)


קוד:
If Dcount ("[שם השדה בטבלה]", "[שם הטבלה]", Me.txtSample[B].Text[/B]) > [B]0[/B] Then
  MsgBox "הערך שהוזן כבר קיים במערכת!", vbMsgBoxRight + vbMsgBoxRtlReading + vbInformation, "מידע קיים"
End If
 

נדמ

משתמש פעיל
מנוי פרימיום
בוגר/תלמיד פרוג
D I G I T A L
אוטומציה עסקית
הקוד

קוד:
[LEFT]if dlookup("filed", "table", "[filed] = '" & erech & "'") =  erech  then
msgbox "הערך קיים כבר"
end if[/LEFT]

filed - שם השדה (שימי לב צריך פעמיים)
table - שם הטבלה
erech - הערך שמחפשים בטבלה.
אם מדובר בערך טקסט צריך להקפיד על ' בתוך גרשיים כמו בדוגמא. אם מדובר במספר צריך להסיר את ה-'.
 

moishy

משתמש סופר מקצוען
מנוי פרימיום
תנסה אחד מהאפשרויות הבאות:
קוד:
If DCount("[שם השדה בטבלה]", "[שם הטבלה]", "'" & Me.txtSample & "'") > 1 Then
או
קוד:
If Not IsNull(DLookup("[שם השדה בטבלה]", "[שם הטבלה]", "'" & Me.txtSample & "'")) Then
 

אריה123

משתמש מקצוען
D I G I T A L
נכתב ע"י חבלזון;922814:
לא צריך Dlookup.

אבל היתה לי טעות בקוד אז הנה הוא מתוקן
(השינויים- המספר שונה ל-0, במאפיין הוספתי text כי זה התוכן שהוקלד (עוד לפני שנשמר בשדה)


קוד:
If Dcount ("[שם השדה בטבלה]", "[שם הטבלה]", Me.txtSample[B].Text[/B]) > [B]0[/B] Then
  MsgBox "הערך שהוזן כבר קיים במערכת!", vbMsgBoxRight + vbMsgBoxRtlReading + vbInformation, "מידע קיים"
End If

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

moishy

משתמש סופר מקצוען
מנוי פרימיום
האם האפשרויות שהצעתי עבדו?
 

אריה123

משתמש מקצוען
D I G I T A L
נכתב ע"י moishy;922913:
האם האפשרויות שהצעתי עבדו?

לא.

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

תודה רבה רבה רבה רבה אין מילים.
 

חבלזון

משתמש חדש
נכתב ע"י מיכל123;923183:
לא.

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

תודה רבה רבה רבה רבה אין מילים.

מנסיון- זו לא הסיבה [השם הדומה]. מאחר והוספת "me" הוא מתייחס רק לטופס.

צריך לשנות את הפונקציה כך:

יש בה שלשה ארגומנטים, 1- תנאי איזה מהתוצאות לספור, ולכן נותנים לו * כי אין לנו בעצם תנאי.
2- איזו טבלה לבדוק, נותנים לו את שם הטבלה
3- הטקסט לחפש, בצורת תנאי, כלומר השדה פלוני שווה ל-כאן מפנים לאובייקט תיבת הטקסט.

הנה דוגמה מתוך תוכנה פועלת שלי: [משווה תוכן מתיבת טקסט MyId לטבלת Talmid]
קוד:
IF DCount("*", "TALMID", "[ID] = '" & MyId & "'") >0

את הבדיקה הכנסתי באירוע של befor update ולכן אם אין עוד כזה תוכן התוצאה אפס, במקרה שהבדיקה היא לאחר העדכון צריך לבדוק אם אין יותר מפעם אחת ולא אפס.

בהצלחה.
 

אריה123

משתמש מקצוען
D I G I T A L
נכתב ע"י חבלזון;923192:
מנסיון- זו לא הסיבה [השם הדומה]. מאחר והוספת "me" הוא מתייחס רק לטופס.

צריך לשנות את הפונקציה כך:

יש בה שלשה ארגומנטים, 1- תנאי איזה מהתוצאות לספור, ולכן נותנים לו * כי אין לנו בעצם תנאי.
2- איזו טבלה לבדוק, נותנים לו את שם הטבלה
3- הטקסט לחפש, בצורת תנאי, כלומר השדה פלוני שווה ל-כאן מפנים לאובייקט תיבת הטקסט.

הנה דוגמה מתוך תוכנה פועלת שלי: [משווה תוכן מתיבת טקסט MyId לטבלת Talmid]
קוד:
IF DCount("*", "TALMID", "[ID] = '" & MyId & "'") >0

את הבדיקה הכנסתי באירוע של befor update ולכן אם אין עוד כזה תוכן התוצאה אפס, במקרה שהבדיקה היא לאחר העדכון צריך לבדוק אם אין יותר מפעם אחת ולא אפס.

בהצלחה.

ברוך השם זה עובד.
תודה למוישי ותודה לחבלזון.

ותודה גם ל"נדמ", אבל משום מה הקוד שלך לא עבד.
 

אולי מעניין אותך גם...

הפרק היומי

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


תהילים פרק קלא

א שִׁיר הַמַּעֲלוֹת לְדָוִד יְהוָה לֹא גָבַהּ לִבִּי וְלֹא רָמוּ עֵינַי וְלֹא הִלַּכְתִּי בִּגְדֹלוֹת וּבְנִפְלָאוֹת מִמֶּנִּי:ב אִם לֹא שִׁוִּיתִי וְדוֹמַמְתִּי נַפְשִׁי כְּגָמֻל עֲלֵי אִמּוֹ כַּגָּמֻל עָלַי נַפְשִׁי:ג יַחֵל יִשְׂרָאֵל אֶל יְהוָה מֵעַתָּה וְעַד עוֹלָם:
נקרא  4  פעמים

אתגר AI

ממה זה עשוי...? • אתגר 16

לוח מודעות

למעלה