פונקציית vba & odbc
-
@ליבל אמר בפונקציית vba & odbc:
ב"ה נראה לי שהצלחתי אבל עדיין אין לי אינדקציה לזה (פשוט אין שגיאות...)
איך אני צריך להביא את הטבלאות ע"י sql ?תלוי מה שיטת העבודה שלך. אם אתה רק רוצה לגשת לנתונים דרך VBA יש פונקציות לקרוא Recordset
אבל -
אם יש לך טפסים שמבוססים על טבלאות תצטרך לאכלס אותם על ידי VBA או להשתמש בטבלאות מקושרות DAO ובפונקציה שכתבתי לך למעלה -
@OdedDvir אני אכן צריך שיהיה לי טבלאות מקושרות
וזה מאוד תמוה אצלי, קיבלתי קובץ אקסס של חברה מסוימת סגור כמובן, וכשאני פותח במצב בטוח אני רואה את כל הטבלאות מקושרות ע"י odbc וכשאני מחפש את מקור הקובץ פשוט אין זכר לדבר ! איך יכול להיות ?? אולי זה ע"י הפונקציה שעליה דיברת @OdedDvir ?
נ.ב. אין לי גישה למודלים של הקובץ הנ"ל -
@ליבל אמר בפונקציית vba & odbc:
@OdedDvir אני אכן צריך שיהיה לי טבלאות מקושרות
וזה מאוד תמוה אצלי, קיבלתי קובץ אקסס של חברה מסוימת סגור כמובן, וכשאני פותח במצב בטוח אני רואה את כל הטבלאות מקושרות ע"י odbc וכשאני מחפש את מקור הקובץ פשוט אין זכר לדבר ! איך יכול להיות ?? אולי זה ע"י הפונקציה שעליה דיברת @OdedDvir ?
נ.ב. אין לי גישה למודלים של הקובץיתכן שהטבלאות מקושרות על ידי קוד VBA עם טעינת הקובץ. אם אין לך גישה למודלים אתה לא יכול לכתוב קוד VBA...
מה בדיוק אתה צריך לעשות עם הקובץ הזה? -
@OdedDvir אמר בפונקציית vba & odbc:
יתכן שהטבלאות מקושרות על ידי קוד VBA עם טעינת הקובץ. אם אין לך גישה למודלים אתה לא יכול לכתוב קוד VBA...
זה מה ששאלתי האם זה יתכן, זה פשוט הכי טוב לדעתי כדי לקשר טבלאות
@OdedDvir אמר בפונקציית vba & odbc:
מה בדיוק אתה צריך לעשות עם הקובץ הזה?
?
-
אני רוצה שהטבלאות יקושרו ע"י VBA באופן נורמלי - לפי הבנתי הקוד שכעת עובד לי זה רק מייבא לי את הטבלאות לאקסס, אני צריך שיהיה מקושר.
@ליבל אמר בפונקציית vba & odbc:
אם אין לך גישה למודלים אתה לא יכול לכתוב קוד VBA...
התכוונתי לקובץ שקיבלתי מהחברה הנ"ל
-
@ליבל מסיבה מסויימת אתה חוסך במלל או הסברים,
אולי בגלל שהקובץ הזה טובל בפשעים חמורים נגד האנושות או משהו דומה
תדבר הכל חופשי, אנחנו לא נבין מעבר לחלק הטכני/לא נראה את הכובע שעל ראש הגנב/לא נכעס שלא הבנת משהו פשוט. תרגיש בנח לספר סיפור מלא ומפורט. -
@dovid תודה הרגשתי קצת שמשהו לא שווה כאן
אנסה להסביר שוב, במידה ועדיין לא מובן אשמח לענות
אני רוצה לחבר את הקובץ אקסס לטבלאות בשרת, כרגע האקסס מסונכרן ע"י גוף שלישי (odbc שזה קובץ מקומי במחשב). אני רוצה שבמקום שהנתוני חיבור הכול יתנהל בהיזשהו צורה ע"י האקסס \ VBA , וכפי שהבנתי הפונקציה שהבאתי כאן די מוגבלת כלומר עדיין לא הבנתי איך אני מקשר דרכו את הטבלאות -
@ליבל תפתח מודל חדש ותדביק את הקוד הבא (מאתר מייקרוסופט)
'//Name : AttachDSNLessTable '//Purpose : Create a linked table to SQL Server without using a DSN '//Parameters '// stLocalTableName: Name of the table that you are creating in the current database '// stRemoteTableName: Name of the table that you are linking to on the SQL Server database '// stServer: Name of the SQL Server that you are linking to '// stDatabase: Name of the SQL Server database that you are linking to '// stUsername: Name of the SQL Server user who can connect to SQL Server, leave blank to use a Trusted Connection '// stPassword: SQL Server user password Function AttachDSNLessTable(stLocalTableName As String, stRemoteTableName As String, stServer As String, stDatabase As String, Optional stUsername As String, Optional stPassword As String) On Error GoTo AttachDSNLessTable_Err Dim td As TableDef Dim stConnect As String For Each td In CurrentDb.TableDefs If td.Name = stLocalTableName Then CurrentDb.TableDefs.Delete stLocalTableName End If Next If Len(stUsername) = 0 Then '//Use trusted authentication if stUsername is not supplied. stConnect = "ODBC;DRIVER=SQL Server;SERVER=" & stServer & ";DATABASE=" & stDatabase & ";Trusted_Connection=Yes" Else '//WARNING: This will save the username and the password with the linked table information. stConnect = "ODBC;DRIVER=SQL Server;SERVER=" & stServer & ";DATABASE=" & stDatabase & ";UID=" & stUsername & ";PWD=" & stPassword End If Set td = CurrentDb.CreateTableDef(stLocalTableName, dbAttachSavePWD, stRemoteTableName, stConnect) CurrentDb.TableDefs.Append td AttachDSNLessTable = True Exit Function AttachDSNLessTable_Err: AttachDSNLessTable = False MsgBox "AttachDSNLessTable encountered an unexpected error: " & Err.Description End Function
הפונקציה הזו יוצרת קישור חדש לטבלה, ואם הטבלה כבר קיימת היא מוחקת את הקישור הקיים.
תחביר קריאה לפונקציה:AttachDSNLessTable("dbo_myTable", "dbo.myTable", "SERVER_IP", "dbName", "user", "password")