# Native Code > برنامه نویسی در Delphi > توسعه نرم افزارهای تحت شبکه > مبتدی: نوشتن برنامه تحت شبکه محلی

## Fastdesign

سلام

زیاد در این سایت جستجو کردن ولی خیلی برام پیچیده بود .
من در برنامه تحت شبکه تازه کارم .
می خوام سوال بگیرم برای اینکه بتونم یک برنامه برای یک شبکه محلی بنویسم :
به این صورت که یک سرور و دو کلاینت داشته باشم . از چه کنترل هایی در دلفی استفاده کنم بهتره ؟

در ضمن SQL Server هم روی سیستم سرور نصب باشه و بقیه دو سیستم دیگه از طریق شبکه از سرور سرویس بگیرند(حذف و اضافه کردن رکورد و ...).

با تشکر

----------


## mohsen24000

اگر فقط صرف کار با بانک اطلاعات تحت شبکه و SQLسروره از کامپوننت خاصی نیاز نیست که استفاده کنی همون ADO کافیه ، چون قرار نیست بین کلاینتها اطلاعاتی رد و بدل بشه که نیاز به سوکت و غیره داشته باشی!

----------


## Fastdesign

اگه SQL Server رو سرور نصب باشه دیگه نیاز به نصب  SQL Server یا اجزای دیگه روی کلاینت هم است یا نه ؟

----------


## mohsen24000

خیر، فقط دسترسی به سرور نیازه!

----------


## Fastdesign

من همه این کارها را انجام دادم(یعنی ارتباط بین سرور و کلاینت برقرار است و در برنامه ای که در کلاینت می خوام اجراش کنم IP کلاینک رو ست کردم) ولی چرا این خطا می ده ؟ 
2.jpg

----------


## Fastdesign

ببخشید منظورم IP سیستم سرور بود!

----------


## mohsen24000

مشکل شما باید از کانکشن استرینگتون باشه!
یوزر آی دی و پسورد اسکیول سرور هم باید درست تنظیم بشه...
مثل : Provider=SQLOLEDB.1;Password=***;Persist Security Info=True;User ID=sa;Initial Catalog=DbaseName;Data Source=ServerName;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=ClientName;Use Encryption for Data=False;Tag with column collation when possible=False

----------


## Fastdesign

من هم همون را گذاشتم ولی با این تفاوت که من IP سیستم سرور را هم اینجا ست کردم :
'Provider=SQLOLEDB.1;Password=*****;Persist Security Info=True;User ID=sa;Initial Catalog=Example;Data Source=192.168.0.1'

----------


## Fastdesign

در ضمن این تنظمات کانکشن هم تو سیستم سرور درست کار می کنه ولی تو سیستم کلاینت خطا می ده؟

----------


## BORHAN TEC

کلاً ADO را کم کم باید به فراموشی سپرد. توجه داشته باشید که انجام این کارها در دلفی بسیار آسان است. یکی از روش های انجام این کار توسط DataSnap و dbExpress می باشد.
اما در مورد SQL Server باید بگویم که در سیستم کلاینت هم شما نیاز به Microsoft SQL Server 2008 Native Client خواهید داشت که باید آنرا از آدرس زیر دانلود کنید:
http://www.microsoft.com/download/en...ng=en&id=16177

در مورد نحوه پیاده سازی سرور و کلاینت ها هم من قبلاً مقاله ای را در همین زمینه را در آدرس زیر قرار داده ام:
https://barnamenevis.org/showthread.p...A7-DataSnap-XE

----------


## Fastdesign

دوستان من این برنامه Microsoft SQL Server 2008 Native Client را نصب کردم ولی باز هم در سیستم کلاینت همون خطا را میده . به نظر شما دوستان دیگه می تونه مشکل از چی باشه؟
در ضمن روش اتصال هم ADO Connection است .


با تشکر

----------


## tiphooo

> =شاهین عشایری;1462739]کلاً ADO را کم کم باید به فراموشی سپرد. توجه داشته باشید که انجام این کارها در دلفی بسیار آسان است. یکی از روش های انجام این کار توسط DataSnap و dbExpress می باشد.


حداقل توی این سایت یک مثال ساده از نحوه کارکرد datasnap , dbExpress وجود ندارد


[QUOTE]=اما در مورد SQL Server باید بگویم که در سیستم کلاینت هم شما نیاز به Microsoft SQL Server 2008 Native Client خواهید داشت که باید آنرا از آدرس زیر دانلود کنید: [/URL]http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=16177[/URL] [QUOTE   ]

آیا منظور شما در مورد حالتی است که از ADO استفاده شود؟
چون معمولا بر روی کلاینت چیزی نصب نمی شود 
امکان داره یک کم بیشتر توضیح بدید؟

----------


## Fastdesign

دوستان کسی نمی دونه که چرا در سیستم کلاینت این خطا میده؟

----------


## mohsen24000

بهتره کانکشن استرینگی که استفاده می کنید به صورت کامل قرار بدید، احتمالا شما Workstation ID به طور صحیح تعریف نکرده باشید!

----------


## Fastdesign

این هم شکل کانکشن :
Data Link.jpg
 رو سیستم سرور که دیتابیس SQL نصب است درست جواب میده ولی رو سیستم کلاینت ها خطایی ک در پست 5 این تاپیک قرار دادم میده !

با تشکر

----------


## mohsen24000

خب WorkStationID در کانکشن استرینگ رو چی تعریف کردید؟

----------


## Fastdesign

اگه منظورتان از WorkStationID ، آی پی سیستم سرور است که من در قسمت Server Name آی پی سیستم سرور را وارد کردم !

ولی اگه منظورتان آی پی سیستم کلاینت است که وارد نکردم یعنی نمی دونم از کجا وارد کنم !

----------


## mohsen24000

شما همون کانکشن استرینگی رو که در پستهای قبلی قرار دادم را استفاده کنید و فقط اطلاعات مربوط به بانک خودتون مثل نام بانک، پسورد یوزر sa، نام سرور و نام کلاینت رو تغییر بدید، با این تفاسیر اگر دسترسی به سرورتون مشکلی نداشته باشه دیگه نباید پیام خطایی رو ببینید!

----------


## Fastdesign

همه این تغییرات را انجام دادم ولی باز هم همون خطای اولی را می گیره !!

شبکه هم که درسته !

----------


## Mask

دوست عزیز. کانکشن استرینگ یه مقداره رشته ایی هست. که شما غیر از ویزارد دلفی میتونید به صورت دستی پرش کنید و ADOconnectioneton  رو True کنید.
اولین کار واسه رفع مشکلتون :
مقدار کانکشن استرینگ خود سرور رو به صورت دستی بدید.
و مقدارش رو هم اینجا بزارید.
تا مقدار کانکشن استرینگ بر روی کلاینتهات رو بهت بگم.
واسه اینکه مقدار کانکشن استرینگ رو در بیاری.: به صورت ویزارد دلفی برنامه رو وصل کن به بانک. بعدش adoconnection رو سلکت کن و در پروپرتیس روی کانکشن استرینگ کلیک کن و دکمه کنترل+سی  رو بزن.
و اینجا پیست کن.
تا ادامه ماجرا...

----------


## Fastdesign

این Connection String برای سرور :
  ADOConnection1.ConnectionString :='Provider=SQLOLEDB.1;Password=98765;Persist Security Info=True;User ID=sa;Initial Catalog=Example;Data Source=HASAN-PC';
  ADOConnection1.Connected := true;

حالا برای کلاینت ...

----------


## Mask

دوست عزیز
برای برنامه کلاینت و سرور یه کانکشن استرینگ باید تعریف کنی.
به عکس زیر دقت کن.
در فیلد اول ابتدا آی پی سرور و سپس \  و سپس نام کامپیوتر سرور رو وارد کن. بعدش تو اسکیو ال منیجرت در قسمت سکیوریتی یه یوزر با پسور بساز و در فرم در قسمت یوزر نیم و پسوورد وارد کن .
و بقیه تنظیمات.
این تنظیمات در برنامه کلاینت و سرور یه جوره.
موفق باشی.

----------


## Felony

> در فیلد اول ابتدا آی پی سرور و سپس \ و سپس نام کامپیوتر سرور رو وارد کن.


نیازی به این کارهای نیست ؛ کافیه سرویس SQL Browser روی سیستم سرور در حال اجرا باشه تا اسم سرورها رو بتونید در لیست ببینید و سرور مورد نظر رو انتخاب کنید .

----------


## imani1983

سلام - مرسی جالب بود 
راستش منم یه برنامه با دلفی هفت نوشتم که بانک اطلاعاتیش sql2000 هست منم می خوام فایل اجرای این برنامه رو به اشتراک بذارم و تو شبکه محلی به صورت شبکه ای از آن استفاده کنن - اما منم مشکلات شما رو دارم .حالا من چی کار کنم - اگه امکانش هست کمی واضحتر بگین.
آیا باید تنظیمات خود sql رو تغییر بدیم ؟
یا نه از سریق خود دلفی باید کاری انجام بدیم؟
آیا حتما باید جهت اتصال به پایگاه داده نام کاربری و رمز ورود تعریف کنیم ؟؟؟؟؟؟؟؟

----------


## imani1983

اگه امکانش هست با یه مثال ساده برای من توضیح بدین

----------


## tiphooo

شما باید روی سرور SQLServer را نصب کنید و فایل اجرایی را روی کلاینتها نصب کنید و اگر از ADO استفاده کرده باشید در ConnectionString مربوط به ADOConnection باید مسیر دیتابیس را همانطور که در پست 22 گفته شد تنظیم کنید
نیازی به کار خاصی در SQLServer و سرور نیست در برنامه دلفی اگر تا حالا نام سرور را در Select or enter server name : وارد نمی کردید حالا باید وارد کنید(مطابق شکل پست 22)

----------


## firststep

دقت داشته باشید که نتها یک سرویس sql روی سیستمتان نصب باشد
در زمان نصب visual studio اصولاً یک sql express نیز نصب می شود و شاید خودتان هم یک sql enterprice هم نصب کرده باشید که اون موقع بایستی سرویستون رو معرفی کرده باشید....

----------


## arkia

منم همین مشکلو دارم نتیجه بحث چی شد؟

----------


## PayamKazemi

سلام.

دوستان مشکل از کانکشن استرینگ نیست، 

باید از داخل sql server وارد بخش Security بشین و از اونجا وارد بخش Logins و یک کاربر جدید اضافه کنید و نام کاربری آن را نام کامپیوتری که میخواهید به sql دسترسی پیدا کند را بگذارید همین.

----------


## arkia

> سلام.
> 
> دوستان مشکل از کانکشن استرینگ نیست، 
> 
> باید از داخل sql server وارد بخش Security بشین و از اونجا وارد بخش Logins و یک کاربر جدید اضافه کنید و نام کاربری آن را نام کامپیوتری که میخواهید به sql دسترسی پیدا کند را بگذارید همین.


من sa رو نام کاربری میزارم رمزم بهش میدم اما نمیشه ، فک نمیکنم اگه sa داشته باشیم نیازی به ساختن کاربر باشه درسته؟

----------


## Mask

یه یوزر واقعی بسازید با پسوورد ، تست کنید ، ببینید جواب میگیرید؟

----------


## arkia

حتی وقتی من میزنم (local) میتونم تو لوکال وصل شم اما وقتی میزنم 127.0.0.1 نمیشه! این مشکل از کجاش میتونه باشه؟
(من از Instance استفاده میکنم اینطوری می نویسمش:

local)\Instance

----------


## Felony

127.0.0.1\Instance

----------


## arkia

> 127.0.0.1\Instance


دوست عزیز امتحان کردم نشد

----------


## حسین خانی

با سلام

دوستانی که از سمت کلاینت نتیجه نمی گیرن ... باز بودن پورت SQL Server رو هم بررسی کنند.

واسه تستش هم میتونید فایروال سرور رو off کنید و نتیجه رو ببینید.

موفق باشید ...  :لبخند:

----------


## arkia

> با سلام
> 
> دوستانی که از سمت کلاینت نتیجه نمی گیرن ... باز بودن پورت SQL Server رو هم بررسی کنند.
> 
> واسه تستش هم میتونید فایروال سرور رو off کنید و نتیجه رو ببینید.
> 
> موفق باشید ...


اصلا تو لوکال هم نمیشه!

----------

