PDA

View Full Version : استفاده از بانک اکسس در شبکه



ehsanocx
پنج شنبه 24 آذر 1390, 17:09 عصر
سلام دوستان
دوستان من یک برنامه نوشتم و این برنامه رو روی دوتا سیستم نصب کردم و این دو کامپیوتر با هم شبکه هستند.
حالا می خوام این دوتا برنامه ها با یک بانک اکسس کار کنند. می خوام بدونم همچین کاری امکان پذیر است؟ اگر می شود چطوری؟

joker_pok
پنج شنبه 24 آذر 1390, 20:05 عصر
نه فدات نمیشهاگر هم یشه باید برنامه سرور و کلاینت بنویسی دیتابیس رو سرور باشه کلاینت به سرور متصل بشه

ho3ein.3ven
پنج شنبه 24 آذر 1390, 22:40 عصر
کار نشد نیست داداش

_behnam_
پنج شنبه 24 آذر 1390, 23:25 عصر
توی شبکه میشه, باید کانکشن استرینگ (http://connectionstrings.com/access) رو تغییر بدی

kitcat_m18
جمعه 25 آذر 1390, 11:15 صبح
داداشم بانک رو Share كن بعد از Link Table استفاده كن
به قول دوستمون كار نشد نداره
موفق باشي :اشتباه:

massood
پنج شنبه 08 دی 1390, 18:41 عصر
درسته می شه. یادمه چند سال پیش با همین connection string امتحانش کردم.

oveshli
چهارشنبه 05 بهمن 1390, 00:59 صبح
سلام دوستان
من با شماره آي پي امتحان كردم ، درست شد / البته نبايد شماره آي پي روي شبكه تغيير كنه

m_zargarnia
سه شنبه 11 بهمن 1390, 12:59 عصر
داداشم بانک رو Share كن بعد از Link Table استفاده كن
به قول دوستمون كار نشد نداره
موفق باشي :اشتباه:

ميشه درباره Link Table بيشتر توضيح بديد و يه نمونه برنامه هم بزاريد .

mehdijoooon
چهارشنبه 12 بهمن 1390, 14:38 عصر
سلام اومدم يه تاپيك با همين سوال بزنم!!:خجالت:
همين مشكل واسه منم هست اگه يه نمونه بذارين ممنون ميشم...

hrj1981
چهارشنبه 12 بهمن 1390, 15:21 عصر
براي اين كار دو روش رو بهتون پيشنهاد ميكنم
1.فولدر بانك اطلاعاتي رو شير كنيد و برنامتون رو طوري طراحي كنيد كه بتونيد مسير شير رو از داخل برنامه وارد كنيد.
به طور مثال وقتي كانكشن استرينگ رو داريد كد نويسي ميكنيد اون قسمتي رو كه مربوط به مسير بانك اطلاعاتيون هست را به صورت يك رشته بگذاريد و اون رشته را يا داخل يك تكس باكس وارد كنيد و يا از يك Commondialog مسير فايل بانك اطلاعاتي رو بهش بديد.
2.استفاده از يك رابط udl است . شما يك فايل txt معمولي ايجاد كنيد و سپس پسوندش رو به udl تغيير بديد و اون رو كنار برنامه بگذاريد و سپس تويه كانشكن استرينگ
اون قسمتي كه مربوط به open كردن كانشكن است مسير فايل udl رو به صورت زير وارد كنيد


"File Name=" & مسير فايل udl & "\نام فايل .udl"

اين قسمت اول كار بود ، حالا با بازكردن فايل udl بايد مسير بانك اطلاعاتي رو بهش بديم.توي تب Privider گزينه Microsoft Jet 4.0 OLE... رو انتخاب كنيد ، سپس تو تب connection مسير فايل بانك اطلاعاتي رو بهش بديد ( فرقي نميكنه تو كامپيوتر خودتون باشه يا تو شبكه) حالا برنامه رو تست كنيد

meysam.moh
چهارشنبه 12 بهمن 1390, 20:12 عصر
براي اين كار دو روش رو بهتون پيشنهاد ميكنم
1.فولدر بانك اطلاعاتي رو شير كنيد و برنامتون رو طوري طراحي كنيد كه بتونيد مسير شير رو از داخل برنامه وارد كنيد.
به طور مثال وقتي كانكشن استرينگ رو داريد كد نويسي ميكنيد اون قسمتي رو كه مربوط به مسير بانك اطلاعاتيون هست را به صورت يك رشته بگذاريد و اون رشته را يا داخل يك تكس باكس وارد كنيد و يا از يك Commondialog مسير فايل بانك اطلاعاتي رو بهش بديد.


این قسمتو میشه یه نمونه سورس کد بزارید ؟

mehdijoooon
پنج شنبه 13 بهمن 1390, 11:08 صبح
سلام با تشکر از راهنمایی اما یکم مبتدی تر میشه توضیح بدین یا به قول دوستمون نمونه بذارین؟
جایی که میخوایم فولدر بانک رو Share کنیم چطوری میشه و اصولا چطوری آدرس بانک رو تو برنامه میدیم؟

M.T.P
پنج شنبه 13 بهمن 1390, 12:00 عصر
طریقه اتصال به بانک اکسس در شبکه:



Option Explicit

Dim Conn As ADODB.Connection

Sub ConnectDB(ByVal dbPath As String)
Dim StrCS As String
StrCS = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Mode=ReadWrite;" & _
"Persist Security Info=False;" & _
"Jet OLEDB:Database Password=12345;" & _
"Data Source=" & dbPath & ";"

Set Conn = New ADODB.Connection
Conn.Open StrCS
End Sub

Private Sub Form_Load()
Dim StrPath As String
StrPath = "\\serverName\ShareFolder\myDatabase.mdb"
Call ConnectDB(StrPath)
End Sub


کد اینقدر خوانا هست که نیاز به توضیح نباشه اما چیزی که شما باید در اینجا بستگی به تنظیمات شبکه تون تغییر بدید مسیر StrPath هست ، شما باید به جای servername نام کامپیوتر مقصد حاوی بانک اکسس و یا آدرس IP اون رو وارد کنید و به جای ShareFolder نام فولدر Share شده که بانک اکسس داخلش هست رو بنویسید. (طریقه Share کردن فولدر رو هم که باید بدونید)

خب یه سوال پیش میاد و اون اینکه اگه آدرس شبکه تغییر کرد و یا عنوان بانک یا فولدرش بعدا تغییر کرد باید مجدد کد نویسی کنیم و مسیر بانک بدیم که در جواب باید گفت شما میتونید این مسیر رو از یک کنترل TextBox بگیرید و هر زمان که مایل بودید اونو تغییر بدید. یعنی:




Dim StrPath As String
StrPath = Text1.Text
Call ConnectDB(StrPath)


موفق باشید./

kitcat_m18
پنج شنبه 13 بهمن 1390, 12:41 عصر
دوستان معذرت می خوام اما Share کردن بانک اکسس جواب گو نیست.
وقتی چند تا کاربر دارن از بانک استفاده می کنن(البته نمی دونم همزمان چند تا کاربر می تونن به فایل اکسس وصل بشن یا نه چون ممکنه پیغام In Use بده) سرعت خیلی میاد پایین.
بهترین روش Link Table هست.
سعی می کنم یه فیلم آموزشی براتون بذارم.
موفق باشید :لبخندساده:

meysam.moh
پنج شنبه 13 بهمن 1390, 13:27 عصر
M.T.P : ممنون خیلی کدا راحت هستن. فقط یک سوال گیج کرد منو. چون چندین فرم هست و همشون به بانک وصل شدن، باید یک بار آدرس دهی کرد از یک فرم تا در کل فرما تنظیم بشه. اینکار چطور ممکنه؟

M.T.P
پنج شنبه 13 بهمن 1390, 15:02 عصر
M.T.P : ممنون خیلی کدا راحت هستن. فقط یک سوال گیج کرد منو. چون چندین فرم هست و همشون به بانک وصل شدن، باید یک بار آدرس دهی کرد از یک فرم تا در کل فرما تنظیم بشه. اینکار چطور ممکنه؟

خواهش می کنم ، ببینید اگه منظورتون از اتصال همه فرم ها به بانک کنترل Adodc هست که پیشنهاد می کنم برای همچین نرم افزارهایی از Adodc استفاده نکنید ، شما خیلی راحت می تونید کنترل Adodc رو دور بندازید.

از رفرنس ها Microsoft Activex Data Object 2.8 رو تیک میزنید.
برنامه یک بار در ابتدای شروع به بانک توسط تابع ConnectDB به بانک وصل میشه و تمام.

متغیر Conn رو بصورت Public در یک ماژول قرار بدید که از همه جای برنامه قابل دسترس باشه.
تا اینجا برنامه شما اجرا شده و به بانک وصل شده و شی اتصال رو هم که Conn هست در اختیار دارید.

حالا تو هر فرمی و یا رویدادی مثل کلیک و ... که خواستید اطلاعاتی از دیتابیس بخونید ، حذف کنید و یا ویرایش کنید خیلی راحت با دو یا سه خط کد این کار رو انجام میدید.
به این شکل:


Private Sub Command1_Click()
Dim Rst As New ADODB.Recordset
Call Rst.Open("Select * From Table", conn, adOpenStatic, adLockPessimistic)
'مجموعه دستورات کار با رکوردست
Set Rst = Nothing
End Sub

meysam.moh
دوشنبه 17 بهمن 1390, 17:53 عصر
سلام

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

adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db\db.mdb;;Jet OLEDB:Database Password=1234;"
adodc1.RecordSource = strQuery
adodc1.Refresh

Set CR = crApp.OpenReport(App.Path & "\report\visit.rpt")

For Each CRDBT In CR.Database.Tables
CRDBT.ConnectionProperties.Item("Data Source") = App.Path & "\db\db.mdb"
CRDBT.ConnectionProperties.Item("Jet Database Password") = "1234"
Next

CR.Database.SetDataSource adodc1.Recordset

CRV.ReportSource = CR

CR.DiscardSavedData

CRV.ViewReport