PDA

View Full Version : مشکل در auto connect



seeker
چهارشنبه 18 بهمن 1385, 08:06 صبح
در یک فایل اکسس که آپسایز شده بصورت لینک تیبل در هر بار باز کردن فایل باید از طریق لیک تیبل منیجر به SQL Serverمتصل شد
با توجه به اینکه گزینه سیو پسورد موقع ایجاد کانکشن یا آپ سایز کردن روشن بوده چرا این اتفاق می افتد و راه حل این مشکل چیست؟
(صورت مسأله: میخواهیم هنگام باز شدن فایل اکسس به صورت خودکار به دیتابیس کانکت شود)
امروز باید برنامه را به کارفرما تحویل دهم ولی هنوز دچار این مشکل هستم
لطفا بخاطر آبروی کاری من، سریعتر راهنمایی کنید

seeker
چهارشنبه 18 بهمن 1385, 10:21 صبح
منظور از آپسایز (upsize) استفاده از upsizing wizard برای انتقال جداول به دیتابیس sql server و ساخت یک لینک تیبل در اکسس میباشد

Payam Moradi
چهارشنبه 18 بهمن 1385, 10:24 صبح
در یک فایل اکسس که آپسایز شده بصورت لینک تیبل در هر بار باز کردن فایل باید از طریق لیک تیبل منیجر به SQL Serverمتصل شد
با توجه به اینکه گزینه سیو پسورد موقع ایجاد کانکشن یا آپ سایز کردن روشن بوده چرا این اتفاق می افتد و راه حل این مشکل چیست؟
(صورت مسأله: میخواهیم هنگام باز شدن فایل اکسس به صورت خودکار به دیتابیس کانکت شود)
امروز باید برنامه را به کارفرما تحویل دهم ولی هنوز دچار این مشکل هستم
لطفا بخاطر آبروی کاری من، سریعتر راهنمایی کنید

منظورت اینه که وقتی میخوای به اطلاعات دسترسی پیدا کنی دوباره باید پسورد بدی.
چنین مشکلی نباید باشه:متفکر:

Payam Moradi
چهارشنبه 18 بهمن 1385, 10:30 صبح
شما میخوای به سرور SQL در شبکه دسترسی پیدا کنی یا SQL در همان سیستم نصب هست. اگر در سیستم خودت نصبه نیاز به پسورد نداره. اگر هم در شبکه هست از منوی فایل و گزینه Connection یوزر و پسورد را انتخاب و گزینه Save Password رو هم تیک بزن. جهت اطمینان از همان پنجره برو تو لبهع All و از لیست Password رو پیدا کن و دابل کلیک و پسورد رو وارد کن.
دیگه نباید مشکلی باشه:متفکر:

Payam Moradi
چهارشنبه 18 بهمن 1385, 10:32 صبح
منظور از آپسایز (upsize) استفاده از upsizing wizard برای انتقال جداول به دیتابیس sql server و ساخت یک لینک تیبل در اکسس میباشد

آها پس شما از یک پروژه mda (آداپتور) استفاده نمیکنی؟ از mdb استفاده میکنی! خب طبیعیه باید پسورد رو هر دفعه بدی.
در غیر اینصورت با مواردی که دربالا گفتم پسورد ذخیره میشه و مشکلی هم نباید داشته باشه.

برای پروژه هایی که به یک دیتابیس دیگه مثل SQL Server متصل میشن باید از mda پروژه استفاده کنی. در غیر اینصورت باید از آبجکت ADODB برای اتصال به بانک خارجی استفاده کنی.

seeker
چهارشنبه 18 بهمن 1385, 10:46 صبح
آیا adodb هم مثل odbc هست؟

seeker
چهارشنبه 18 بهمن 1385, 10:48 صبح
چطور میتونم از adodb استفاده کنم؟ یا اینکه چطور میتونم فایلم رو به mda تبدیل کنم؟

Payam Moradi
چهارشنبه 18 بهمن 1385, 11:15 صبح
چطور میتونم از adodb استفاده کنم؟ یا اینکه چطور میتونم فایلم رو به mda تبدیل کنم؟
برای استفاد از جدولی که در SQL Server هست تو فرم مورد نظر یک متغییر در قسمت اعلان عمومی تعریف کن (بالای فرم)


Dim rst As New ADODB.Recordset

بعد این کد رو در قسمت Form_Load قرار بده. خود بخود به جدول مربوطه کانکت میشه:



rst.Open "SELECT * FROM TableName", "Provider=SQLOLEDB.1;Password=MyPassword;Persist Security Info=True;User ID=sa;Initial Catalog=DataBaseName;Data Source=SERVER-Name", adOpenStatic, adLockOptimistic
Set Me.Recordset = rst


به جای SERVER-Name نام سرور SQL رو وارد کن.
به جای DataBaseName نام دیتابیس
به جای sa کاربر Sql
به جای MyPassword رمز کاربر SQL.
به جای SELECT * FROM TableName هم کوئری استرینگ مورد نظر خودت رو بگذار.

برای استفاده از mda دیگه نمیتونی در فایل اکسس جدول درست کنی. میتونی از طریق برنامه به تمام آبجکتهای SQL مرتبط بشی و بر اساس آنها فرمهای خودت رو طراحی کن.
یا جداول Access یا SQL هر دو نمیشه. فقط فرمها و ریپورتها و ماکروها و ماژولها در mda قابل تعریف خواهد بود. جدولها مال SQL هست.
فکر کنم باید از ابتدا کار کنی.
البته با کمی خلاقیت میتونی همه رو با روش بالا کانکت کنی. بدون نیاز به تبدیل به mda.

موفق باشی:چشمک:

seeker
چهارشنبه 18 بهمن 1385, 11:28 صبح
واقعیت اینه که فرمهای من به جداولم وصل نیستند بلکه به کوئریها وص هستند و این کوئریها هستند که به لینک تیبل ها متصلند
برای لود شدن کوئری که نمیشه کد vba نوشت!؟

Payam Moradi
چهارشنبه 18 بهمن 1385, 11:31 صبح
واقعیت اینه که فرمهای من به جداولم وصل نیستند بلکه به کوئریها وص هستند و این کوئریها هستند که به لینک تیبل ها متصلند
برای لود شدن کوئری که نمیشه کد vba نوشت!؟

مشکلی نیست درست میشه. همون کدی که در بالا گفتم استفاد کن و متن کوئری رو به جای SELECT قرار بده حله:چشمک:

seeker
چهارشنبه 18 بهمن 1385, 11:47 صبح
متن کوئری؟

seeker
چهارشنبه 18 بهمن 1385, 11:50 صبح
ببین سورس فرم من یه کوئری هست با نام مثلا x
سورس x il لینک تیبل هست با نام مثلا y
حالا چیکار کنم؟

seeker
چهارشنبه 18 بهمن 1385, 11:54 صبح
ببین سورس فرم مثلا یه کوئری با نام x هست
سورس x هم یک لینک تیبل با نام y هست
حالا چیکار کنم؟

Payam Moradi
چهارشنبه 18 بهمن 1385, 12:08 عصر
ببین سورس فرم مثلا یه کوئری با نام x هست
سورس x هم یک لینک تیبل با نام y هست
حالا چیکار کنم؟

شما یک کوئری رو در حالت دیزاین باز کن. از منوی بالا گزینه SQL رو بزن تا بره توی متن SQL کوئری.
بعد کپی کن همینجا تا من تغییرات رو بدم.

seeker
چهارشنبه 18 بهمن 1385, 12:45 عصر
SELECT prt.ID, prt.ttl, prt.strNo, prt.schemeNo, prt.prtNo, prt.mkr, prt.dealr, prt.unt, prt.numbr, prt.untPrce, [numbr]*[untPrce] AS Expr1, prt.prceUnt, prt.prceMod, prt.pgNoCtlg, prt.pic1, prt.pic2, prt.pic3, prt.pic4, prt.pic5, prt.pic6, prt.pic7, prt.pic8, prt.pic9, prt.pic0, prt.mech, prt.orgMechNo, prt.cngPrtNo1, prt.cngPrtNo2, prt.cngMkr1, prt.cngMkr2, prt.sndr1, prt.sndr2, prt.prce1, prt.prce2, prt.trnsfrDte1, prt.trnsfrDte2, prt.slctdDealr, prt.slctdPrce, prt.slctdTrnsfrDte, prt.tip1, prt.tip2
FROM prt;

Payam Moradi
پنج شنبه 19 بهمن 1385, 09:34 صبح
SELECT prt.ID, prt.ttl, prt.strNo, prt.schemeNo, prt.prtNo, prt.mkr, prt.dealr, prt.unt, prt.numbr, prt.untPrce, [numbr]*[untPrce] AS Expr1, prt.prceUnt, prt.prceMod, prt.pgNoCtlg, prt.pic1, prt.pic2, prt.pic3, prt.pic4, prt.pic5, prt.pic6, prt.pic7, prt.pic8, prt.pic9, prt.pic0, prt.mech, prt.orgMechNo, prt.cngPrtNo1, prt.cngPrtNo2, prt.cngMkr1, prt.cngMkr2, prt.sndr1, prt.sndr2, prt.prce1, prt.prce2, prt.trnsfrDte1, prt.trnsfrDte2, prt.slctdDealr, prt.slctdPrce, prt.slctdTrnsfrDte, prt.tip1, prt.tip2
FROM prt;
دوست عزیز اگه prt یک جدول موجود در دیتابیس SQL هست همین کوئری در ست جواب میده. همین متن بالا رو در کد بالا که گفتم به جای SELECT * FROM TableName جایگزین کن.

seeker
پنج شنبه 19 بهمن 1385, 13:51 عصر
thanks but sorry
کارنکرد

Payam Moradi
پنج شنبه 19 بهمن 1385, 14:04 عصر
thanks but sorry
کارنکرد
کجاش ایراد داره؟ دقیقا چه خطایی به شما میده. رو کدوم خط میمونه. این اطلاعات رو بگید و گرنه چطور میشه فهمید که مشکل شما چیه.
اولا مطمئمن بشید که جدولی به نام prt در دیتابیس دارید یا نه آیا تمام فیلدها رو دارید؟.
برای امتحان از این دستور استفاده کنید:

SELECT * FROM prt
دوم اینکه آیا رمز و کاربر و نام دیتابیس و نام سرور رو صحیح دادید یا نه؟

در ضمن اگر از SQL در سیستم خودتون (Loacl) استفاده میکنید از این کانکشن استرینگ استفاده نمایید:



Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DataBaseName;Data Source=SERVER-NAME


بعد هم اینکه باید Control Source فرم خالی باشه و کنترل سورس Textها رو دقیقا با نام فیلدهای جدول مقدار دهی کنید.
برای تست یک پروژه جدید باز کنید و در یک فرم ابتدا آزمایش کنید. اگر نتیجه نگرفتید پروژه جدید که برای تست درست کردید آپلود کنید اینجا. متذکر هم بشید برای سرور هست یا رایانه خودتون.

seeker
جمعه 20 بهمن 1385, 12:14 عصر
بیخیال
با vb مینویسم
این اکسس فقط بدرد کارهای عجله ای و خیلی ساده میخوره
البته خیلی تواناییها داره و من هم خیلی باهاش حال میکنم
ولی هیچ جوری نمیشه امنش کرد اونم رو شبکه
بنا بر این من تصمیم گرفتم جداول و کوئری هام رو تو اکسس درست کنم و روش فقط یه پسورد اکسسی بذارم چون ساده تر از SQLServer هست و اپلیکیشنم هم با vb یا vb2005 درست کنم
به هر حال از کمک ها تون ممنونم.