# پایگاه‌های داده > سایر پایگاه‌های داده > Foxpro >  منظور از ریموت چیست

## سعید20

در بحث دیتا بیس واژه ریموت به چه عنوان هست و واقعا به چه دردی میخورد

----------


## rezaTavak

یعنی اینکه بانک روی یک سرور است و شما با پورتها با اون ارتباط برقرار کنید. 

یک معنی دیگه اینکه از طریق ODBC بانک از نوع دیگر را در فاکس باز کنید.

----------


## سعید20

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

----------


## rezaTavak

مثال اول: شما چگونه یک بانک از نوعی دیگر را در فاکس باز می کنید؟ آیا می دانید که MySQL,SQLServer,Oracle,mSQL,DB2,... فقط مدیران بانک هستند و مانند فاکس نمی توانید در آنها برنامه نویسی کنید. شما با ODBC اینها را باز می کنید و از دستورات SQL با این بانکها ارتباط دارید. به عبارت دیگر  یک فایل MDB در فاکس باید از طریق ODBC باز شود. در واقع ODBC توسط یک dll توسط ویندوز در حال اجرا است. وقتی شما درایور بانک اطلاعاتی مانند MySQL را نصب کنید و MySQL  در حال اجرا باشد شما در فاکس به بانکهای آن از طریق ODBC دسترسی دارید. یعنی فاکس از طریق پورتها به بانک دسترسی پیدا میکند. این دقیقا کاری است که بیسیک دلفی و سی و جاوا و... برای ارتباط با بانکها از آن سود می جوید. 
می دانید که فاکس فقط قادر است که با DBF کار کند و با اینکار شما هر درایوری از ODBC را داشته باشید آن بانک هم توسط فاکس قابل مدیریت است.

مثال دوم: بانک از نوع dbf در سروی که ODBC بر روی آن نصب است در حال کار است شما فقط از طریق پورتها با آن ارتباط دارید. 

مثال سوم: روی سرور یونیکس MySQL در حال اجرا است شما اگر دسترسی مجاز به آن داشته باشید به راحتی به داده های آن دسترسی دارید. حتی در اینترنت هم اگر دسترسی داشته باشید می توانید این کار را انجام دهید.



اما کاری که شما از آن صحبت میکنید SHARE است. یعنی مشترک کردن فایلها در شبکه. این دقیقا مانند این است که شما با فایلی از هر نوع در ارتباط باشید نه بانک اطلاعاتی. یعنی شما میتوانید فایلهایتان را در یک جا قرار دهید که همه در شبکه با آن کار کنند. که نیازی به هیچ نرم افزار مدیریت بانک اطلاعاتی اضافی نخواهد بود و شما فقط با dbf ها کار خواهید کرد.

----------


## سعید20

از راهنمایی شما بسیار سپاسگزارم 

من برنامه تحت شبکه طراحی کرده ام . دیتابیس و جداول آن را در فولدری در سرور قرارداده ام و آن را برای بقیه share کرده ام و برنامه ها را بخاطر اینکه با سرعت بهتری اجرا بشن در استیشن ها نصب کرده ام و کاربران برای اجرای برنامه به آن فولدر کانکت میشوند آیا رویش خوبی است و میشود به سرعت آن حساب کرد یا روبش بهتری را پیشنهاد میکنید

----------


## rezaTavak

بله دقیقا کار و روش خوبی است.
 اما در بحث remote مسئله امنیت هم مطرح است. یعنی شما باید اجازه دسترسی به بانک را به هر کسی ندهید. مثلا در ارتباط با بانک MySQL در هر تراکنش رمز و نام کاربری باید ارسال شود.

----------


## rezakhj

> از راهنمایی شما بسیار سپاسگزارم 
> 
> من برنامه تحت شبکه طراحی کرده ام . دیتابیس و جداول آن را در فولدری در سرور قرارداده ام و آن را برای بقیه share کرده ام و برنامه ها را بخاطر اینکه با سرعت بهتری اجرا بشن در استیشن ها نصب کرده ام و کاربران برای اجرای برنامه به آن فولدر کانکت میشوند


آقا سعید  20
میشه لطف کنید توضیح دهید ارتباط نرم افزار روی استیشن با بانک روی درایو share شده را چگونه برقرار کرده اید ؟ منظورم اینست که در نرم افزار آدرس دیتابیس را چگونه معرفی کردید . 
یا همان کانکت را چگونه برقرار کردید ؟
لطفا با جزئیات توضیح دهید من الان کاملا به این مورد نیاز دارم

----------


## rezaTavak

کافیه آدرس را اینطوری بدهید؛


\\192.168.0.1\Foxpro\Dbfs\Personal.dbf

که آدرس آی پی در شبکه ویندوزی (سامبا) و آدرس فلدر نهایی و نام جدول است.

----------


## mehran_337

من هم پس از share کردن پوشه dbf در سرور در فایل config.fpw هر استیشن این را می نویسم :
path = '\\server\dbf'
که server نام کامپیوتر سرور است و پوشه dbf همان پوشه ایست که همه جداول در آن است
حالا از هر سیستمی می توانم جداول را با use باز کنم

----------


## Esikhoob

دوستان ما در برنامه مان مانند شما DBF .ها را روی سرور قراردادهایم ولی ما نیاز داریم که بعضی از دستورات توسط خود سرور انجام شود تا مطمئن شویم تغییرات به علت اختلالات شبکه ، ناقص ذخیره نشود . در واقع ما هدفی را دنبال میکنیم که دستور TRANSACTION برای آن ساخته شده.
 آیا اگر من در برنامه م از TRANSACTION استفاده کنم ، امکان اینکه یک تغییر ثبت شود و دیگری نه، وجود دارد؟
 اگر مکانیزمی وجود داشته باشد که کد روی سرور اجرا شود ، امنیتش به نظر ما که چیز دیگری میشود.
با تشکر

----------


## kia1349

تنها در حالتی اطلاعات یک یوزر ذخیره و دیگری رد میشود که هر دو بر روی یک داده مشترک کار کنند و مکانیزم ارتباط میان آنها کانفیلیکت همزمان را ساپورت کند مانند ارتباط ado connection که میتوان از طریق adoconfilict داده های ثبت نشده را مدیریت کرد

----------


## Esikhoob

نه دوست عزیز منظورم conflict دو کاربر نیست.
مثلا در برنامه بانک ، قرار است برنامه در دستور اول از حساب فلان شخص کم کند و در دستور بعدی آن پول را به حساب شخص دیگری اضافه کند ، حالا اگر دستور اولی با موفقیت انجام شود و نوبت اجرا به دستور بعدی برسد ؛ در این لحظه شبکه خراب شود ،یعنی پول از حساب شخص کم شده ولی به حساب مقصد واریز نشده است. در این حالت ما می خواهیم تغییر اولی نیز از بین برود و همه چیز برگردد به همان صورت که قبل از اجرای برنامه بوده.

----------


## rezaTavak

این مشکل را اینطور میشه حل کرد که رابطهای بانکهایی مثل mySQL استفاده کنید که بهتر از فاکس عمل میکنند.


در فاکس منطقا اگر اولی و دومی باهم باید انجام شود  و بعد بانک update شود.

----------


## Esikhoob

برای استفاده از رابطهای بانک mySQL ، آیا کل پایگاه داده را باید به mySQL  تبدیل کنیم؟ یا یک دستور خاص است؟





> در فاکس منطقا اگر اولی و دومی باهم باید انجام شود  و بعد بانک update شود.


منظورتان استفاده از buffering است؟یکچیزی مانند این برنامه:
 a = CURSORSETPROP("BUFFERING",5)     &&  use optimistic table buffering
BEGIN TRANSACTION
SEEK M.ACCOUNT1
REPLACE BALANCE WITH BALANCE - M.AMOUNT
SEEK M.ACCOUNT2
REPLACE BALANCE WITH BALANCE + M.AMOUNT
llSUCCESS = TABLEUPDATE(.T.)
IF llSUCCESS
    END TRANSACTION
ELSE
    ROLLBACK
ENDIF llSUCCESS

----------


## rezaTavak

دقیقا همین منظورم بود.

----------


## Esikhoob

و منظور از mySQL ؟

----------


## mehran_337

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

----------


## rezaTavak

منظور اینه که کلا بی خیال فایلهای dbf بشید.

----------


## Esikhoob

با سلام مجدد 

 آیا درست است که بگوییم ،" در Transaction ، تغییرات جایی بر روی دیسک در کنار فایل Table به صورت buffer ضبط می شود و وقتی به دستور END TRANSACTON میرسیم ، آن تغییرات بدون معطلی به Table اضافه میشود ."

----------


## rezaTavak

توی اینجور کارها برای فهمیدن جزئیات کار بهتر از یک دیدبان شبکه مثل etherreal استفاده کنید و پورت 3306 را نگاه کنیم. (شماره پورت را مطمئن نیستم)

قاعدتا کاری که شما به آن اشاره کرده اید درست است اما بسته به تنظیمات هم دارد. مثلا اینکه fetchsize چقدر باشد و...

----------


## Esikhoob

من در Help فاکس پرو نگاه کردم ، Fetchsize ظاهرا در مورد Remote table معنی پیدا میکند ، آیا اگر Table ما یک فایل dbf. عضو یک  dbc. باشد ، باز هم fetchsize مطرح است؟
با تشکر فراوان

----------


## rezaTavak

نه یک دستور دیگه بود 


SET ODOMETER Command

----------

