PDA

View Full Version : سوال: تغییر مسیر جداول لینک شده.



behzad5952
دوشنبه 23 اردیبهشت 1392, 11:40 صبح
از اساتید محترم کسی هست که بتونه فایل ضمیمه رو برای آفیس 2007 هم اصلاح کنه.

من این فایل رو توی تالار جستجو کردم ولی توی 2007 کار نمی کنه.

behzad5952
دوشنبه 23 اردیبهشت 1392, 13:57 عصر
اساتید محترم لطفا بررس بفرمایید...!

alirezabahrami
دوشنبه 23 اردیبهشت 1392, 20:06 عصر
از اساتید محترم کسی هست که بتونه فایل ضمیمه رو برای آفیس 2007 هم اصلاح کنه.

من این فایل رو توی تالار جستجو کردم ولی توی 2007 کار نمی کنه.
سلام
هرچند فایل حاوی جداول را ضمیمه نکرده اید و هرچند کدهای فایل ارسال شده نیاز به قدری تغییر دارد (مثلاً حذف جدول در صورت موجود بودن جدول مربوطه) ، ولی با این وجو در اکسس 2007 هم جواب میده.
خودت بگو کجاش ایراد داره!
موفق باشید

behzad5952
دوشنبه 23 اردیبهشت 1392, 23:47 عصر
سلام
خسته نباشید نمونه رو ملاحظه بفرمایید.
من می خوام این فایل به کپی فایل خودش در هر مسیری لینک بشه.

با تشکر.

behzad5952
سه شنبه 24 اردیبهشت 1392, 15:24 عصر
از دوستان و اساتید محترم کسی نیست که بتونه نمونه رو اصلاح کنه بخدا کارم حسابی گیر افتاده ,,,!

alirezabahrami
سه شنبه 24 اردیبهشت 1392, 17:30 عصر
سلام
خسته نباشید نمونه رو ملاحظه بفرمایید.
من می خوام این فایل به کپی فایل خودش در هر مسیری لینک بشه.

با تشکر.

از دوستان و اساتید محترم کسی نیست که بتونه نمونه رو اصلاح کنه بخدا کارم حسابی گیر افتاده ,,,!
سلام
ظاهراً به مطالب پست 3 دقت نداشته ايد.
برنامه شما بانك اطلاعاتي ندارد ؟ جدولها را از كدام بانك مي خواهيد به درون برنامه ات لينك كنيد ؟
اين كه گفتي من می خوام این فایل به کپی فایل خودش در هر مسیری لینک بشه يعني چه؟
به فرض اينكه شما داراي يك بانك اطلاعاتي هستيد كه Table1 و Table2 و Table3 و Table4 در آن هست و مي خواهيد ابتدا مسير اين ديتابيس را از داخل برنامه ات انتخاب و جداول آن را به درون برنامه ات لينك نمائيدكد زير را جايگزين كد هاي قبلي كن!



Private Sub ReLink_Click()
If Me.Path = "" Then
MsgBox "ãÓíÑ ÌÏÇæá ÑÇ ãÔÎÕ äãÇííÏ ", vbOKOnly, "ÎØÇ"
Exit Sub
End If
Dim tdf As TableDef, db As Database
Set db = CurrentDb
For Each tdf In db.TableDefs
If tdf.Attributes <> 0 And Left(tdf.Name, 1) <> "~" And Left(tdf.Name, 4) <> "msys" Then
DoCmd.DeleteObject acTable, tdf.Name
End If
Next
Set db = Nothing
Me.Path = GetOpenFile
DoCmd.TransferDatabase acLink, "Microsoft Access", Me.Path, acTable, "Table1", "Table1", False
DoCmd.TransferDatabase acLink, "Microsoft Access", Me.Path, acTable, "Table2", "Table2", False
DoCmd.TransferDatabase acLink, "Microsoft Access", Me.Path, acTable, "Table3", "Table3", False
DoCmd.TransferDatabase acLink, "Microsoft Access", Me.Path, acTable, "Table4", "Table4", False

End Sub


در كدهاي بالا ابتدا جداول مربوطه حذف و سپس لينك ميشوند.
موفق باشيد

behzad5952
سه شنبه 24 اردیبهشت 1392, 22:51 عصر
سلام جناب آقای alirezabahrami (http://barnamenevis.org/member.php?90573-alirezabahrami) عزیز.

منظور من از این که گفتم می خوام این فایل به کپی فایل خودش در هر مسیری لینک بشه اینه که وقتی اطلاعات کاربر دیگه ای که کپی برنامه رو داره و در اون اطلاعات وارد کرده به دست من می رسه و میخوام اون اصلاعات رو در کنار اطلاعات برنامه اصلی بررسی کنم در برنامه ام شرایطی رو ایجاد کردم از که از طریق جداول لینک این امکان رو برای من فراهم می کنه و مشکل اینه که در حال حاضر باید اجبارا فایل دوم رو تغییر نام بدم به 1 و حتما بایستی اون رو با این نام در درایو C قرار بدم تا ارتباط جداول برقرار بشه و من می خوام این تغییر نام اجباری و قرار دادن در درایو C از طریق کد نویس در برنامه اصلی رفع بشه تا دیگه نخوام این پروسه رو طی کنم و فایل با هر نامی و هرجایی به انتخاب کاربر بتونه در مسیر جدید up date بشه.
در ضمن من فقط میخوام مسیر جدید جداول ثبت بشه و فکر می کنم ممکنه این حذف جداول برای من حساب مشکل ساز بشه.
ممنون میشم اگر بتونید در این ضمینه به من کمک کنید.

با تشکر از لطف شما.

behzad5952
چهارشنبه 25 اردیبهشت 1392, 23:36 عصر
سوال من جواب نداره...؟

dalir49
پنج شنبه 26 اردیبهشت 1392, 06:15 صبح
با سلام
اگه جداول از اکسل لینک شده باشده این ماژول جواب نمی ده،دراین صورت باید چکار کنیم؟

alirezabahrami
پنج شنبه 26 اردیبهشت 1392, 21:38 عصر
سلام
ظاهراً به مطالب پست 3 دقت نداشته ايد.
برنامه شما بانك اطلاعاتي ندارد ؟ جدولها را از كدام بانك مي خواهيد به درون برنامه ات لينك كنيد ؟
اين كه گفتي من می خوام این فایل به کپی فایل خودش در هر مسیری لینک بشه يعني چه؟
به فرض اينكه شما داراي يك بانك اطلاعاتي هستيد كه Table1 و Table2 و Table3 و Table4 در آن هست و مي خواهيد ابتدا مسير اين ديتابيس را از داخل برنامه ات انتخاب و جداول آن را به درون برنامه ات لينك نمائيدكد زير را جايگزين كد هاي قبلي كن!



Private Sub ReLink_Click()
If Me.Path = "" Then
MsgBox "ãÓíÑ ÌÏÇæá ÑÇ ãÔÎÕ äãÇííÏ ", vbOKOnly, "ÎØÇ"
Exit Sub
End If
Dim tdf As TableDef, db As Database
Set db = CurrentDb
For Each tdf In db.TableDefs
If tdf.Attributes <> 0 And Left(tdf.Name, 1) <> "~" And Left(tdf.Name, 4) <> "msys" Then
DoCmd.DeleteObject acTable, tdf.Name
End If
Next
Set db = Nothing
Me.Path = GetOpenFile
DoCmd.TransferDatabase acLink, "Microsoft Access", Me.Path, acTable, "Table1", "Table1", False
DoCmd.TransferDatabase acLink, "Microsoft Access", Me.Path, acTable, "Table2", "Table2", False
DoCmd.TransferDatabase acLink, "Microsoft Access", Me.Path, acTable, "Table3", "Table3", False
DoCmd.TransferDatabase acLink, "Microsoft Access", Me.Path, acTable, "Table4", "Table4", False

End Sub


در كدهاي بالا ابتدا جداول مربوطه حذف و سپس لينك ميشوند.
موفق باشيد




سوال من جواب نداره...؟
سوالت جواب داره ولی متوجه منظورت نشدم
یا علی

behzad5952
شنبه 28 اردیبهشت 1392, 13:41 عصر
سلام :
کدهایی که فرموده بودید یه اشکال کوچیک داشت و اونم اینه که وقتی دستورات فوق را فراخوانی می کنم و پنجره انتخاب مسیر برنامه جدید پرسیده می شود بلافاصله جداول حذف می شود و این آنجایی مشکل ساز می شود که کاربر از انتخاب فایل به هر دلیلی انصراف دهد و یا مسیر اشتباه و یا فایل اشتباه انتخاب نمایید.

به هر حال جداول موجود چه کاربر فایل جدید را صحیح انتخاب کند و چه اشتباه انتخاب کند و یا در میانه کار انصراف دهد حذف خواهد شد و این مشکل ساز است .
اگر محبت کنید برای موارد فوق قبل از حذف جداول پیغام خطا پیش بینی نمایید ممنون می شوم .

با احترام.

alirezabahrami
شنبه 28 اردیبهشت 1392, 21:41 عصر
سلام
نمونه ضمیمه را ببین! اگر بتوانید درست از آن الگو برداری کنید فکر کنم نمونه خوبی باشد.
موفق باشید

behzad5952
شنبه 28 اردیبهشت 1392, 23:33 عصر
نمونه عالی بود و حرفه ای ولی نتونستم اون جوری که باید ازش استفاده کنم منت میگزارید اگر زحمت بکشید و نمونه قبلی رو اصلاح کنید.
با تشکر از پیگیری مستمر شما.

یا علی.

behzad5952
یک شنبه 29 اردیبهشت 1392, 12:18 عصر
سلام اگر انجام دادن این کار وقت گیره لطفا برام کدی رو بنویسید که بتونم با اون کد صحت وجود نام یک جدول و یا یک فیلد خاص از یک جدول رو در مسیر دیتا بیس انتخاب شده توسط کاربر چک کنم که اگر وجود این جدول در مسیر دیتابیس انتخاب شده توسط کاربر نباشه براش یه پیغام خطا بنویسم و فکر می کنم اینتوری بتونم مشکلم رو حل کنم.

ممنون.