PDA

View Full Version : تغییر خودبه‌خود Connection String



A.Farzin
دوشنبه 29 آبان 1385, 16:40 عصر
با سلام
در یک پروژه، در اولین Subی که اجرا می‌شود، Connection String مربوط به Connection1 تعیین می‌شود. پس از اتمام ساب یاد شده و در ادامه برنامه، نمی‌دانم چرا در هنگام باز و بسته کردن rsCommand1 و بدون اینکه من Connection String را تغییر دهم، خودبه‌خود مقدار Connection String مربوط به Connection1 تغییر می‌کند.
چه علتی می‌تواند داشته باشد.
با تشکر از دوستان

A.Farzin
سه شنبه 30 آبان 1385, 23:21 عصر
این توضیح را هم اضافه کنم که من از DataEnvironment برای ارتباط با پایگاه داده استفاده کرده‌ام. و در واقع این کانکشن استرینگ یکی از کانکشن‌های این DE است که تغییر می‌کند.

yavari
چهارشنبه 01 آذر 1385, 11:56 صبح
سلام


خودبه‌خود مقدار Connection String مربوط به Connection1 تغییر می‌کند.

تغییر Connection String رو میتونین عنوان کنین !

موفق باشید

A.Farzin
چهارشنبه 01 آذر 1385, 17:35 عصر
با سلام و تشکر

در موقع مقداردهی کانکشن، مقدار زیر به عنوان رشته اتصال تعریف می‌شود:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Data.mdb;Persist Security Info=False;Jet OLEDB:Database Password=123456;

ولی در مقاطع بعدی می‌بینم به مقدار زیر تغییر کرده است:

Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Data.mdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password=123456;Jet OLEDB:Engine Type=4;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False

این تغییر رشته اتصال موجب می‌شود تا رکوردستها با یک اندکی تاخیر به روز شوند. مثلاً فرض کنید تعداد رکوردهای رکوردست ما 25420 رکورد باشد و حالا یک رکورد به جدول اضافه شود. اگر در خط بعد از Updata فرمان requery و سپس recordcount بگیرم تعداد رکوردها را همان 25420 می‌دهد. ولی اگر چند لحظه صبر کنم و بعدا رکوردها را بشمارم تعداد را 25421 اعلام می‌کند.
به نظرم می‌رسد علت در رشته اتصال باشد.
البته من بطور موقتی و برای رفع اشکال با یک لوپ تعداد رکورد را کنترل می‌کنم و تا تعداد آن اضافه نشده باشد مرتباً این قسمت از کدها تکرار می‌شود.
با تشکر

yavari
پنج شنبه 02 آذر 1385, 08:37 صبح
با سلام و تشکر

در موقع مقداردهی کانکشن، مقدار زیر به عنوان رشته اتصال تعریف می‌شود:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Data.mdb;Persist Security Info=False;Jet OLEDB:Database Password=123456;

ولی در مقاطع بعدی می‌بینم به مقدار زیر تغییر کرده است:

Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Data.mdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password=123456;Jet OLEDB:Engine Type=4;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False

این تغییر رشته اتصال موجب می‌شود تا رکوردستها با یک اندکی تاخیر به روز شوند. مثلاً فرض کنید تعداد رکوردهای رکوردست ما 25420 رکورد باشد و حالا یک رکورد به جدول اضافه شود. اگر در خط بعد از Updata فرمان requery و سپس recordcount بگیرم تعداد رکوردها را همان 25420 می‌دهد. ولی اگر چند لحظه صبر کنم و بعدا رکوردها را بشمارم تعداد را 25421 اعلام می‌کند.
به نظرم می‌رسد علت در رشته اتصال باشد.
البته من بطور موقتی و برای رفع اشکال با یک لوپ تعداد رکورد را کنترل می‌کنم و تا تعداد آن اضافه نشده باشد مرتباً این قسمت از کدها تکرار می‌شود.
با تشکر

سلام

عجیبه ها !:متعجب: :متعجب: :متعجب:
متوجه نشدید چی باعث این تغییر میشه ؟؟؟ :متفکر:
یه سوال : طبقی که فرمودید برنامه کار میکنه ؟ نه ؟
اگه میتونید قسمتی از کد برنامتونو که مربوط به این موضوع میشه رو بذارید !

موفق باشید

sjj
پنج شنبه 02 آذر 1385, 14:37 عصر
اگه میتونید قسمتی از کد برنامتونو که مربوط به این موضوع میشه رو بذارید !

موفق باشید

اینطوری شاید مشکلتون حل بشه.

A.Farzin
شنبه 04 آذر 1385, 19:00 عصر
آوردن تمام کدهای مابین دو نقطه مورد بازرسی که امکان پذیر نیست. ولی دو ساب مرتبط با این مشکل را می‌آورم.
در ساب اول کانکشن استرینگ ست می‌شود.
ولی در ساب دوم می‌بینم که تغییر می‌کند.

Public Sub Main()
On Error GoTo ERMain
ConStrToDb = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Data.mdb;Persist Security Info=False;Jet OLEDB:Database Password=123456;"
dataEnvironment1.connection1.ConnectionString = ConStrToDb
'
frmSplashScreen.Show
'
Exit Sub
ERMain:
MsgBox Err.Description, vbMsgBoxRight, NameOfProduct
End
End Sub

در ساب دوم که در زیر آمده است، وقتی برنامه را روی خط سوم (یعنی With dataEnvironment1.rsconnection4) نگه می‌دارم و کانکشن استرینگ را می‌پرسم می‌بینم که همان مقدار ست شده است. ولی به محض اینکه وارد خط بعدی می‌شود (یعنی If .State = 0) مقدار کانکشن استرینگ عوض می‌شود.

Private Sub Form_Load()
On Error GoTo ERFormload

With dataEnvironment1.rsCommand4
If .State = 0 Then .Open
.Requery
End With

Exit Sub
ERFormload:
MsgBox Err.Description
End Sub
با توضیح این مطلب که Command4 یکی از فرامین مربوط به Connection1 است.

با سپاس