PDA

View Full Version : Delphi And Sql And Networking کمک فوری



Look in future
دوشنبه 28 اردیبهشت 1383, 07:15 صبح
سلام دوستان
من در یک اتاق کار می کنم که با 5 کامپیوتر دیگر شبکه هستیم و یک پرینتر برلی همه کامپیوتر هاست .روی سیستم من Sql SErver2000نصب شده است وهمچنین Delphi . من یک برنامه نوشته ام بصورت Single و در آن از Ado و Sql استفاده کرده ام .حالا دیگر clientها می خواهند از برنامه من استفاده کنند لطفا به من بگویید برای این کار چه می بایست انجام دهم آیا باید روش برنامه نویسی را عوض کنم یا اگر sql را روی دیگر client ها نصب کنم و یعد بانک را attach کنم وسپس برنامه را share کنم مشکل حل می شود لطفا در این زمینه بیشتر راهنمایی کنید .

Mohammad S
دوشنبه 28 اردیبهشت 1383, 13:37 عصر
کافیه برنامه ای که نوشته ای را بر روی کامپیوتر آنها نصب کنی و سپس در کانکشنی که ساخته ای توسط ADO،‌ سرور را به جای اینکه Local انتخاب کنی،‌ IP کامپیوتر خودت که SQL Server‌ بر روی آن نصب شده بدهی.
همین :wink:

Look in future
دوشنبه 28 اردیبهشت 1383, 14:54 عصر
دوست عزیز سلام
ویندوزهایی که ما استفاده کی کنیم winXp است آیا باید win2003server بر روی سرور نصی شده باشد .

Mohammad S
دوشنبه 28 اردیبهشت 1383, 17:51 عصر
فکر نمی کنم احتیاجی باشه چون من خودم که برنامه نویسی شبکه می کنم و توی XP هم امتحان کردم به همین صورت فقط IP کامپیوتر سرور را وارد کردم (جایی که SQL Server) نصب شده و براحتی تونستم از بانک اطلاعات بگیرم . البته من در دلفی 7 از dbExpress استفاده می کنم .یک مساله را فراموش کردم شما احتیاج به :
ADO Connection, Cliend Dataset, Dataset Provider, ADO Command دارید. باید اینها را به یکدیگر ربط دهید.

موفق باشید

aliasghar
دوشنبه 28 اردیبهشت 1383, 19:29 عصر
نصب ویندوز 2000 سرور فقط برای نسخه های خاص sql server مثل advance server یا data center server الزام داره ولی اگه

روی سیستم من Sql SErver2000نصب شده است وهمچنین Delphi
فقط کافیه client tools مربوط به sql server را در کامپوتر بقیه دوستان نصب کرده و بعد

کافیه برنامه ای که نوشته ای را بر روی کامپیوتر آنها نصب کنی و سپس در کانکشنی که ساخته ای توسط ADO،‌ سرور را به جای اینکه Local انتخاب کنی،‌ IP کامپیوتر خودت که SQL Server‌ بر روی آن نصب شده بدهی.
همین

موفق باشی

Look in future
چهارشنبه 13 خرداد 1383, 15:06 عصر
دوست عزیز سلام
میشه بگویید چگونه با dbexpress به sqlserver
connect شدید من هرکاری که می کنم نمی شه و با این پیغام روبرو می شوم

amirrf
چهارشنبه 13 خرداد 1383, 18:57 عصر
سلام دوستان
من در یک اتاق کار می کنم که با 5 کامپیوتر دیگر شبکه هستیم و یک پرینتر برلی همه کامپیوتر هاست .روی سیستم من Sql SErver2000نصب شده است وهمچنین Delphi . من یک برنامه نوشته ام بصورت Single و در آن از Ado و Sql استفاده کرده ام .حالا دیگر clientها می خواهند از برنامه من استفاده کنند لطفا به من بگویید برای این کار چه می بایست انجام دهم آیا باید روش برنامه نویسی را عوض کنم یا اگر sql را روی دیگر client ها نصب کنم و یعد بانک را attach کنم وسپس برنامه را share کنم مشکل حل می شود لطفا در این زمینه بیشتر راهنمایی کنید .
سلام،
همانطور که دوستان گفتند،
معماری مورد نظر شما کلاینت/سرور است. منظور از سرور RBDMS است، برای شما MS SQL Server، و برنامه نوشته شده توسط شما کلاینت است و باید به سرور متصل شود. دیتابیس و RDBMS فقط روی سرور قرار می گیرند. برنامه کلاینت روی تمام کلاینت ها قرار می گیرد.

کافی است ADOConnection از طریق نام یا IP سرور SQL به آن وصل شود نه localhost.
حتما روی کلاینت ها آخرین نسخه MDAC را نصب کنید (در سی دی دلفی 7 وجود دارد).

بحث Security نیز وجود دارد. بهتر است ابتدا سعی کنید از روی یک کلاینت و از طریق ساخت یک دیتاسورس ODBC به سرور SQL و دیتابیس موردنظر اتصال برقرار کنید.

برای dbExpress آن پارامترهای SQLConnection را مقداردهی کنید، از جمله Host و DatabaseName.
انتقال به dbExpress عالی است اما شما را با مباحث جدیدی از جمله معماری Provide/Resolve و ClientDataSetها درگیر می کند.

Mohammad S
پنج شنبه 14 خرداد 1383, 00:18 صبح
باید ارتباط های زیر را برقرار کنی بین یک SQLConnection، SQLDataSet، DataSetProvider، ClientDataSet، DataSource پس از قرار دادن این 5 شی بر روی فرم باید آنها را به هم وصل کنی. از طریق دستورات زیر می توانی این کار را انجام دهی. بعضی از پارامترها هم می توانی در زمان طراحی تعیین کنی و لازم نیست در زمان اجرا تعیین کنی.


SQLDataSet1.SQLConnection:=SQLConnection1;
DataSetProvider1.DataSet:=SQLDataSet1;
ClientDataSet1.ProviderName:='DataSetProvider1';
DataSource1.DataSet:=ClientDataSet1;
SQLConnection1.Connected:=true;
SQLDataSet1.Active:=true;
ClientDataSet1.Active:=true;

موفق باشی. :wink:

Mohammad S
پنج شنبه 14 خرداد 1383, 00:28 صبح
در مورد تصویر فوق:
همانطور که جناب فراهانی فرموده اند:
(Host: (local یا IP سرور
DataBase: دیتابیسی که روی SQL Server ساخته اید
User و Pass: نام کاربری و رمز عبوری که به یک کاربر نسبت داده اید و شرایط مورد نیاز مثل اجازه خواندن،‌ نوشتن و ... را در مورد بانک مورد نظر به او داده باشید..

Look in future
پنج شنبه 14 خرداد 1383, 11:29 صبح
سلام دوستان
من دارم تلاش می کنم برنامه نویسی شبکه را یاد بگیرم می خواستم مرا در این زمینه راهنمای کنید
در ایتدا من یک پروژه باز کردم (ناگفته نماند از فرمایشات اقای دادوند نیز استفاده کردم )
new/multiter/remote data module
در قسمت coclassname یک نام بنام server1 انتخاب کردم و در قسمت instancing ،multiple و در قسمت therading ،free را انتخاب کردم
یک AdoConnection گذاشته و نام بانک را انتخاب کردم ، یک AdoTable گذاشته وآنرا به AdoConnection متصل کردم .در این قسمت NameTable را انتخاب نکردم چون معلوم نیست از کدام Table در بانک استفاده کنم .
یک DataSetProvider گذاشتم و آنها را به Adotable متصل کردم سپس برنامه را اجرا کردم تا سرور ریجستر شود .
یک پروژه جدید یاز کردم برای Client . در این پروژه یک Dcomonection قرار داده و در قسمت ServerName نامی که برای سرور انتخاب کرده بودم را انتخاب کردم و Connect آنرا برابر با true قرار دادم .
یک ClientDataset روی فرم قرار داده و remoteServer آنرا به Dcomconection متصل کردم و Providername را به DatasetProviderمتصل کردم .
یک Datasource روی فرم کذاشته وآنرا به clientDataset متصل کردم .سپس یک dbedit روی فرم قرار دادم .datasource آنرا انتخاب کردم ولی وقتی خواستم dataField را انتخاب کنم با چنین پیغاح خطایی روبرو شدم
AdoTable1:Missing Tablename Property
لطفا مرا راهنمایی کنید
با تشکر

[/list]

Mohammad S
پنج شنبه 14 خرداد 1383, 22:40 عصر
در این قسمت NameTable را انتخاب نکردم چون معلوم نیست از کدام Table در بانک استفاده کنم .
به گفته خود شما نام Table انتخاب نشده پس اول باید نام جدول خود را مشخص کنید (با این حساب در زمان اجرا) و سپس بقیه موارد را هم در زمان اجرا مقداردهی کنید. :wink:

Look in future
شنبه 16 خرداد 1383, 09:42 صبح
سلام
من جدول را انتخاب کردم ولی وقتی در برنامه client خاصیت Active
clientdataset را برابر با True می کردم با چنین خطایی روبرو می شدم :
Error Loading midas.dll l

Look in future
یک شنبه 17 خرداد 1383, 16:14 عصر
سلام دوستان
آقا من الان چند روز است که درگیر این ماجرا هستم لطفا اگر کسی در این زمینه اطلاعاتی دارد راهنمایی کند

Hidarneh
یک شنبه 17 خرداد 1383, 19:17 عصر
خب خودت جواب خودت رو دادی که . باید client ها هم فایل midas.dll رو داشته باشند

Look in future
دوشنبه 18 خرداد 1383, 10:15 صبح
دوست عزیز من تازه شروع به نوشتن برنامه Client کردم هنوز انها را در Client ها نصب نکردم دز ضمن این خطا در مرحله اول نوشتن برنامه است.
مشکل بعدی اینکه من وقتی ادرس ip را بصورت دستی در adoconnection می نویسم با چنین خظایی روبرو می شوم و وقتی می خواهم کامپیوتر را از منوی کامبو انتخاب کنم با یک خطای دیگر روبرو میشوم . لطفا در این زمینه مرا بیشتر راهنمایی کنید

Mohammad S
دوشنبه 18 خرداد 1383, 11:23 صبح
برای ساختن کانکشن توسط ADO:
بر روی ADOConnection1 دابل کلیک کنید تا پنجره مربوطه باز شود. سپس بر روی دکمه Build کلیک کنید از لیست موجود،‌ Microsoft OLE DB Provider for SQL Server‌را انتخاب کنید و دکمه Next‌را کلیک کنید. در قسمت Server Name، نام سرور یا در واقع IP سرور را باید بدهید (البته با کدنویسی چون ممکن است IP سرور تغییر کند) ولی فعلا (local) را بنویسید البته همراه با پرانتزها. در قسمت User و Pass یک نام کاربری و رمز عبور آن که در اس کیو ال سرور ساخته اید را وارد کنید. سپس در قسمت DataBase Name نام دیتابیس مورد نظر خود را انتخاب کنید. و در نهایت OK و باز هم Ok و کار ساخت کانکشن تمام است . حالا باید بروی سراغ بقیه موارد.

موفق باشی. 8)

Look in future
دوشنبه 18 خرداد 1383, 13:25 عصر
دوست عزیز سلام
طبق راهنمایی های آقای دادوند من باید 2 تا برنامه بنویسم یعنی یکی برای سرور و یکی برای کلاینت ها یا اینکه یک برنامه کار هر دو را انجام می دهد
با تشکر

Mohammad S
دوشنبه 18 خرداد 1383, 13:44 عصر
هر دو روش وجود دارد. من از یک برنامه برای کلاینت استفاده می کنم و برنامه ای برای سرور نمی نویسم (البته بعضی کاربردها را می توانی در برنامه سرور قرار دهی ) افزایش کلاس کار :mrgreen:

Look in future
دوشنبه 18 خرداد 1383, 14:16 عصر
سلام دوست عزیز
من اینکار را انجام دادم یعنی
ADO Connection, Cliend Dataset, Dataset Provider, ADO table را روی فرم گذاشتم و ارتباطات را برقرار کردم .حالا چگونه برنامه را روی کلاینت ها اجرا کنم
با تشکر

Mohammad S
سه شنبه 19 خرداد 1383, 01:35 صبح
برنامه را روی یک سی دی Write می کنی و بر روی کامپیوتر کلاینت نصب می کنی. :mrgreen: البته باید IP سرور را برای کانکت شدن داده باشی. بقیه کارها را هم که بلدی. با دستورات SQL و ............
موفق باشی :wink:

Look in future
سه شنبه 19 خرداد 1383, 08:41 صبح
دوست عزیز سلام
من ado را گذاشتم و اتصال آنرا بدین صورت برقرار کردم در قسمت
Select or enter servername=(local) را اتنخاب کردم و در قسمت
Select the database on the server نام بانک اطلاعاتی را اتنخاب کردم . یک DatasetPrtovider روی فرم گذاشتم و خاصیت آنرا بدین صورت اتخاب کردم Dataset=clientDataset1
یک adocommand روی فرم گذاشتم و اتصال آنرا بدین صورت برقرا کردم
connection:=adoconnection1
commandtext:=select * from employee
یک clientdataset روی فرم گذاشته و خاصیت آنرا بدینگونه تنظیم کردم
Providername:=datasetprovidername1
وقتی خاصیت Activeآنرا برابر با true می کنم با چنین پیامی روبرو می شوم
لطفا در این زمینه مرا بیشتر راهنمایی کنید در ضمن من مثال دلفی را هم نگاه کردم و طبق اون پیش رفتم

Mohammad S
سه شنبه 19 خرداد 1383, 14:42 عصر
معلوم است دیگر شما DatasetPrtovider را به clientDataset1 وصل کرده اید و clientDataset1 را به DatasetPrtovider. :shock: به نظر شما این کار،‌منطقی است؟
شما باید از یک ADODataSet1 استفاده کنید و آن را به کانکشن متصل کنید. احتیاجی به ADOCommand1 نیست. طبق شکل زیر شما باید از چپ به راست اجزا را روی فرم قرار دهید و هر شی سمت راست را به شی سمت چپ متصل کنید. در تاپیکی دیگر این مورد را توضیح داده بودم.
موفق باشید.

Look in future
سه شنبه 19 خرداد 1383, 16:05 عصر
سلام دوست عزیز
آقا ایول دستتون درد نکنه مشکل برطرف شد حق با شما بود
دوست عزیز جرا وقتی می خواهی خاصیت active
clientdataset را برابر با true کنی با خطا زیر روبرو می شوی
Error Loading midas.dll

Mohammad S
سه شنبه 19 خرداد 1383, 21:35 عصر
نمی دانم مشکل شما از چیست ولی ببینید آیا این فایل را در پوشه System32 ویندوز خود دارید یا نه؟ من در سیستم خودم چنین فایلی دارم ولی کاربرد آن چیست را نمی دانم. :?:

Look in future
چهارشنبه 20 خرداد 1383, 10:51 صبح
سلام دوست عزیز
من mdac و client Tools را در client های شرکت نصب کردم . حالا در برنامه اصلی که روی سروراست در قسمت select Or enter a server name که قبلا (local) را اتنخاب کرده بودم می بایست آدری ip کامپیوتری که برنامه روی آن نوشته شده است و بانک روی آن قرار دارد (server)
را انتخاب کنم در ضمن من از گزینه use windows NT integratiy security استفاده کردم.
من آدرس را دادم ولی دوباره پبغام خطا می دهد روال کار درست است
با تشکر

Look in future
چهارشنبه 20 خرداد 1383, 10:54 صبح
سلام
من mdac را نصب کردم و از همه مهمتر اون فایل midas.dll را در system32 کپی کردم ولی باز هم همان مشکل اومده
با تشکر

Mohammad S
چهارشنبه 20 خرداد 1383, 19:35 عصر
شما این بار Server & Client Tools را روی کلاینت نصب کنید ببینید باز هم مشکل دارد؟ فکر کنم مشکل شما حل شود. :idea:

Look in future
پنج شنبه 21 خرداد 1383, 08:31 صبح
سلام دوست عزیز
محمد جان میشه بگی برای نصب برنامه روی کلاینت ها چه کار باید کرد

Look in future
دوشنبه 25 خرداد 1383, 14:25 عصر
سلام دوست عزیز
من mdac و client Tools را در client های شرکت نصب کردم . حالا در برنامه اصلی که روی سروراست در قسمت select Or enter a server name که قبلا (local) را اتنخاب کرده بودم آدرسip کامپیوتری که برنامه روی آن نوشته شده است و بانک روی آن قرار دارد (server)
را انتخاب کردم در ضمن من از گزینه use windows NT integratiy security استفاده کردم.
من آدرس ip را وارد کردم ولی وقتی test connection را می زنم با این خطا مواجه می شوم در شمن sqlserver هم run است .
با تشکر

Mohammad S
سه شنبه 26 خرداد 1383, 15:00 عصر
احتمالا مربوط می شه به دسترسی شما به سرور. شما به جای استفاده از مود اعتبار ویندوز، یک یوزر و پسورد در سرور تعریف کنید و از طریق آن به بانک متصل شوید. شاید مشکلتان حل شود.
موفق باشید 8-)