PDA

View Full Version : استفاده همزمان دوتا برنامه از یک دیتابیس



finalcut
یک شنبه 16 مرداد 1384, 21:37 عصر
سلام
من دوتا پروژه با vb.net دارم که می خوام در آن واحد از یک دیتابیس access استفاده کنند
این دیتابیس و در فلدر bin پرژه اول قرار دادم در پرژه دوم connection چه جوری تعریف کنم که به مکان فیزیکی وابسته نباشه و با عوض شدن جای برنامه به مشکل برخورد نکنم؟

یاشار
دوشنبه 17 مرداد 1384, 00:42 صبح
می‌تونید از Application.StartupPath استفاده کنید و مسیرها رو نسبت به مسیر فایل اجرایی برنامه دنبال کنید.

finalcut
دوشنبه 17 مرداد 1384, 06:38 صبح
میشه برام بیشتر توضیح بدی؟؟:گیج:
ممنون...

یاشار
دوشنبه 17 مرداد 1384, 13:05 عصر
فایل Exe برنامه‌تون رو یه جای دیگه کپی کنید، بعد هر دو فایل exe رو اجرا کنید و مقدار Application.StartupPath رو بررسی کنید، خودتون متوجه می‌شید.

ضمنا می‌تونید بوسیله OpenFileDialog از کاربر بخواهید که مسیر دیتابیس رو مشخص کنه.

finalcut
سه شنبه 18 مرداد 1384, 20:10 عصر
؟؟؟؟؟؟؟
من نفهمیدم... شاید زیادی بی سوادم ولی خوب شما در حد من بگو لطفا

یاشار
سه شنبه 18 مرداد 1384, 20:55 عصر
کجا رو متوجه نشدید ؟ استفاده از OpenFileDialog یا تنظیم ConnectionString رو ؟

finalcut
چهارشنبه 19 مرداد 1384, 19:57 عصر
هر دو تا رو!!!چون هدف از استفاده از openfiledialog اینه که ConnectionString درست عمل کنه دیگه؟؟؟؟
چون من نمیدونم در پروژه دوم ConnectionString چی قرار بدم که همیشه درست عمل کنه..در ضمن این دوتا پروژه همیشه با هم هستند و باز هم تاکید می کنم که دیتابیس در فولدر bin پروژه اول قرار دادم ودر مورده پروژه اولی مشکلی ندارم .....فقط دومی :((

یاشار
پنج شنبه 20 مرداد 1384, 01:09 صبح
ConnectionString هایی که مربوط به Access می‌شن، علاوه بر پارامترهای دیگه، شامل مسیر فایل دیتابیس هم هستند. بنابراین اگر بقیه پارامترها رو عینا وارد کنید و مسیر دیتابیس رو هم بهش اضافه کنید، یک ConnectionString آماده مصرف (!) دارید.

بنابراین بهتره که اول در یک بلوک Try-Catch بررسی کنید که مسیر پیش‌فرض می‌تونه با دیتابیس ارتباط برقرار کنه یا نه، اگر نتونست مسیر دیتابیس رو از بوسیله OpenFileDialog بگیرید و باز به مرحله قبل برگردید.



Private Sub FillDataSet()
Dim Success As Boolean
While Not Success
Try
OleDataAdapter1.Fill(Dataset11)
Success = True

Catch oleEx As OleDb.OleDbException

MsgBox(oleEx.Message)

If Not AdjustString() Then
'if the path were not supplied
Exit Sub
End If

Catch ex As Exception

MsgBox(ex.Message)

End Try

End While

End Sub


اینجا AdjustString یک Function است که بوسیله Dialog یک مسیر رو از کاربر می‌پرسه. اگر کاربر یک مسیر رو انتخاب کنه و Ok رو بزنه مقدار True برمی‌گردونه و اگر Cancel رو بزنه False برمی‌گردونه و برنامه دیگه سعی نمی‌کنه به دیتابیس وصل بشه. ( کاربر منصرف شده )




Private Function AdjustString() As Boolean

Dim of As New OpenFileDialog

of.Title = "Specify database path"
of.Filter = "Access File|*.mdb|All|*.*"

If of.ShowDialog = DialogResult.OK AndAlso of.FileName.ToLower.EndsWith(".mdb") Then

'Replace DataSource="Old Path"
'with DataSource="New Path"
Dim Pat As String
Pat = "(?<=Data Source="")[^""]+(?="")"
Dim Reg As New Regex(Pat, RegexOptions.IgnoreCase)
OleDC.ConnectionString = Reg.Replace(OleDC.ConnectionString, Pat, of.FileName)

'the Path is successfully aquired
Return True
Else
'the path is not supplied
Return False
End If

End Function



برای تغییر مقدار پارمتر DataSource در ConnectionString از کلاس RegEx استفاده شده. اگر برای شما راه دست نیست می‌تونید از هر روشی که می‌خواهید استفاده کنید. فقط توجه داشته باشید که ترتیب این پارمترها مهم هستند و اگر جابجا نوشته بشن، خطای Ole می‌گیرید. باز هم اگر سوالی داشتید در حد توان در اختیارتون هستم.

امین دهقانی
دوشنبه 31 مرداد 1384, 11:00 صبح
چرا convert نمی کنی به sql که اصولی مشکلت حل شه

Caprice
دوشنبه 31 مرداد 1384, 11:55 صبح
میتونی توسط برنامه هات یه کلید در ریجستری ویندوز ایجاد کنی که مسیر فعلی دیتابیس رو نگهداری کنه بطوری که هردو برنامه بتونن اون کلید رو ایجاد و تغییر بدن و هر دو برنامه موقع بالا اومدم ابتدا مسیر رو از ریجیستری بخونن و ........

3lool
پنج شنبه 04 خرداد 1385, 11:48 صبح
با سلام به دوستان خوبم
من یه برنامه دفترچه تلفن با VB.NET و ACCESS نشتم که فکر کنم جالب باشه
چون همه نکات را در ان رعایت کردم
اگر کسی دلش این برنامه را + سورس +بانک میخواد من همه را ZIP کردم و می توانید از سایت
من ::::..... HTTP://3LOOL.CO.SR .....::::: دانلود کنید ...