نمایش نتایج 1 تا 20 از 20

نام تاپیک: سوال: نحوه استفاده از Access بعنوان دیتابیس شبکه

  1. #1

    سوال: نحوه استفاده از Access بعنوان دیتابیس شبکه

    سلام
    اگر بخواهیم یک برنامه با دلفی و اکسس بنویسیم، آیا برای اجرای برنامه و ورود اطلاعات باید فولدری که فایل Mdb در آن قراردارد حتما در شبکه Shair شده باشد ؟

    در صورتی که فولدر Shair شود این احتمال وجود دارد که یک کاربر با دسترسی به این فولدر فایل Mdb را Delete کرده و در نتیجه تمام اطلاعات حذف شود.

    اگرShair کردن لازم نیست، لطفا طرز دسترسی کاربران به دیتابیس و کار با فایل Mdb را توضیح دهید.
    با تشکر

  2. #2
    یک روش نه چندان ساده(و نه زیاد هم سخت) برنامه نویسی سه لایه هست. اونوقت یک بانک اطلاعاتی داری یک سرویس دهنده (Dcom یا Corba) و یک سرویس گیرنده. سرویس گیرنده ها به سرویس دهنده وصل میشوند و اون اطلاعات مورد نیاز اونا رو تامین می کنهیعنی در واقع فقط سرویس دهنده به اطلاعات دسترسی داره
    You never know what you can do until you try

  3. #3
    سلام
    با دلفی میشه این کار رو کرد؟
    آیا شما نمونه ای دارید یا اینکه میشه یه مثال کوچک اینجا بگذارید؟
    لطفا راهنمایی کنید

  4. #4
    آره میشه. شما اگر توی File>new>other>Multitire برید و به یکی از Application هاتون یک Remote DataModule اضافه کنید اون Application میشه سرور شما
    یک Application هم ایجاد کنید و از قسمت DataSnap یک DcomConnection بذارید رو فرمتون . اینم میشه Client
    درون سرور با Ado یا BDE به بانک وصل بشید و با DatasetProvider جداول و Query هاتون رو Export کنید.
    در Client با Client DataSet و با استفاده از Dcom Connection به سرور وصل بشید و از جداول و Query ها استفاده کنید.

    برای توضیحات بیشتر می تونید به Pdf که تو دایرکتوری Documentation سی دی دلفی 6 هست
    مراجعه کنید
    چند تا نمونه Demo هم توی خود دلفی تو شاخه DataSnap هست.
    اینائی که گفتم در مورد Dcom بود ولی Corba من تا حالا کار باهاش نکردم فقط در حد آزمایشی.
    ولی در مورد Dcom اگه توضیحات بیشتر خواستید من هستم
    You never know what you can do until you try

  5. #5
    سلام مجدد
    متشکر از راهنماییتون
    امتحان میکنم
    امیدوارم نتیجه بگیرم

  6. #6
    سلام
    دوست عزیز لطفا این قسمت رو بیشتر توضیح بدید
    و با DatasetProvider جداول و Query هاتون رو Export کنید.
    داخل سی دی دلفی 6و7 و همچنین در شاخه نصب شده دلفی، شاخه ای به اسم DataSnap وجود نداره.
    چند تا نمونه Demo هم توی خود دلفی تو شاخه DataSnap هست.
    آخرین ویرایش به وسیله mehdi_moosavi : چهارشنبه 19 بهمن 1384 در 20:16 عصر

  7. #7
    سلام
    دوست عزیز لطفا این قسمت رو بیشتر توضیح بدید

    نقل قول:
    و با DatasetProvider جداول و Query هاتون رو Export کنید.
    بجای DataSource روی سرور از DataSetProvider استفاده کنید.
    اونوقت وقتی که روی کلاینت ClientDataSet رو به DcomConnection وصل می کنی تو قسمت Provider Name اسم اون DSP رو بذار این ClientDataSet توسط اون DataSetProvider به Qeury اصلی وصل میشه.

    داخل سی دی دلفی 6و7 و همچنین در شاخه نصب شده دلفی، شاخه ای به اسم DataSnap وجود نداره.
    اولا داخل سی دی نه رو هارد و فکر کنم تو این مسیر
    E:\Program Files\Borland\Delphi7\Demos\Midas
    رو سیدی دلفی 6 تو دایرکتوری Documentation یه Pdf هست که یه بخشش هم در مورد Dcom هست
    You never know what you can do until you try

  8. #8
    آقا سلام
    احوال شما؟
    شیراز چه خبر؟ یادش بخیر فلکه ارتش پادگان پشتیبانی (سربازی رو میگم)
    متشکر از راهنمایی
    من این چند مورد بالا رو انجام دادم
    البته وقتی بوسیله ADO به Access وصل میشم پیغام خطای زیر رو میده:

    Could not convert variant of type (Null) into Type (String)


    سوال من اینه که دو تا Project چطور همدیگه رو پیدا میکنند؟
    وقتی در Project کلاینت یک DCOM روی فرم میگذارم ولیست بازشدنی مربوط به ServerName اون رو باز میکنم نام Remote datamodule رو در Project سرور تشخیص میده.
    ایراد دیگه ای که میگیره از BDE هست ولی BDE درست نصب شده و من با دلفی 7 و کار با BDE هیچ مشکلی ندارم! وقتی که میخواهم ClientDataset رو open کنم این خطا رو میده

    An error occurred while attempting to initialize the
    Borland Database Engine (error $210C)

    یک سوال دیگه: DCOM یک خصوصیت بنام CompuerName داره. آیا لازم است که این خصوصیت هم تکمیل شود؟
    آخرین ویرایش به وسیله mehdi_moosavi : یک شنبه 23 بهمن 1384 در 14:55 عصر

  9. #9
    موارد مربوط به Ado و BDE ربطی به Dcom نداره
    یک سوال دیگه: DCOM یک خصوصیت بنام CompuerName داره. آیا لازم است که این خصوصیت هم تکمیل شود؟
    اگر بخوای Local کار کنی نه. ولی اگه بخوای تحت شبکه باشه باید این خاصیت رو بذاری IP کامپیوتری که سرور روش نصبه
    سوال من اینه که دو تا Project چطور همدیگه رو پیدا میکنند؟
    وقتی در Project کلاینت یک DCOM روی فرم میگذارم ولیست بازشدنی مربوط به ServerName اون رو باز میکنم نام Remote datamodule رو در Project سرور تشخیص میده.
    وقتی سرور برای اولین بار اجرا میشه خودش رو رجیستر میکنه. واسه همین کلایت کلیه سرور های DCom رو شناسائی میکنه.
    You never know what you can do until you try

  10. #10
    سلام، وقت بخیر
    پیرو صحبتهای قبلی، من ویندوز و دلفی رو مجددا نصب کردم و بعضی اشکالات رفع شد.
    یک پروژه شامل سرور و کلاینت ساختم و اجرا کردم. البته وقتی پروژه کلاینت اجرا میشه Form مربوط به پروژه سرور هم روی صفحه نمایش فعال میشه؟ آیا باید همینطور باشه یا راه حل دیگری هست؟
    مسئله بعد اینکه وقتی پروژه کلاینت اجرا میشه یک DBgrid از طریق اتصال به ClientDataSet به پروژه سرور و در نتیجه به Table پارادکس وصل شده ، ولی وقتی داخل این DBGrid اطلاعات وارد میکنم ، ذخیره نمیشه. (وقتی ازبرنامه خارج شده و دوباره وارد میشم ، اطلاعات ذخیره نشده)
    این مسئله رو در روی پروژه

    \borland\delphi7\Demos\Midas\Login\Client.exe

    هم تست کردم.
    و دیگر اینکه من در پروژه ها ، برای ذخیره و بازیابی اطلاعات از AdoCommand و AdoQuery و دستورات SQL استفاده میکردم حالا با توجه به اینکه در پروژه کلاینت فقط یک DCOMConnection و یک ClientDataSet داریم چطور از دستورات SQL استفاده کنم؟
    با تشکر مجدد

  11. #11
    وقتی پروژه کلاینت اجرا میشه Form مربوط به پروژه سرور هم روی صفحه نمایش فعال میشه؟ آیا باید همینطور باشه یا راه حل دیگری هست؟
    باید همینطور باشه. خودت میتونی فرم سرور رو مخفی کنی

    مسئله بعد اینکه وقتی پروژه کلاینت اجرا میشه یک DBgrid از طریق اتصال به ClientDataSet به پروژه سرور و در نتیجه به Table پارادکس وصل شده ، ولی وقتی داخل این DBGrid اطلاعات وارد میکنم ، ذخیره نمیشه. (وقتی ازبرنامه خارج شده و دوباره وارد میشم ، اطلاعات ذخیره نشده)
    درسته اطلاعات Local ذخیره میشه وبرای ارسال به سرور باید بنویسی

    CLientDataSet1.ApplyUpdates(-1);

    و دیگر اینکه من در پروژه ها ، برای ذخیره و بازیابی اطلاعات از AdoCommand و AdoQuery و دستورات SQL استفاده میکردم حالا با توجه به اینکه در پروژه کلاینت فقط یک DCOMConnection و یک ClientDataSet داریم چطور از دستورات SQL استفاده کنم؟
    درون server خاصیت AllowCommandText رو True میکنید(این خاصیت به DataSetProvider مربوط میشه)البته اونائی که به AdoQuery وصل هستند.
    و تو client مینویسی

    ClientDataSet1.Commandtext:='select * from tablename';
    ClientDataSet1.Active:=True;

    Or
    ClientDataSet1.Commandtext:='delete from tablename';
    ClientDataSet1.execute;

    You never know what you can do until you try

  12. #12
    مرسی، تا اینجا درست.
    حالا بعد از اجرای یک دستور SQL (مثلا حذف یک رکورد)، DBGrid و ClientDataSet رو با چه دستوری باید Refresh کرد؟

    در مورد Active شدن فرم مربوط به پروژه سرور، میشه اصلا فرم رو از پروژه Remove کرد؟
    یعنی در پروژه سرور اصلا فرمی نداشته باشیم.

  13. #13
    مرسی، تا اینجا درست.
    حالا بعد از اجرای یک دستور SQL (مثلا حذف یک رکورد)، DBGrid و ClientDataSet رو با چه دستوری باید Refresh کرد؟
    خود دستور Refresh
    در مورد Active شدن فرم مربوط به پروژه سرور، میشه اصلا فرم رو از پروژه Remove کرد؟
    یعنی در پروژه سرور اصلا فرمی نداشته باشیم.
    تا حالا این کار رو نکردم ولی فکر نمی کنم. تست کن
    You never know what you can do until you try

  14. #14
    دستور Refresh رو گذاشتم ولی Error میگیره !


    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ClientDataSet1.CommandText:='delete from country where name='+QuotedStr('11');
    ClientDataSet1.Execute;
    CLientDataSet1.ApplyUpdates(-1);
    ClientDataSet1.Refresh;
    end;


    Error Creating Cursor handle

  15. #15
    تو این مورد که نمی تونی Refresh کنی. آخه DataSet شما یک Executable Query هست. اون برای حالتهائی هست که از Select استفاده میکنی.
    تو این حالت چی رو می خوای Refresh کنی؟؟
    You never know what you can do until you try

  16. #16
    ضمنا تو این حالت (Delete Query) نیاز به Apply Update نیست. Query رو بانک عمل می کنه
    You never know what you can do until you try

  17. #17
    کد:
    CLientDataSet1.ApplyUpdates(-1);
    با ارسال مقدار 1- در واقع هیچ خطایی عملیات Update را متوقف نمی کنه، بهتره مقدار 0 ارسال کنید تا هیچ خطایی را از دست ندید.
    یعنی در پروژه سرور اصلا فرمی نداشته باشیم.
    می تونید سرور را بصورت Windows Service ایجاد کنید.
    درباره DataSnap می تونید مطالب زیادی از سایت بورلند و کتاب های دلفی پیدا کنید، دقت کنید که DCOM تنها راه استفاده از DataSnap نیست و راههای مختلفی مثل استفاده از SOAP یا Socket ها وجود داره که هر کدوم مزایا و معایب خاص خودشون را دارند و متناسب با نوع پروژه باید اونها را انتخاب کرد.

  18. #18
    تو این حالت چی رو می خوای Refresh کنی؟؟
    باید DBGrid رو Refresh کنم . چون بعد از حذف، هنوز سطر مورد نظر در DBGrid نمایش داده میشه.

    می تونید سرور را بصورت Windows Service ایجاد کنید.
    چطور میتونم این کار رو بکنم؟ لطفا بیشتر توضیح بدید.
    با تشکر
    آخرین ویرایش به وسیله mehdi_moosavi : سه شنبه 25 بهمن 1384 در 09:54 صبح

  19. #19
    باید DBGrid رو Refresh کنم . چون بعد از حذف، هنوز سطر مورد نظر در DBGrid نمایش داده میشه.
    ببینید:
    اگر DBGrid شما به همین ClientDataSet وصل هست دوباره باید CommandText رو ست کنی و اگر هم به یکی دیگه متصل هست خوب اونیکی رو Refresh کن.
    You never know what you can do until you try

  20. #20
    دوباره باید CommandText رو ست کنی
    بله درسته. انجام شد.

تاپیک های مشابه

  1. معرفی کتب آموزشی MS Access
    نوشته شده توسط koli در بخش Access
    پاسخ: 20
    آخرین پست: شنبه 31 فروردین 1392, 19:58 عصر
  2. کدنویسی در access
    نوشته شده توسط noosha_t در بخش Access
    پاسخ: 3
    آخرین پست: شنبه 04 اسفند 1386, 17:27 عصر
  3. inbound access list & out bound access list
    نوشته شده توسط soroosh_i58 در بخش شبکه و Networking‌
    پاسخ: 2
    آخرین پست: جمعه 29 اردیبهشت 1385, 10:55 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •