View Full Version : سوال: مشکل با Ado در شبکه
delphiprog3000
دوشنبه 28 مرداد 1387, 20:02 عصر
با سلام به دوستان واساتید محترم.
اخیرا در برنامه تحت شبکه با ado به مشکلی برخورد کردم.
مشکل اینه که نمیتوان خصوصیت Connection string در adoconnection را به صورت خالی تعریف کرد.
به دلیل اینکه در خصوصیت Onshow هر فرمی دستوری را به Adoquery پاس دادم که هر Adoquery به ADoconnection مربوط است و اگر مقدار ADoconnection را خالی کنم در حین اجرا خطایی میدهد بر مبنای اینکه نباید خصوصیت Connection string خالی باشد.
اگر هم آنرا پر کنم مجبورم ip سیستمی که در آن بانک اطلاعاتی نصب میباشد را بدهم که باز در کلاینت دیگر دچار خطایی دیتابیس میشوم. چون ip را به صورت پیش فرض نمیدهم و به صورت دستی وارد میکنم.
امیدوارم منظور و مشکل را درست توجیه کرده باشم.
منتظر راهنمایی دوستان هستم.
با تشکر.........................
SYNDROME
دوشنبه 28 مرداد 1387, 20:33 عصر
در ابتدای برنامه اول DataModule که ADOConnection بر روی آن قرار دارد را Create کنید و در Create آن ADOConnection را تنظیم کنید.
در ضمن اگر فرمهایتان در زمان اجرا برنامه Create می شود آنها را از حالت AutoCreate خارج کنید و هر زمان نیاز داشتید Create و بعد از اتمام کارتان Free کنید.
موفق باشید
delphiprog3000
دوشنبه 28 مرداد 1387, 20:41 عصر
سلام دوست من. ممنون از پاسخت.
کاملا مشکل من با همین Create فرمهاست.
در unit پروجکت برنامه تمامی فرمها اتو کریت هستند.
یعنی از اون قسمت پاک بشه.
و سپس دوباره مجدد فرمهارو کریت کنم.
میشه کمی کاملتر با مثال نوشتاری توضیح بدی .
ممنونم .
Hsimple11
دوشنبه 28 مرداد 1387, 23:50 عصر
بله دوست عزیز مشکل شما مربوط به Create فرم هاست. در واقع شما نباید در Design-Time برنامه خود Connection String ای به برنامه دهید چون بقول خودتان مجبور میشید Connectio ای ویژه همون سیستم رو بدید که نادرسته.
همونطور که دوستمون گفتند ConnectionString رو در Run-Time تنظیم کنید. یعنی فرمی که دیتاست شما بر روی آن قرار دارد (مثلا همون دیتاماژول) رو در ابتدا بسازید و همون موقع ConncetionString رو Set کنید.
در مورد فرمها هم برای اینکه همون ابتدای برنامه در OnShow به دیتاست خود چیزی رو پاس میدید اونا رو خودتون در زمان نیاز بسازید.
در مورد ساخت فرم ها و آزاد کردن اونا هم در سایت مطالب زیادی هست. مثلا کد زیر چک میکنه که آیا فرم MyForm ساخته شده و اگه ساخته نشده بود اون رو میسازه و در نهایت اون رو نمایش میده :
IF Not Assigned (MyForm) Then
MyForm := TMyForm.Create(Nil);
MyForm.Show;
Hsimple11
دوشنبه 28 مرداد 1387, 23:53 عصر
در ضمن برای برداشتن فرمی از حالت AutoCreate هم میتونید اون رو از قسمت AutoCreate در منوی Project|Options|Forms بر دارید و به قسمت Available Forms ببرید یا در یونیت پروژه کد ساخت اون فرم رو بردارید. اگر مشکلی بود همین کلمات را در سایت جستجو کنید مطالب کافی وجود دارد.
موفق باشید...
SYNDROME
سه شنبه 29 مرداد 1387, 07:01 صبح
تمامفرمهای غیر ضروری را از داخل AutoCreate خارج کنید و یا بعد از Create مربوط به DataModule قرار بده.
سپس بر روی DataModule دابل کلیک کن و ADOConnection را اینجوری تنظیم کن.
S := 'Provider=SQLOLEDB.1;Password=' + vPassword;
S := S + ';Persist Security Info=True;User ID=' + vuserName;
S := S + ';Initial Catalog='+ vDataBaseName
S := S + ';Data Source=' + vServerName
سپس S را در Connectionstring خود aDOConnection بریزید و Connected را True کنید.
در کنار برنامه یک فایل قرار دهید و اطلاعات
Password
UserName بانکتان
نام بانک و نام سرور یا همان IP را در آن قرار دهید.
سپس اطلاعات فوق را از داخل فایل خوانده و داخل متغییرهای بالا بریزی.
موفق باشید
delphiprog3000
سه شنبه 29 مرداد 1387, 10:13 صبح
با سلام به دوستان گرامی.
از پاسخ صریح شما متشکرم.
مشکل من در همان ابتدا با create دستی فرمها حل شد.
بازهم از اطلاعات کاملتر و دقیق شما تشکر مینمایم.
فقط در مورد استفاده از Ado و Midas تردید دارم. ولی امتحان که کردم Ado دردسرهای کمتری داره.
نظر شما چیه؟
SYNDROME
سه شنبه 29 مرداد 1387, 18:31 عصر
فقط در مورد استفاده از Ado و Midas تردید دارم. ولی امتحان که کردم Ado دردسرهای کمتری داره.
نظر شما چیه؟
من هم از aDO استفاده می کنم و تا به حال با مشکلی مواجه نشده ام و کار کردن با آن راحتر است.
موفق باشید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.