בעיה עם INSERT TO

בטי12

New member
בעיה עם INSERT TO

אני מנסה להכניס שורה למסד הנתונים ויש לי SYNTAX ERROR בפקודת INSERT INTO ואין לי מושג מהי השורה היא זו: sql1 ="INSERT INTO userMichlol(work_id, ID, michlolNum, lngItemNumber, chooseItem1, chooseItem2, quantityChoose, total) VALUES " & workNum & ", " & userId & ", " & michlolnum & ", " & rs("lngItemNumber")& ", true, false, 0, 0" למישהו יש מושג מה הטעות?? אגב, כל הערכים מספריים ולכן לא שמתי גרש. חוץ מ- chooseItem1, chooseItem2 שהם CHECKBOX בתוך בסיס הנתונים שלהם הכנסתי TRUE ו-FALSE ניסיתי גם לשים גרש ל-TRUE ו-FALSE ועדיין היתה טעות,כנראה שזה משהו אחר. למישהו יש רעיון??? ?? תודה לכולם
 

בטי12

New member
יש לי עוד שאלה

בנוגע לשאלה הראשונה ששאלתי ,תודה זאת באמת היתה הבעיה.. עכשיו יש לי עוד בעיה : יש לי טבלת מוצרים עם כל פרטי המוצרים וכ"ו אני מציגה את הטבלה הזו בפני המשתמש והוא צריך לבחור ב-CHECKBOX ולסמן
במוצר שבחר , כמובן שאחרי שאישר את בחירת המוצרים אני מכניסה את הקוד שלהם לטבלה שנייה מעין "סל קניות" .המשתמש יכול לחזור אחורה ולבחור עוד מוצרים ,וכאן הבעיה:אני רוצה שמה שהוא בחר כבר יופיע מסומן ב-CHECKBOX איך אני אבצע את השאילתא הזו? מה אני יעבור מוצר מוצר וישווה בן שתי הטבלאות??? לא נראה לי! אני בטוחה שיש פתרון טוב יותר מישהו יכול לעזור לי?? תודה רבה
 

s h i m s h o n

New member
<נכנס לתחומים לא לי...>

אתה יכול לשים שאילתא במקום טבלה. ממילא אם הבנתי נכון אתה לא רוצה לבצע עדכונים/מחיקות בטבלת המוצרים אלא רק לבחור ממנה, תוכל לבצע שאילתא עם outer-join ל"סל הקניות":
SELECT products.product, CASE(WHEN basket.product IS NOT NULL THEN 'TRUE' ELSE 'FALSE') flag FROM products, basket WHERE products.product = basket.product(+)​
ש
 

בטי12

New member
לא כ"כ הבנתי את תשובתך...

נכון אני רק רוצה לבחור מטבלת מוצרים ולא לשנות אותה! בחלק הזה של השאילתא שהצעת לי: מה אומר ה : (+) בסוף השורה מה תפקידו?? השורה שכתבת:
WHERE products.product = basket.product(+)​
תודה רבה
 

s h i m s h o n

New member
זה נקרא outer-join או left-join

אם בשאילתא תבצע join רגיל (בלי (+)) בין טבלת המוצרים ל"סל הקניות", תקבל בתוצאה רק את המוצרים הקיימים בסל וזו לא המטרה. משמעות ה-"(+)" בסוף השורה היא: "הבא לי ערכים מטבלת ה-products בכל מקרה, ומטבלת סל הקניות הבא ערכים אם קיימת רשומה מתאימה בטבלה", כאשר ה"ערכים" המבוקשים מסל הקניות במקרה זה הם דגל TRUE/FALSE אם המוצר קיים בסל. מציע לך לקרוא קצת חומר בנושא בכל מקרה, זהו כלי שימושי ביותר ביום-יום. ש
 

מ ט ע

New member
שמשון תתעורר - זאת בחורה !!!../images/Emo68.gif

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

בטי12

New member
עוד משהו קטן..

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

s h i m s h o n

New member
ידע בסיסים

כן, הוא יוצר עמודה של דגל שנקראת flag. העמודה תכיל ערך מחרוזתי TRUE אם המוצר שבשורה קיים בסל הקניות, אחרת העמודה תכיל FALSE. לא שאני מומחה אקסס או VB אבל בצ'קבוקס בטוח קיימת אפשרות/property להתאים ערכים, כלומר: אחרי ששייכת את הצ'קבוקס לעמודה, אמור להיות בו מקום שאפשר לציין עבור אילו ערכים הוא יהיה "דלוק" ועבור אילו ערכים הוא יהיה "כבוי". אגב, בשאילתא בחרתי באופן שרירותי בערכים TRUE/FALSE. תוכלי (
) לשנות למעשה לכל ערך שתרצי, גם ערכים נומריים (אם זה יותר נוח לך עבור הצ'קבוקס, למשל). ש
 

בטי12

New member
עדיין בעיות..

ניסיתי להריץ את השאילתא:
sql="SELECT michlolShow.lngItemNumber,CASE(WHEN userMichlol.lngItemNumber IS NOT NULL THEN 1 ELSE 2)" & flag & " FROM michlolShow, userMichlol WHERE michlolShow.lngItemNumber = userMichlol.lngItemNumbe(+)" rs.Open sql,conn​
כפי שהצעת לי (שזה בדיוק מה שאני הייתי צריכה) אבל כאשר אני מריצה את השאילתא אני מקבלת את השגיאה הבאה: Error Type: (0x80004005) Unspecified error /mysite/try.asp, line 14 כאשר שורה 14 היא: rs.Open sql,conn מישהו יודע מה הבעיה??? תודה לכולם
 

s h i m s h o n

New member
אולי לא הסברתי את עצמי היטב

המילה flag צריכה להיות חלק מהשאילתא (בתוך מחרוזת ה-SQL) ולא שרשור של משתנה בשם flag:
sql="SELECT itemNumber,CASE(...) flag FROM...WHERE...(+)"​
ואז אחרי ביצוע open ל-sql תקבלי בחזרה שתי עמודות: 1) itemNumber 2) flag את הראשונה תציגי כקוד המוצר ולשנייה תצמידי צ'קבוקס כפי שדיברנו. מקווה שזה מבהיר, ש
 

בטי12

New member
לאחר ששיניתי

עשיתי עכשיו בדיוק כמו שאמרת לי:
set rs=Server.CreateObject("ADODB.recordset") sql="SELECT michlolShow.lngItemNumber,CASE(WHEN userMichlol.lngItemNumber IS NOT NULL THEN 1 ELSE 2)flag FROM michlolShow, userMichlol WHERE michlolShow.lngItemNumber = userMichlol.lngItemNumbe(+)" rs.Open sql,conn ועדיין יש את אותה שגיאה: Error Type: (0x80004005) Unspecified error /mysite/try.asp, line 14 מה זה אומר??????? יש למישהו מושג מה קורה פה??? תודה רבה לכולם​
 

s h i m s h o n

New member
יש שגיאה לא ספציפית בשורה 14..ברור!

ובאופן יותר ספציפי: נסי לשים רווח בין הסוגריים ל-flag. בנוסף: הסינטקס שנתתי לך של CASE הוא הסינטקס שאני מכיר אבל לא בהכרח זה שמתאים לאקסס - עלייך למצוא את הסינטקס המתאים ולתקן בהתאם (ואולי מישהו פה יהיה נחמד ויעזור לך). ש
 

בטי12

New member
זה לא הבעייה עם הרווח ב-flag

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

בטי12

New member
תראה...

זה מה ששימשון הציע לי לעשות ,אין לי מושג איך זה באקסס אבל הכוונה היתה (של ה-WHENׂ) שאם העמודה היא לא NULL אז תכניס ערך 1 לעמודה flag אחרת תשים שם מספר אחר. כבר אמרתי יש לי ידע ממש ממש בסיסי במסדי נתונים וזה פעם ראשונה שיוצא לי להתעסק עם זה אם הבנת את כוונתי ומה שאני רוצה לעשות תוכל לנסח לי את זה באקסס??
 
למעלה