נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: vb6 + sql | בעייה מוזרה

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
D.L
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 21 June 2007 בשעה 17:46 | IP רשוּם
ציטוט D.L

אני עובד עם visual basic 6 ומסד נתונים access 97
משום מה משפטי SQL מסויימים לא עובדים אצלי כמו שצריך
אשמח אם תסתכלו על הקוד הבא:
קוד:

sql = "select * from costumers where ID like '30%'"
Dim db As dao.Database
  Dim rs As dao.Recordset
  Set db = OpenDatabase(App.Path & "\db.mdb")

Set rs = db.OpenRecordset(sql)
     rs.MoveLast
     MsgBox rs.RecordCount


לפי מה שהבנתי, משפט ה SQL הזה אמרו להביא לי את כל הרשומות בהם ה ID של הלקוח מתחיל ב "30", סימן האחוז מסמן אינסופיות בעצם.
מסיבה לא מובנת, הקוד הזה לא עובד, משפט ה SQL לא מחזיר ערכים מהטבלה, למרות שיש שם ערכים מתאימים.

משהו עוד יותר מוזר - כשאני מחליף את סימן האחוז בסימן כוכבית, פתאום זה עובד.
סימן כוכבית עובד אצלי כמו שאמור לעבוד סימן אחוז. מחיפושים באינטרנט אף פעם לא ראיתי שמשתמשים בכוכבית בפונקציית LIKE .

מישהו מוכן להסביר לי מה לא בסדר?

חזרה לתחילת העמוד הצג את כרטיס החבר של D.L חפש הודעות אחרות של D.L בקר בדף הבית של D.L
 
:)
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 21 June 2007 בשעה 21:38 | IP רשוּם
ציטוט :)

זה נכון מה שיש לך :
מה שהאחוז הזה מסמן זה משהו כזה
'%a%'
אם יש אחוז לפני ה ערך זה אומר ש לא משנה מה יש לפני , כם יש אחוז אחרי זה אומר שלא משנה מה יש אחרי הדוגמה זה תביא את כול אלה שיש ב הם a איפה שהוא אבל אני לא יודע למה הקוד שלך לא עובד נראה לי בסדר
חזרה לתחילת העמוד הצג את כרטיס החבר של :) חפש הודעות אחרות של :) בקר בדף הבית של :)
 
D.L
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 22 June 2007 בשעה 12:20 | IP רשוּם
ציטוט D.L

אני יודע שהקוד בסדר...
אני שואל למה זה עובד רק עם כוכבית ולא עם אחוז
זה תחביר אחר לגמרי ממה שאני מכיר, לא פגשתי תחביר כזה בשום מקום אחר.
חזרה לתחילת העמוד הצג את כרטיס החבר של D.L חפש הודעות אחרות של D.L בקר בדף הבית של D.L
 
shlomoch
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 16 March 2006
מדינה: Israel
משתמש: מנותק/ת
הודעות: 33
נשלח בתאריך: 22 June 2007 בשעה 16:49 | IP רשוּם
ציטוט shlomoch

האם השדה ID מוגדר כמחרוזת?
אם כן אז לא ברור לי למה זה לא עובד, אם לא אז תגדיר אותו כמחרוזת.

חזרה לתחילת העמוד הצג את כרטיס החבר של shlomoch חפש הודעות אחרות של shlomoch
 
אורח
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 22 June 2007 בשעה 19:02 | IP רשוּם
ציטוט אורח

כמובן, אתה לא חייב להגדיר כמחרוזת, אתה יכול גם להשאיר כמו שהוא ולשרשר אליו מחרוזת ריקה.
חזרה לתחילת העמוד הצג את כרטיס החבר של אורח חפש הודעות אחרות של אורח בקר בדף הבית של אורח
 
D.L
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 22 June 2007 בשעה 19:20 | IP רשוּם
ציטוט D.L

זה מחרוזת
חזרה לתחילת העמוד הצג את כרטיס החבר של D.L חפש הודעות אחרות של D.L בקר בדף הבית של D.L
 
D.L
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 22 June 2007 בשעה 19:25 | IP רשוּם
ציטוט D.L

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

פרוייקטים של Access תוכננו להתחבר למסד נתונים עורפי של Microsoft SQL Server או של Microsoft SQL Server™ 2000 Desktop Engine (קודם לכן - MSDE). שפת Structured Query Language (SQL)‎ , היא שפת תכנות ואינטראקטיביות תקנית לעבודה עם מסדי נתונים יחסיים. שפת Transact-SQL היא ניב ה-SQL המקורי המשמש הן את SQL Server והן את Desktop Engine. שפת Transact-SQL תומכת ב- ANSI SQL-92, התקן העדכני של SQL. ב-Access 2002 ואילך, פרוייקטים המפעילים שאילתות וביטויי סינון על נתונים של SQL Server, חייבים לעשות זאת בתחביר ANSI SQL-92.

מסדי נתונים של Access משתמשים במנוע מסד הנתונים Jet לביצוע שאילתות כנגד הנתונים המקוריים. Jet תומך בתקן ANSI SQL-89 (להלן תחביר Jet SQL). תחביר Jet SQL שונה מהתקן של ANSI SQL-92 במספר אופנים. לדוגמה, תחביר Jet SQL משתמש בכוכבית (*) כסימן למספר תווים כלליים, ואילו תחביר ANSI SQL-92 משתמש בסימן האחוז (%).

לדוגמה, תחביר Jet SQL לבחירת כל הלקוחות מארץ ששמה מתחיל באות U:

SELECT * FROM Customers WHERE Country Like ‘U*’

תחביר ANSI SQL-92 לבחירת כל הלקוחות מארץ ששמה מתחיל באות U:

SELECT * FROM Customers WHERE Country Like ‘U


--------------------

לפי מה שהבנתי, סוגי SQL שונים. יש את ANSI SQL-92 שאותו כולם מכירים והוא הפופאלרי, לפי התחביר שלו, סימן אחוז אמור לעבוד.

ויש את JET SQL, תחביר ישן יותר, לא מוכר, ובתחביר הזה במקום אחוז צריך לרשום כוכבית וכנראה יש עוד שינויים שאני לא יודע עליהם
---------

עכשיו ספציפית לבעייה שלי, ככל הנראה, הויבי שלי מוגדר לעבוד בתחביר של JET-SQL
איך אני יכול לגרום לו לעבוד עם התחביר הנורמלי  ANSI SQL-92 ?
חזרה לתחילת העמוד הצג את כרטיס החבר של D.L חפש הודעות אחרות של D.L בקר בדף הבית של D.L
 
shlomoch
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 16 March 2006
מדינה: Israel
משתמש: מנותק/ת
הודעות: 33
נשלח בתאריך: 22 June 2007 בשעה 22:59 | IP רשוּם
ציטוט shlomoch

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

חזרה לתחילת העמוד הצג את כרטיס החבר של shlomoch חפש הודעות אחרות של shlomoch
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה