שלח תשובה

זירת השאלות

741
צפיות
8
תשובות

פקודת SQL בתכנות ב-VB6

,‏ 31 באוקטובר, 2008

היי

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

ידוע לי על 2 סוגי קוד:

Adodc1.RecordSource = "select * from qrClientFiles where DateDiyun >= '" & savDate1 & "'" & " and DateDiyun <='" & savDate2 & "'"

או

Adodc1.RecordSource = "select * from qrClientFiles where DateDiyun between '" & savDate1 & "'" & " and '" & savDate2 & "'"

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

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

תגיות:

8 תשובות

  1. RazyBlatt הגיב:

    פורמט תאריך
    נסה לשנות את פורמט התאריך ל mm/dd/yyyy
    כאילו שאנחנו בארה"ב


    רזי בלט

  2. mekory הגיב:

    ניסיתי – לא עזר

    כשאני משנה את הפורמט ל-MM/DD/YYYY אז הוא לא מוצא לי בכלל תאריך כי יתר התאריכים הם בפורמט הרגיל DD/MM/YYYY.

    ניסיתי לשנות גם את שאר התאריכים ל-MM/DD/YYYY כדי שיהיה זהה למיון אבל גם זה לא עזר.

    הקוד:

    Dim sDate1 As String
    Dim sDate2 As String
    sDate1 = Format(savDate1, "MM/DD/YYYY")
    sDate2 = Format(savDate2, "MM/DD/YYYY")
    DataGrid1.Caption = "מועדי דיון מתאריך  " & savDate1 & "  ועד תאריך  " & savDate2
    Adodc1.RecordSource = "select * from qrClientFiles where DateDiyun between '" & sDate1 & "'" & " and '" & sDate2 & "'"

  3. RazyBlatt הגיב:

    מול איזה בסיס נתונים אתה עובד?


    רזי

  4. RazyBlatt הגיב:

    באקסס: תאריך מקיפים עם סולמית ולא עם גרש
    במסד נתונים מסוג אקסס , במשפט SQL יש להקיף תאריך בסולמית # ולא בעזרת גרש '
    ולפיכך על פי הדוגמא שנתת , משפט הSQL שלך צריך להראות כך:

    SELECT * From qrClientFiles WHERE DateDiyun between #01/30/2007# and #02/30/2007#

    החלף את התאריכים שבדוגמא למשתנים שלך sDate1 וsDate2.


    רזי

  5. mekory הגיב:

    אז ככה…

    רזי שלום,

    ביצעתי מה שאמרת וכתבתי הקוד באופן הבא:

    Adodc1.RecordSource = "select * from qrClientFiles where DateDiyun between #sDate1# and #sDate2#"

    אולם קיבלתי את הודעת השגיאה הבאה:

    Syntax error in date in query expression ‘DateDiyun between #sDate1# and #sDate2#

    כשהחלפתי את המשתנים sDate1 ו-sDate2 לתאריכים, קיבלתי את הנתונים אולם:

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

    2. אילו היה בטווח, התאריכים היו קבועים ולא משתנים לפי פרמטר שהקיש המשתמש.

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

  6. RazyBlatt הגיב:

    שאלות
    האם השדה DateDiyun (המתקבל מהשאילתה qrClientFiles )
    הוא מסוג תאריך ?
    או שזהו שדה מסוג טקסט המכיל ערכים של תאריך?


    רזי

  7. RazyBlatt הגיב:

    המשך
    כי אז הקוד צריך להראות כך:
    Dim sDate1 As String
    Dim sDate2 As String
    sDate1 = Format(savDate1, "MM/DD/YYYY")
    sDate2 = Format(savDate2, "MM/DD/YYYY")

    Adodc1.RecordSource = "SELECT * From qrClientFiles" & _
                          " WHERE CDate([DateDiyun])" & _
                          " Between #" & sDate1 & "# And #" & sDate2 & "#;"


    רזי

שלח תשובה