• الإعلانات

    • فيصل الحربي

      تسجيل عضوية جديدة في المنتدى   01/31/2016

      السلام عليكم ورحمة الله وبركاته  عزيزي العضو الجديد :  حاليا رسالة الإيميل لتأكيد صحة إيميلكم تذهب للبريد العشوائي ( جاري حل المشكلة )  فإذا لم تجد رسالة التحقق من إيميلكم في صندوق الوارد لديكم إتجه للبريد العشوائي ( JUNK)  وقم بتفعيل إشتراككم من هناك   

mostafa_fa

المشرفين القدامى
  • عدد المشاركات

    305
  • تاريخ الانضمام

  • تاريخ اخر زياره

كل شيء نشر بواسطة mostafa_fa

  1. السلام عليكم جزاك الله خيرا , نتمنى منك شرح بعض اكواد البرنامج لتعم الافاده
  2. السلام عليكم اخي الكريم قبل بدء العمل بالـ SQL Server مع FoxPro يجب ان يكون عندك خلفيه عن كيفية انشاء برامج بالـ FoxPro. وايضا كيفية التعامل مع قواعد بيانات SQL Server من حيث انشاء Tables and StoredProcedure من خلال جمل SQL لماذا ؟ لان FoxPro لا يتعامل مباشرة مع قاعدة البيانات ولكنك فقط تقوم بارسال كود SQL كما في الكود السابق فيقوم الـ FoxPro بتوصيل هذه الجمله الى قاعدة البيانات عن طريق الكونكشن cn
  3. دروس في شرح الاكواد

    السلام عليكم اخي الكريم اليك الخلاصه اي كنترول نهايته .Visible يعني حالة الاداه من حيث ظاهر ام مخفي .value يعني القيمة الموجوده في الاداه .setfocus يعني اذهب الى هذه الاداه وقف عليها
  4. السلام عليكم اخي الكريم لا اقصد ان الكود تضعه في ملف prg بالضروره حسب ما تريد بينما قلت ذلك للتجربه فقط نصيحه: يفضل ان تضع الكود التالي في ملف البرنامج الرئيسي Public cn cn = SQLStringConnect("Driver=SQL Server;Server=sqlservername;UID=sa;PWD=pass;Database=Northwind") لماذا ؟ حتى تستطيع استخدام الكونكشن فور بدء البرنامج وسيكون عام على المشروع كله اما الكود التالي فهو الكود الذي ستستخدمه كثيرا SQLEXEC(cn,'SELECT * FROM customers',"tmp") طبعا كل ما هتعمل جملة سيكوال لازم تكتب الكود ده لاحظ cn الذي قمنا بانشاءه يجب ادراجه عند ارسال اي جملة سيكوال لماذا ؟ حتى يعرف الفوكس مواصفات القاعده ومكانها حتى يرسل اليها هذه الجمله. اما البراميتر tmp ليس من الضروري نفس الاسم ممكن اي اسم وليس من الضروري ايضا كتابة هذا البرميتر اصلا فهو اختياري. ما فائدة هذا البراميتر tmp ? هذا البراميتر هو انك تحدد اسم الكيرسور (الكيرسور هو جدول مؤقت في الذاكره) الذي سيستقبل البيانات طبعا نكتب قيمة هذا البراميتر في جمل Select لانها ترجع سجلات فتسجل هذه السجلات داخل الكيرسور. والله اعلى واعلم
  5. السلام عليكم اخي الكريم يجب قبل ان تستخدم قاعدة بيانات SQL SERVER ان تكون على دراية بها دي اسم قاعدة بيانات داخل السيكوال وهي لمجرد التدريب يعني انت لو عملت قاعدة بيانات باسم Acc ستضعها مكان Northwind
  6. السلام عليكم اخي العزيز محمود جزاك الله خيرا فعلا مثال رائع
  7. السلام عليكم اخي الكريم eng_mosul اليك مثال بسيط للتعامل مع قواعد بيانات SQL SERVER انا جربتها على SQL SERVER 2000 طبعا لازم تصطب السيكوال سيرفر على الجهاز وتحفظ اسم Instance والافتراضي له اسم الجهاز طبعا الاتصال بالقاعده هيكون بالـ Mixed Mode هذا الاختيار بتحدده اثناء التنصيب وهيطلب منك ادخال كلمة مرور وهذه الكلمة ستكون للمستخدم sa وهو مدير قاعدة البيانات. اكتب الكود التالي في ملف prg Public cn cn = SQLStringConnect("Driver=SQL Server;Server=sqlservername;UID=sa;PWD=pass;Database=Northwind") SQLEXEC(cn,'SELECT * FROM customers',"tmp") select * from tmp في الكود السابق انشأنا كونكشن بأسم cn وده الخاص بالاتصال بقاعدة البيانات من نوع سيكوال سيرفر ومررنا له الكونكش استرنج. انتبه انه لو كان على جهازك قاعدة بيانات سيكوال سيرفر واحده يمكنك وضع علامة . بدلا من sqlservername , او تكتب اسم السيرفر الذي به قاعدة البيانات , ثم قم بتغيير كلمة pass بكلمة المرور. اما في السطر الذي يليه قمنا بتنفيذ جملة استعلام عن طريق الاجراء SQLEXEC وهذا الاجراء مررنا له 3 معاملات الاول : وهو اسم الكونكشن الثاني : الجملة المراد تنفيذها ( يمكنك استخدام اي جمل سيكوال سواء استعلام او اضافه او تعديل او .... ) . الثالث : اسم الكيرسور الذي سيستقبل البيانات التى سترجع من جملة الاستعلام (هذا المعامل اختياري) . ثم بعد ذلك استعلمنا عن كل شيء في الكيرسور. اتمنى ان اكون قد وفقت في الشرح
  8. السلام عليكم اخي العزيز محمود جزاك الله خيرا فعلا برنامج جميل جدا اتمنى ان تقوم بشرح كود بعض الشاشات وسيتم التثبيت بإذن الله
  9. دعوة للبداية الصحيحة مع Vpf

    السلام عليكم اخي العزيز محمد برجاء تصفح المنتدى ستجد دروس من المبتدئين حتى مستويات متقدمه وذلك من الاخ VFPman والاخ محمد عبد المنعم وهتلاقي اعضاء قامت بتنفيذ الدروس واستطاعت بناء مشاريع جميله وقويه. المهم : هو اننا نبدأ من حيث انتهى الاخرين بمعنى ليس من المعقول اعادة كتابة مواضيع ابتدائيه في الفوكس ويوجد في المنتدى اكثر من موضوع للمبتدئين ولكن نستمر لاعلى. وكل شخص له ظروف قد تعيقه عن المتابعه المستمره واعلم اخي الكريم ان كل عضو يبذل ما بوسعه حتى يوفر هذه المعلومات رغم مشاغله الاخرى. ارجوا عدم المقارنه بمنتدى اكسيس أنظر الى عدد مستخدمي الاكسيس بالنسبة للفوكس برو. ارجوا ان تكون فكرتي وضحت.
  10. السلام عليكم اخي الكريم بصراحة لم اجرب ارسال ايميل عن طريق الفيجوال فوكس ولكن اليك هذا الكود لعله يفيدك ******************************* *!* Example of using SendViaMAPI ******************************* DIMENSION aryAttach(2) aryAttach(1) = "C:\attachment1.txt" && change to an actual file that exists on your computer aryAttach(2) = "C:\attachment2.zip" && change to an actual file that exists on your computer LOCAL lcTo, lcSubject, lcBody, lnCount, lcCC, lcBCC, lcUserName, lcPassword, llOpenEmail, lcErrReturn lcTo = "[email protected]" lcSubject = "Hey Have You Tried VFP Email?" lcBody = "Just wanted to let you know that VFP is pretty versatile and has a lot of ways to send email." lcCC = "[email protected]" lcBCC = "[email protected]" lcUserName = "[email protected]" && my SMTP username lcPassword = "My_PaSsWoRd" && my SMTP password *!* to automatically send email set llOpenEmail to .F. llOpenEmail = .T. && Whether email is opened in MAPI-aware email client or not SendViaMAPI(@lcErrReturn, lcTo, lcSubject, lcBody, @aryAttach, lcCC, lcBCC, lcUserName, lcPassword, llOpenEmail) IF EMPTY(lcErrReturn) MESSAGEBOX("'" + lcSubject + "' sent successfullly.", 64, "Send email via MAPI") ELSE MESSAGEBOX("'" + lcSubject + "' failed to be sent. Reason:" + CHR(13) + lcErrReturn, 64, "Send email via MAPI") ENDIF ******************************************* PROCEDURE SendViaMAPI(tcReturn, tcTo, tcSubject, tcBody, taFiles, tcCC, tcBCC, tcUserName, tcPassword, tlOpenEmail) ******************************************* #DEFINE PRIMARY 1 #DEFINE CARBON_COPY 2 #DEFINE BLIND_CARBON_COPY 3 LOCAL loSession, loMessages, lnAttachments, loError AS EXCEPTION, loErrorSend AS EXCEPTION tcReturn = "" TRY loSession = CREATEOBJECT( "MSMAPI.MAPISession" ) IF TYPE("tcUserName") = "C" loSession.UserName = tcUserName ENDIF IF TYPE("tcPassword") = "C" loSession.PASSWORD = tcPassword ENDIF loSession.Signon() IF (loSession.SessionID > 0) loMessages = CREATEOBJECT( "MSMAPI.MAPIMessages" ) loMessages.SessionID = loSession.SessionID ENDIF WITH loMessages .Compose() .RecipDisplayName = tcTo .RecipType = PRIMARY .ResolveName() IF TYPE("tcCC") = "C" .RecipIndex = .RecipCount .RecipDisplayName = tcCC .RecipType = CARBON_COPY .ResolveName() ENDIF IF TYPE("tcBCC") = "C" .RecipIndex = .RecipCount .RecipDisplayName = tcBCC .RecipType = BLIND_CARBON_COPY .ResolveName() ENDIF .MsgSubject = tcSubject .MsgNoteText = tcBody IF TYPE("taFiles", 1) = "A" lnAttachments = ALEN(taFiles) IF LEN(tcBody) < lnAttachments && Make sure body is large enough for attachments tcBody = PADR(tcBody, lnAttachments, " ") ENDIF FOR lnCountAttachments = 1 TO lnAttachments .AttachmentIndex = .AttachmentCount .AttachmentPosition = .AttachmentIndex .AttachmentName = JUSTFNAME(taFiles(lnCountAttachments)) .AttachmentPathName = taFiles(lnCountAttachments) ENDFOR ENDIF TRY .SEND(tlOpenEmail) CATCH TO loErrorSend IF tlOpenEmail && Did user cancel the operation from their email client? tcReturn = "User cancelled sending of email." ELSE THROW loErrorSend ENDIF ENDTRY ENDWITH loSession.Signoff() CATCH TO loError tcReturn = [Error: ] + STR(loError.ERRORNO) + CHR(13) +; [LineNo: ] + STR(loError.LINENO) + CHR(13) +; [Message: ] + loError.MESSAGE + CHR(13) +; [Procedure: ] + loError.PROCEDURE + CHR(13) +; [Details: ] + loError.DETAILS + CHR(13) +; [StackLevel: ] + STR(loError.STACKLEVEL) + CHR(13) +; [LineContents: ] + loError.LINECONTENTS FINALLY STORE .NULL. TO loSession, loMessages RELEASE loSession, loMessages ENDTRY ENDPROC المصدر هنا رابط آخر
  11. بسم الله الرحمن الرحيم تمت الإجابة على الموضوع إدارة الفريق العربي للبرمجة
  12. بسم الله الرحمن الرحيم تمت الإجابة على الموضوع إدارة الفريق العربي للبرمجة
  13. السلام عليكم ايه الحاجات الحلوه دي فعلا برنامج حلوه تسلم ايدك
  14. السلام عليكم يستحسن ان البيانات تكون داخل Database وطبعا المفروض ان الناس شغاله على البرنامج يعني الـ Database شغاله فمن المستحيل ان يستطيع اي شخص مسح مجلد الداتا اثناء العمل ودي كلها مسئولية الشخص المسئول IT
  15. السلام عليكم اخي العزيز اذا اردت الرجوع وعدم الاستكمال يعني لا تريد تكملة الاوامر اكتب Return .F.
  16. السلام عليكم اخي الكريم يمكنك وضع مجلد البرنامج كله على اي جهاز في الشبكة ( طبعا يكون سيرفر او جهاز قوي ) وتعمل شير كامل ثم باقي الاجهزه تقوم بعمل Map Drive من فولدر البرنامج ثم تدخل على الفولدر وتأخذ Shortcut من الملف التنفيذي وتضعه مثلا على الـ Desktop وقم بتشغيل البرنامج من هذا الاختصار. ولكن يجب ان طبعا ان يكون اللي مبرمج البرنامج مدعم امكانية مشاركة ملفات الداتا
  17. السلام عليكم اخي الكريم نعم هذه الكلمة تجعل البرنامج يقفل فماذا تريد ؟ اذا كنت تريد اغلاق فورم وانت داخلها فيمكنك استخدام thisform.release
  18. السلام عليكم حمد لله على سلامتك اخي عبد المنعم الدرس جميل جدا وفقك الله واعانك
  19. دروس في شرح الاكواد

    السلام عليكم اخي احمد عامر انت طلعت استاذ :clapping: ( بسم الله ما شاء الله )
  20. سؤال إلي أهل الخبرة

    السلام عليكم اخي الكريم بصراحه لا اعرف ما معنى الرساله ولكن من الممكن ان ترسل لي نسخة من البرنامج حتى ابحث عن المشكلة
  21. دروس في شرح الاكواد

    السلام عليكم ان شاء الله هشرح جزء منه حتى يتفضل الاخ احمد عامر او الاخ جلال بتكملة الباقي اولا : تم اسناد القيمه input للمتغير الاول والعلامة ' قبل وبعد الكلمه للدلاله على ان القيمه تحفظ كنص , وكذلك نفس الطريقه للمتغير الثاني cMessageTitle='input' cMessageText='Do you want save data' ثانيا : تم اسناد قيم رقميه للمتغير nDialogType والقيمه هي حاصل جمع الـ 3 ارقام يعني 36 nDialogType=4+32+0 ثالثا : تم استخدام دالة الرسائل MessageBox وهذه الداله هي المسئوله عن عرض الرسائل وهذه الداله تستقبل مجموعه من المعاملات اول معامل وهو eMessageText وهو خاص بنص الرساله التي ستظهر ( يستقبل قيم نصيه ) ثاني معامل وهو nDialogBox Type وهو خاص بشكل الرساله (يستقبل قيم رقميه) مثل الازرار التي ستظهر وايكونة الرساله ثالث معامل وهو eMessageTitle وهو خاص بعنوان الرساله واليكم صورة لتوضيح ذلك ملحوظه : يجب ان تضع قيمه للمعامل eMessageText على الاقل والباقي اختياري اذا يمكن ان تكون الرساله هكذا MessageBox('رساله بسيطه') ويمكن ان اتحكم في باقي الرساله مثل عنوان الرساله وعدد الازرار وذلك باعطاء قيم للمعاملات السابقه هنا في المثال nAnswer=MessageBox(cMessageText,nDialogType,cMessageTitle) تم اسناد قيم المعاملات من قيم المتغيرات ومن الممكن ان تكون الرساله بالصيغه التاليه nAnswer=MessageBox('Do you want save data',4+32+0,'input') ما معنى القيمه المسنده الي المتغير nDialogType وهي 4+32+0 ؟ حتى نحدد نوع الرساله من حيث الازرار ونوع الرساله والزر الافتراضي كل هذا عن طريق اعطاء قيم حيث ان الرقم 4 يعني ان الرساله بها زرين yes and no والرقم 32 يعني ان الرساله من نوع استفهام معنى هذا ان الداله يجب ان ترجع القيمه المقابله للزر الذي سيضغط على المستخدم فلو ضغط المستخدم على زر Yes ستقوم الداله بارجاع قيمه مقابله للاختيار , لذا تم اسناد القيمه المرجعه من الداله الي المتغير nAnswer ولكل زر في الرساله قيمه مقابله له فمثلا yes مقابلها الرقم 6 و No مقابلها 7 وهكذا واليكم صوره لتوضيح ذلك : اذا بعد ان تظهر الرساله للمستخدم بهذا الشكل ماذا يحدث اذا اختار المستخدم مثلا الزر No ؟ سترجع الداله القيمه 7 وتسندها للمتغير nAnswer وبذلك استطيع برمجيا معرفة الزر الذي ضغط عليه المستخدم وكتابة الكود اللازم لتنفيذ مجموعة من الاوامر عن الضغطت على زر معين حيث نجد في السطر التالي جملة Do Case وذلك لعمل مجموعه من الحالات ففي الحالة الاولى Case nAnswer = 6 وهي تعني انه لو اختار المستخدم زر Yes سيقوم بتنفيذ الاوامر التاليه وفي حالة Case nAnswer = 7 وهي تعني انه لو اختار المستخدم زر No سيقوم بتنفيذ اوامر اخرى. اتمنى ان تكون المعلومات سهلة وبسيطه
  22. وعليكم السلام الحمد لله مر المصيف على خير بصراحه الواحد كان محتاج فعلا يصيف لان دماغي ليا 3 سنين مصيفتش
  23. دروس في شرح الاكواد

    السلام عليكم اخي الكريم رستم هذا النموذج شارح نفسه وياريت الاخ احمد عامر يتفضل بشرح نصفه (ورطتك يا عم احمد :haha: )
  24. السلام عليكم اخي الكريم عمر ممكن تعمل متغير عام وليكن اسمه frmchk وتسند اليه القيمه .F. PUBLIC frmchk frmchk=.F. ثم تأتي في حدث Load الخاص بالفورم التي تريد التأكد من حالتها وتعمل جملة شرط IF frmchk=.F. frmchk=.T. ELSE MESSAGEBOX('Already OPEN') RETURN .F. ENDIF طبعا لما تقفل الفورم لازم ترجع القيمه تاني بـ .F. في حدث Destroy او QueryUnload frmchk=.F.
  25. السلام عليكم مرحبا بك معنا اخي الكريم علاء لا اعرف طريقه لعمل stretch لصورة الفورم ولكن يمكنك استخدام اداة Image واجعلها بحجم الفورم وهذه الاداه بها الخاصيه stretch