PDA

View Full Version : SQL



ashkan_gorg
دوشنبه 28 مرداد 1387, 18:49 عصر
ببخشیددوستان من یک برنامه نوشتم که الان میخوام کل پروژه رو به SQL تبدیل کنم وازاین به بعد حتی زمانREPLACE هم از فرامین SQL استفاده بشه باید چیکارکنم ازکجا شروع کنم؟

سعید حمیدیانفر
سه شنبه 29 مرداد 1387, 07:51 صبح
گزينه هاي مختلفي براي انتخاب هست


Remot View
SQLexc()
CursorAdapter
ADO Object

حالا با توجه به شرايط و مقدورات ، شما بايد انتخاب كنيد.

ashkan_gorg
سه شنبه 29 مرداد 1387, 09:03 صبح
من اصلا نمیدونم که چه جوری باید شروع کنم آخه نه دستورات ذخیره سازی در sql ونه خواندن از sql را بلدم پروژه هم داره آماده به تحویل میشه ولی من کاری انجام ندادم از sql

NewFoxStudent
سه شنبه 29 مرداد 1387, 09:34 صبح
یه سری دستورات کار با SQL براتون گذاشتم
اگه توضیح نیاز داشتین بفرمایید تا بگم
در مورد اتصال به بانک SQL هم یه فایل دیگه میزارم


22096

NewFoxStudent
سه شنبه 29 مرداد 1387, 09:42 صبح
اینم اتصال به SQL
البته یکی از ده ها روش


22098

NewFoxStudent
سه شنبه 29 مرداد 1387, 10:10 صبح
به طور کلی کار با SQL تفاوت زیادی با کار با فاکس نداره
فقط کافیه بتونی اطلاعات رو بین sql و فاکس خوب انتقال بدی
اکثر دستورات SQL توی فاکس هم ساپورت میشه
یه توصیه دوستانه :
هیچ وقت استفاده از Transaction رو فراموش نکن

سعید حمیدیانفر
سه شنبه 29 مرداد 1387, 10:26 صبح
هميشه يه سوال برام مطرح بوده
و چون هنوز پروژه كاملا جدي و حرفه اي با اين روش انجام ندادم نتونستم جوابش رو پيدا كنم

اينكه آيا استفاده از امكاناتي از قبيل remot view يا cursorAdapter نتيجه بهتري داره
و يا كد نويسي و كار كردن با توابعي مثل sqlEXE , SQLConnect و ....

NewFoxStudent
سه شنبه 29 مرداد 1387, 10:30 صبح
من با همین توابع و کد نویسی پروژه های بزرگی رو کار کردم
استفاده از این توابع و ساختن کلاسهای مربوطه از طریق کد نویسی راه حل بسیار مناسبیه
یک نمونه از کلاسهای مربوطه رو براتون میزارم
البته باید پیداش کنم

NewFoxStudent
سه شنبه 29 مرداد 1387, 10:45 صبح
این یک نمونه از کلاسهای کار با SQL
من برای هر فرم موجود در پروژه یک کلاس ساختم
فرم های ListMore و Helper که در روالهای LoaderوGetList استفاده شدند فرمهای عمومی پروژه هستند که با پارامتر استفاده میشن
اینجوری برای نمایش اطلاعات از یک فرم استفاده میشه و در زمان صرف جویی میشه
برای ویرایش اطلاعات و اضافه کردن رکورد جدید هم هر جدول یک فرم مرتبط داره که اجرا میشه

22101

ashkan_gorg
سه شنبه 29 مرداد 1387, 11:41 صبح
من که چیزی متوجه نشدم

سعید حمیدیانفر
سه شنبه 29 مرداد 1387, 12:48 عصر
من که چیزی متوجه نشدم

اتفاقا كد هاي جالب و آموزنده اي بود
شايد بهتر باشه يه مقدار با هم وصل شدن و كار كردن با يك ديتا بيس Server base مثل SQL رو مرور كنيم

1-ابتدا شما بايد يك كانكشن بسازيد تا از طريق اون برنامتون رو به ديتا بيس متصل كنيد.
(كه من در اينجا با اجازه استاد محترم از كدشون استفاده مي كنم )
مثلا براي اتصال به يك ديتابيس با نام mydata كه روي كامپيوتري با نام comp1 نصب شده ميشه از اين كد
استفاده كرد
البته با فرض اينكه يوزر SA پسورد نداره


lcdsnLess = "Driver=Sql Server;Server=comp1 Server;Server=computername;UID=sa;PWD=;DataBase=my data"
CSQL = SQLSTRINGCONNECT(lcdsnLess)
IF CSQL <= 0
MESSAGEBOX("ارتباط با بانک اطلاعاتي برقرار نشد",16,"")
RETURN .F.
ELSE
RETURN .T.
ENDIF

سعید حمیدیانفر
سه شنبه 29 مرداد 1387, 13:07 عصر
2- بعد از اينكه با موفقيت به ديتا بيس متصل شديد نوبت به اين ميرسه كه هر كاري دلتون ميخوادباهاش انجام بدين

و بايد از تابع SQLEXEC استفاده كنيد
(پيشنهاد ميكنم Help اين دستو رو حتما بخونيد چون كاملترين توضيحات و مثالها رو داره )

براي راه انداختنش فقط كافيه اون متغيير ي كه نتيجه SQLconnect توش ريخته شده رو داشته باشيد
ميتونيد اون رو بصورت يك متغيير Public اول برنامه تعريف كنيد تا متصل بشه و تا پايان كار ازش استفاده كنيد
يك نمونه ساده از اجراي اين تابع




SQLEXEC(CSQL, 'SELECT * FROM authors', 'PubAuthors')
BROWSE


در اين مثال ما تابع رو با 3 آرگومان فراخواني كرديم
اول كدعددي اتصال به ديتا بيس
دوم يك رشته كه حاوي دستور sql موردنظر ماست
سوم يك رشته كه حاوي نام يك جدول مجازي (cursor) هست كه براي مراجعات بعدي به اطلاعات ميشه ازش استفاده كرد .