עבר עריכה לאחרונה בתאריך 14.01.03 בשעה 19:30
אהלן Board_manלשאלה שלך יש כמה וכמה אפשרויות, זה תלוי איזה מסד נתונים, מה אתה רוצה לעשות וכו'. אבל האפשרות הטובה ביותר היום היא בעזרת שימוש במה שנקרא ADO. זוהי טכנולוגיה לגישה למסדי נתונים ActiveX Data Objects. הרעיון בכללי מאד היא שאתה פותח קישור (CONNECTION) למסד נתונים כלשהו, ואז מבצע קריאות/כתיבות מהמסד נתונים. אחד היתרונות של הטכנולוגיה היא שאם אתה מחליף סוג של מסד נתונים נגיד מאקסס לשרת SQL כל שעליך לעשות הוא לשנות שורת קוד אחת בתוכנית שלך.
ישנם המון המון אתרים והסברים על ADO באינרנט ולא אכנס לכל ההסברים האלה כאן. אבל שלא תגיד שסתם קישקשתי ולא עניתי לך על השאלה אז להל"ן דוגמא לעבודה בסיסית עם אקסס מתוך תוכנית של VB.
תיאור כללי:
יש לנו על טופס 2 שדות טקסט וכפתור אחד לחיפוש :
1) מספר תעודת זהות לחיפוש. (txtTZ)
2) שם של בעל תעודת הזהות שחיפשנו. (txtName)
3) כפתור חיפוש. (cmdFind)
כמובן שיש לנו טבלה במסד נתונים (db1.mdb) שנקראת Table1 ובטבלה 2 שדות:
1) TZ המייצג את תעודת הזהות.
2) personName המייצג את שם הבן אדם.
דבר ראשון שעלינו לעשות בפרוייקט של VB זה להוסיף הפניה לADO:
נכנסים לתפריט PROJECT ובוחרים REFERENCES ומדפדפים ומסמנים את:
Microsoft ActiveX Data Objects 2.5 Library
אם אין את 2.5 כל אחת מהגרסאות תעבוד עם הדוגמה הזאת.
עכשיו לקוד.
להל"ן קטע הקוד של אירוע הקליק של כפתור החיפוש ביחד עם הסברים.
Private Sub cmdFind_Click() 'הגדרת משתנים לקישור ולרשומה Dim conn As New ADODB.Connection 'זהו אובייקט קישור למסד נתונים Dim rs As New ADODB.Recordset 'זהו אובייקט רשומה לשליפת נתונים מתוך טבלה 'דבר ראשון נבדוק שהוזן טקסט בשדה חיפוש If txtTZ.Text = "" Then 'לא הוזן טקסט ולכן נאפס את המשתנים,ניתן הודעה ונצא מהרוטינה Set conn = Nothing Set rs = Nothing MsgBox "נא להזין ת.ז. לחיפוש" Exit Sub End If 'כעת נגדיר את הקישור למסד הנתונים 'כמובן שיש לשנות את שם מסד הנתונים והמיקום שלו למה שאתה צריך conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb" 'עכשיו פתיחה של הקישור conn.Open 'עכשיו ננסה לחפש בטבלה את הרשומה של בעל תעודת הזהות 'נפתח את הרשומה עם שאילתה פשוטה rs.Open "SELECT * FROM Table1 WHERE TZ='" & txtTZ.Text & "'", conn 'כעת נבדוק האם נמצאה רשומה כזאת If Not rs.EOF Then 'נימצאה הרשומה, נציג בתיבת השם את התוצאה txtName.Text = rs!personName Else 'אין בן אדם כזה, נציג שלא נימצא הבן אדם txtName.Text = "לא נימצא אדם עם התעודת זהות שהקשת" End If 'מה שנותר זה לסגור את המשתנים שלנו ולשחרר אותם מהזיכרון rs.Close conn.Close Set rs = Nothing Set conn = Nothing End Sub
|
אני מקוה שכל ההסבר היה ברור ואני מקוה שזה עזר.
כמו כן צירפתי את קוד הדוגמה עם מסד הנתונים המתואר לנוחיותך.
ניתן לבדוק שזה עובד על ידי חיפוש של תעודות הזהות 111111111, 123456789, 987654321. כמו כן בשביל לראות מה קורה כאשר התוכנית לא מוצאת את הבן אדם הזה, תנסה תעודת זהות אחרת.
שמחתי.
א.