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

הפקודה Import Database Tables תייבא מהמחשב השולחני אל הפוקט טבלאות מתוך קובץ .mdb או מבסיס נתונים תומך ODBC. הפקודה Export Database Tables תייצא מהפוקט אל המחשב השולחני טבלאות מפורמט .cdb אל תוך בסיס נתונים על המחשב השולחני שיכול להיות קובץ .mdb או בסיס נתונים אחר תומך ODBC.
הסברים על הפעולות שמתבצעות מאחורי הקלעים ועל ביצוע המשימה בשימוש עם קוד תכנות תמצאו בכתבה המלאה.
אם תנסו להעתיק קובץ של Microsoft Access אל הפוקט תגלו ש-ActiveSync ממירה אותו מקובץ mdb לקובץ מיוחד שמותאם לפוקט - cdb. המרה הפוכה תתבצע בעת העברת מסד הנתונים מהפוקט אל המחשב השולחני.
הערה: אותה ההמרה תתבצע גם בהעברת בסיס נתונים של SQL Server או כל בסיס נתונים שתומך ב-ODBC (Open Database Connectivity). על נושאים מתקדמים אלו אני אדבר בכתבת ההמשך לכתבה זו.
ההמרה מתבצעת באמצעות פילטר מיוחד שנמצא בקובץ adofiltr.dll. תמצאו את הקובץ בספריה של התוכנה ActiveSync.
שימו לב! MS-Access אינה יכולה לקרוא את הקבצים שהומרו לפורמט .cdb ובנוסף לכך, לאחר ההמרה מהפוקט אל המחשב חלק מהנתונים המקוריים לא יחזרו אלא יאבדו. הפורמט המתקבל לרוב יהיה של Access95 ונסיון פתיחה של הקובץ יציג בקשה להמרה לפורמט החדש של Access 2002/2003. אפשרות להצגת הנתונים ללא המרה תהיה לקריאה בלבד.
על-מנת שנוכל להשתמש ב-API הזה עלינו לייבא את שתי הפונקציות אל סביבת הפיתוח באופן הרגיל בו מייבאים DLL. שתי הפונקציות המרכזיות הן:
העברת נתונים מהמחשב השולחני אל הפוקט:
DESKTOPTODEVICE (DesktopLocn, TableList, Sync, Overwrite, DeviceLocn)
העברת נתונים מהפוקט אל המחשב השולחני:
DEVICETODESKTOP (DesktopLocn, TableList, Sync, Overwrite, DeviceLocn)
הסבר לפרמטרים: DesktopLocn זהו שם קובץ ה-Access או mdb הכולל נתיב מלא להימצאו במחשב השולחני -או- שם ה-DSN של בסיס הנתונים תומך ODBC.
TableList רשימת הטבלאות להעתקה מהמחשב לפוקט או להפך (בהתאם לפונקציה שבשימוש). בכדי להעביר את כל הטבלאות יש להכניס מחרוזת ריקה. בכדי להעביר מספר טבלאות מסויימות, יש להשתמש בפורמט: "Table1..Table2..Table3"
Sync ערכי true/false. בשימוש מול Pocket PC יש להשתמש ב- true כלומר לאפשר את ActiveSync בזמן העברת הנתונים. (פרמטר אינו חובה, true ברירת מחדל)
Overwrite ערכי true/false. אם שם הטבלה קיים, בחירה ב-true תגרוס את הטבלה המיועדת. false תייצר הודעת שגיאה בזמן העתקה אל המחשב השולחני או שתשנה לטבלה את שמה בזמן העתקה אל הפוקט. (הפרמטר אינו חובה - true ברירת מחדל)
DeviceLocn מיקום בסיס הנתונים על הפוקט (קובץ ה-cdb)
ייבוא הפונקציות מסביבות פיתוח שונות: מכיוון שלשתי הפונקציות אותם פרמטרים, כדי לייבא את שתיהן יש להחליף את שם הפונקציה DEVICETODESKTOP ב- DESKTOPTODEVICE.
באמצעות Visual Basic:
Declare Function DEVICETODESKTOP Lib "\Program files\Microsoft ActiveSync\adofiltr.dll" (ByVal desktoplocn As String, ByVal tablelist As String, ByVal sync As Boolean, ByVal overwrite As Integer, ByVal devicelocn As String) As Long
באמצעות #C עם Visual Studio 2003 .NET:
[ DllImport(@"\Program Files\Microsoft ActiveSync\adofiltr.dll") ] private extern static int DESKTOPTODEVICE(String DesktopLocation, String TableList, bool Sync, Int16 Overwrite, String DeviceLocation);
הערה: יש להמיר את משתנה ה-Overwrite למשתנה בוליאני. במיוחד ב- #C שם בדיקת הטיפוסים מחמירה במיוחד.
הערות חשובות: 1. עליכם לוודא כי הנתיב המצויין של ActiveSync נכון. 2. קוד זה מיועד לרוץ דרך המחשב השולחני ולא דרך הפוקט! שימו לב כי אנו מייבאים פונקציות מ-DLL שקומפל עבור ה-PC ולכן לא ניתן לעשות בו שימוש על הפוקט.
בכתבה הבאה אני אתאר כיצד לתקשר, לשאוב ולשנות נתונים מתוך בסיס הנתונים בפורמט .cdb לאחר שעבר המרה אל הפוקט.
תגובות, הערות ותוספות יתקבלו בברכה.
את הכתבה תוכלו למצוא גם בפורום להמשך דיונים מעמיקים בנושא.
אמיר ולדמן (BlastPPC) פורום המפתחים פוקט פיסי פריק
|