PDA

View Full Version : سوال: الحاق بانك اطلاعاتي قبل از شروع برنامه



Modernidea
دوشنبه 28 بهمن 1387, 23:11 عصر
سلام

من ميخوام قبل از اينكه وارد فرم اصلي برنامه بشم، از كاربر مسير بانك اطالعاتي رو توسط open dialog بگيرم به در Ado Connection اي كه در يك ماژول دارم قرار بدم و بعد اون رو فعال كنم.
در ضمن بانك اكسس است.
چه راهي را پيشنهاد مي كنيد؟

با تشكر قبلي

Modernidea
سه شنبه 29 بهمن 1387, 04:54 صبح
حالا كه پيشنهادي ندارين حداقل بگيد كه زماني كه مسير رو ميگيرم توي چه خاصيتي از Ado Connection قرار بدم. چون خاصيت Connection String علاوه بر مسير بانك، خيلي چيزهاي ديگه هم دراه.
يك راهي امتحان كرم ولي نشد. اونهم اين بود: تمام متن داخل خاصيت Connection String را بين چندا متغير رشته اي تقسيم كردم البته منهاي قسمتي كه مربوط به مسير ديتابيس ميشه. بعد از گرفتن مسير، مسير مورد نظر را به اون رشته هايي كه گفتم اظافه كردم و اون رشته ها رو درون connection string ريختم و Ado Connection رو فعال كردم.
ولي نشد. هم خطا ميده هم اصلا به نظرم منطقي نيست. و فكر ميكنم بايد يك خاصيتي داشته باشه كه فقط مسير و نام بانك رو بگيره؟؟؟ :عصبانی++:

SYNDROME
سه شنبه 29 بهمن 1387, 06:29 صبح
تنظیم ADOConnection در Access قبلاً در سایت توضیح داده شده است.
در زمان Create اولین فرمتان مسیر را بگیرید و سپس در قسمت مسیر ConnectionString قرار دهید.
حالا اشکال شما دقیقاً کجا است؟
موفق باشید

mafazel
سه شنبه 29 بهمن 1387, 06:59 صبح
يك راهي امتحان كرم ولي نشد. اونهم اين بود: تمام متن داخل خاصيت Connection String را بين چندا متغير رشته اي تقسيم كردم البته منهاي قسمتي كه مربوط به مسير ديتابيس ميشه. بعد از گرفتن مسير، مسير مورد نظر را به اون رشته هايي كه گفتم اظافه كردم و اون رشته ها رو درون connection string ريختم و Ado Connection رو فعال كردم.
ولي نشد. هم خطا ميده هم اصلا به نظرم منطقي نيست. و فكر ميكنم بايد يك خاصيتي داشته باشه كه فقط مسير و نام بانك رو بگيره؟؟؟ :عصبانی++:
با سلام
روش تون کاملا درسته. احتمالا یک جایی از یکی از اون رشته ها مشکل داره و گرنه من همیشه همین کار رو میکنم. من بانکم رو کنار نرم افزار می گذارم و موقع اجرای نرم افزار مسیر رو از ParamStr میگیرم و نام فایل رو بهش اضافه می کنم و به ConnectionString میدهم.
مثال:


procedure TTables.InitDataBase;
var
DBPath : string;
CS : string;
begin
Connector.Connected := False;
DBPath := ExtractFilePath(ParamStr(0));
Cs := 'Provider=Microsoft.Jet.OLEDB.4.0;';
Cs := Cs+'User ID=Admin;';
Cs := Cs+'Data Source='+DBPath+'Maskan.mdb;';
Cs := Cs+'Mode=Share Deny None;';
Cs := Cs+'Extended Properties="";';
Cs := Cs+'Jet OLEDB:System database="";';
Cs := Cs+'Jet OLEDB:Registry Path="";';
Cs := Cs+'Jet OLEDB:Database Password="";';
Cs := Cs+'Jet OLEDB:Engine Type=5;';
Cs := Cs+'Jet OLEDB:Database Locking Mode=1;';
Cs := Cs+'Jet OLEDB:Global Partial Bulk Ops=2;';
Cs := Cs+'Jet OLEDB:Global Bulk Transactions=1;';
Cs := Cs+'Jet OLEDB:New Database Password="";';
Cs := Cs+'Jet OLEDB:Create System Database=False;';
Cs := Cs+'Jet OLEDB:Encrypt Database=False;';
Cs := Cs+'Jet OLEDB:Don''t Copy Locale on Compact=False;';
Cs := Cs+'Jet OLEDB:Compact Without Replica Repair=False;';
Cs := Cs+'Jet OLEDB:SFP=False';
Connector.ConnectionString := CS;
Connector.Connected := True;
end;

zidane
سه شنبه 29 بهمن 1387, 14:23 عصر
متغیر لازم نداره. با این کد که نوشتم میشه:

ADOConnection1.ConnectionString:='Provider=Microso ft.Jet.OLEDB.4.0;Data Source='+ExtractFilePath(Application.ExeName)+'Tes tDB.mdb'+';Persist Security Info=False';
ADOConnection1.Connected:=True;
به جای قسمت قرمز رنگ هر آدرسی که خواستی بذار

Modernidea
سه شنبه 29 بهمن 1387, 14:31 عصر
سلام
ممنونم. ولي مگه تابع ParamStr ، مسير و نام برنامه رو برنيمگردونه؟ چون من اين رو از Help خود دلفي برداشت كردم.

Modernidea
سه شنبه 29 بهمن 1387, 14:34 عصر
متغیر لازم نداره. با این کد که نوشتم میشه:

ADOConnection1.ConnectionString:='Provider=Microso ft.Jet.OLEDB.4.0;Data Source='+ExtractFilePath(Application.ExeName)+'Tes tDB.mdb'+';Persist Security Info=False';
ADOConnection1.Connected:=True;
به جای قسمت قرمز رنگ هر آدرسی که خواستی بذار

تشكر. پس بقيه خصوصيتهاي اون رو چيكار كردي؟!
فكر كنم كدي كه آقاي mafazel نوشتن صحيحتر باشه.

Modernidea
سه شنبه 29 بهمن 1387, 19:33 عصر
آقايون از كدوم كد استفاده كنم؟
از كد آقاي mafazel يا zidane.

كدومش صحيح است؟

البته من دوميش را تست كردم و جواب داد و مي خوام ببينم در بين كار دچار مشكل نميشه؟

accpascal
چهارشنبه 30 بهمن 1387, 10:50 صبح
کد آقای zidane دو مقدار را تعریف نمی کند یکی user id و دیگری password
اگر شما استفاده کرده اید حتما نحوه اتصال شما از طریق ویندوز می باشد که دارای امنیت نیست !

اصغر (پآچ)
چهارشنبه 30 بهمن 1387, 11:01 صبح
سلام دوست من

به نظر من روش اول خیلی بهتره چون احتمال بروز خطا رو توی برنامه ات خیلی خیلی کاهش میده اما بهترین روش خودت انتخاب میکنی!

موفق و موید باشی