الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة بعد نشر البرنامج كل النماذج غير مرفقة إلا نموذج البداية والقوائم غير نشطة

بدأه simpleprogramer في 27 مارس 2008 · 17 رد · 1,690 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اخوانى الكرام

اعمل على الفيجوال ستوديو 2005 وعندما اقوم بعمل تشغيل للبرنامج قبل التحزيم لا توجد اى مشكلة

لكن بعد نشر البرنامج كل النماذج تكون غير مرفقة إلا نموذج البداية startup form

اى نموذج الاسم وكلمة المرور والنموذج الرئيسى الذى يحوى القوائم فقط

والقوائم التى منها تحمل النماذج تكون غير نشطة وحجم البرنامج النهائى يكون صغير حوالى 4 ميجا

فكيف اضمن النماذج ؟

لم استطع تحميل البرنامج نظرا لكبر حجمه فهو يتجاوز الثلاثين ميجا

وجزاك الله خيرا

تم تعديل هذه المشاركة بواسطة simpleprogramer في 27 مارس 2008 في 14:50

#2

يرجى التدقيق في النقاط التالية:

1 - هل قمت بعمل برنامج الإعداد بصورة صحيحة؟؟؟؟؟؟؟؟

2 - إن كان برنامجك يستخدم قاعدة بيانات - هل قمت بتضمين قاعدة البيانات المستخدمة بصورة صحيحة؟

3 - إن كان برنامجك يستخدم قاعدة بيانات - هل قمت بتضمين محرك قواعد البيانات الصحيح الخاص بقاعدة بياناتك؟؟؟

وإن لم تحل مشكلتك يرجى اعطاءنا تفاصيل عن برنامجك وماذا تستخدم فيه من المؤكد أن هناك شيئا ما لم يتم تضمينه بصورة صحيحة في برنامج الإعداد الخاص بك

لايمكن أن يكون هناك نماذج ناقصة طالما أنه يعمل على جهازك فالملف التنفيذي للمشروع قد تم إنشاؤه بصورة صحيحة - هناك شئ ناقص في برنامج الإعداد لايجعل البرنامج يكمل التحميل بصورة صحيحة تأكد من موضوع قاعدة البيانات

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 27 مارس 2008 في 15:13

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#3

وصلات لمواضيعي المرتبطة بمشكلتك

توزيع برنامج باستخدام Clickonce

ميزة جديدة في مشروع Setup

نشر مشروعك باستخدام SetupWizard

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#4

اخى محمد جزاك الله خير الجزاء ونفع الله بك واعانك على ماانت فيه ،

لا تزال المشكلة وانا اجرب على جهازى المنصب عليه الاكسس والسيكول والفريم ورك ،

للتقريب

انا ارفقت مثال( http://up.m5zn.com/145521930979/SAMPLE AC.rar )

تحدث فيه نفس المشكلة تماما حجمه حوالى 4 ميجا ارجو ان تلقى نظرة عليه

كليك يمين وببلش سترى القوائم بعد تنصيب البرنامج النهائى غير نشطة بالرغم من انها تعمل عند عمل تشغيل لها من الفيجوال ستوديو قبل النشر ،

كلمة السر 1 والاسم 1

وانا متأكد انها مشكلة بسيطة بالنسبة لعلمك

زادكم الله

تم تعديل هذه المشاركة بواسطة simpleprogramer في 27 مارس 2008 في 19:00

#5

- مشكلتك كما توقعت تماما برنامج الإعداد لايضيف ملف قاعدة البيانات لمشروع الإعداد وذلك بسبب اعتقاد خاطئ لدى الأغلبية هنا وهو أن وضع ملف قاعدة البيانات في مجلد Bin كافي لتضمينها مع البرنامج بينما الصحيح أنه حتى لو نسخت أي عدد من الملفات تريدها إلى مجلد Bin فهذا لن يتسبب في تضمينها في برنامج الإعداد وستواجه دائما مشاكل من هذا النوع إن استمررت بالعمل على هذا الاعتقاد

- ولحل المشكلة انقر بالماوس اليميني على مشروعك ثم من القائمة اختر ADD ثم Existing Item واستخدم صندوق حوار الفتح الذي يظهر لك لإضافة ملف قاعدة البيانات للمشروع

- بعد أن تم إضافة ملف قاعدة البيانات للمشروع تابع الخطوات في الملف المرفق في موضوعي ملاحظة سريعة بخصوص تضمين قاعدة بيانات Sql Server 2005 ضمن برنامج الإعداد بطريقة Clickonce

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#6

للأسف اخى محمد مازالت القوائم غير نشطة ارجو التجربة على المثال السابق لترى بنفسك

وجزاك الله خيرالجزاء

#7

بقيت نقطة أخيرة نسيت أن أذكرها وهي أن ملف قاعدة البيانات لايتم وضعه في نفس المجلد الذي يوضع فيه المجلد التنفيذي وإليك طريقة الحصول على المسار الصحيح لملف قاعدة البيانات

	Private Function CorrectPath(ByVal FPath As String) As String
		If Mid(FPath, FPath.Length, 1) <> "\" Then
			Return FPath & "\"
		Else
			Return FPath
		End If
	End Function

	Private Function GetDatabaseFullPath(ByVal FileName As String) As String
		Dim DbFolder As String
		Try
			DbFolder = My.Application.Deployment.DataDirectory
		Catch ex As Exception
			ex = Nothing
			DbFolder = Application.StartupPath
		End Try
		DbFolder = CorrectPath(DbFolder)

		Return DbFolder & FileName
	End Function

	Private Function GetDBFileNameFromDefaultConnectionStringn() As String
		' استبدل القيمة هنا بما يناسب مشروعم
		Dim ConnStr As String = My.Settings.MobilePictureCollectionConnectionString.ToString

		Dim Idx_1 As Integer = ConnStr.IndexOf("|DataDirectory|\")
		Dim Idx_2 As Integer = ConnStr.IndexOf(";", Idx_1 + "|DataDirectory|\".Length)
		Return (ConnStr.Substring(Idx_1 + "|DataDirectory|\".Length, Idx_2 - Idx_1 - "|DataDirectory|\".Length))

	End Function

على كل حال سأجرب وأتأكد أنني م أنس شيئا هذه المرة

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#8

اخى الحبيب جزاك الله خيرا وفيرا

ولكن مازالت المشكلة قائمة فالقوائم غير نشطة بعد النشر مع انها تعمل قبل النشر وقد نفذت كل ماذكرت وجربت طريقة اخرى ولكن المشكلة قائمة واعتقد بعلمى القاصر ان المشكلة ليست بخصوص قواعد البيانات لأن القوائم كلها غير نشطة

ارجو ان تطبق على المثال السابق وترفعه لى اذا امكن على هذا الموقع http://up.m5zn.com

او اى موقع اخر تفضله

انا متأكد انها مشكلة بسيطة بالنسبة لك بمشيئة الله

جعله الله فى ميزان حسناتك

تم تعديل هذه المشاركة بواسطة simpleprogramer في 28 مارس 2008 في 21:01

#9

المشكلة أنني لم أعد اعمل على الـ 2005 لدي 2008 سأقوم بتحويل المشروع إلى الـ 2008 كي أستطيع التجريب إضافة إلى انني لاأملك وصلة سريعة كل ما لدي هو Dialup ولا يمكنني إعادة رفع ملف بهذا الحجم

إضافة إلى أنك تتجاوز الأخطاء في برنامجك بواسطة العبارة القديمة

On error resume next

وهذا خطأ إذا ان استخدام هذه العبارة يخلصك من رسالة الخطأ ولايتوقف برنامجك ولكن لاتعرف أين حدثت المشكلة بالضبط وهذا ما حدث معك يفضل هنا استخدام بلوك Try ... Catch ولي درس في المنتدى حوله حاول البحث عنه

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 28 مارس 2008 في 21:11

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#10

اخى الحبيب اشكرك لسرعة الرد

ولا احب ان ازعجك اكثر من ذلك بتحديث الكود والتجربة

لكن بما انك لا تعمل على2005 وبذلك لم تجرب البرنامج السابق

ربما تعرف المشكلة بسرعة اذا اوضحتها لك اكثر فى جملة واحدة

انا اقصد بالقوائم الغير نشطة

مثل قائمة فايلfile وخلافه

لا اعتقد ان هذه مشكلة قواعد بيانات

إذا كنت تستطيع تخمين المشكلة فارجو اخبارى

اما اذا كنت سترى على 2008 فانا احس انى بهذا ازعجك اكثر من اللازم واعفيك من الحرج

جزاك الله خير الجزاء

#11

لا أدري بالضبط ماذا أقول لك لكن بما أن البرنامج شغال طبيعي على بيئة التطوير - حاول متابعة الكود الذي يفعل ويوقف تفعيل هذه القوائم حتى تحصر أين المشكلة بالضبط هناك شيئا ما اختلف عندما تم تنصيب البرنامج على جهاز آخر وكما قلت لك انتقل لبلوك Try الخاص باصطياد الأخطاء فهو سيساعدك كثيرا في حصر المشكلة

بالتوفيق - وأعتقد أنني سأتوقف عند هذه النقطة - يؤسفني أنني توقفت قبل معرفة أين المشكلة بالضبط

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 29 مارس 2008 في 01:15

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#12

ملاحظة من الكود

أنت تقوم بتحديد متغير بولياني يضبط هل القوائم مفعلة أم لا

				mnu1 = DSCHECKUSERS.Tables("USERS").Rows(0).Item("MOHASEBMENU1")
				mnu2 = DSCHECKUSERS.Tables("USERS").Rows(0).Item("MOHASEBMENU2")
				mnu3 = DSCHECKUSERS.Tables("USERS").Rows(0).Item("MOHASEBMENU3")
				mnu4 = DSCHECKUSERS.Tables("USERS").Rows(0).Item("MOHASEBMENU4")
				mnu5 = DSCHECKUSERS.Tables("USERS").Rows(0).Item("MOHASEBMENU5")
				mnu6 = DSCHECKUSERS.Tables("USERS").Rows(0).Item("MOHASEBMENU6")
				mnu7 = DSCHECKUSERS.Tables("USERS").Rows(0).Item("MOHASEBMENU7")
				mnu8 = DSCHECKUSERS.Tables("USERS").Rows(0).Item("MOHASEBMENU8")

على حاسب التطوير يتم قراءة القيم من قاعدة البيانات ويتم ضبط قيمة المتغير بشكل صحيح ولكن شيئ ما خطأ يحدث على الحاسب الآخر ولايتم ضبط هذه القيم بشكل صحيح

وفي النموذج الرئيسي أنت تقوم بضبط تفعيل القوائم بالشكل

		Me.Menuview.Enabled = mnu1
		Me.MenuItem17.Enabled = mnu2
		Me.MenuItem30.Enabled = mnu3
		Me.MenuItem35.Enabled = mnu4
		Me.MenuItem26.Enabled = mnu5
		Me.MenuItem70.Enabled = mnu6
		Me.MenuItem72.Enabled = mnu7
		Me.MenuItem75.Enabled = mnu8
		Me.MenuItem33.Enabled = mnu2
		Me.MenuItem34.Enabled = mnu3

تأكد من أن البدء بتحميل النموذج الرئيسي يتم بعد التأكد من ان قيم المتغير الذي يتحكم بتفعيل هذه القوائم قد تم ضبطه بصورة صحيحة

بدل كود الزر في نموذج كلمة السر ليستخدم بلوك Try كما يلي وذلك بدلا من On Error Resume Next ولاحظ رسالة الخطأ إن ظهرت على الحاسب الذي سيشغل التطبيق عندها يمكنك تحديد المشكلة

		Try
			USERNAME = Trim(Me.TextBox1.Text)
			PASSWORD = Trim(Me.TextBox2.Text)
			DSCHECKUSERS.Clear()
			CONCHECKUSERS.ConnectionString = constring
			Dim Str As String = "select * from USERS where MOHASEBUSERNAME='" & USERNAME & "' and MOHASEBPASSWORD='" & PASSWORD & "'"
			ADPCHECKUSERS = New OleDb.OleDbDataAdapter(Str, CONCHECKUSERS)
			ADPCHECKUSERS.Fill(DSCHECKUSERS, "USERS")
			If DSCHECKUSERS.Tables("USERS").Rows.Count > 0 Then
				BUTTONADD = DSCHECKUSERS.Tables("USERS").Rows(0).Item("MOHASEBADD")
				BUTTONEDIT = DSCHECKUSERS.Tables("USERS").Rows(0).Item("MOHASEBEDIT")
				BUTTONDELETE = DSCHECKUSERS.Tables("USERS").Rows(0).Item("MOHASEBDELETE")
				BUTTONREVIEWER = DSCHECKUSERS.Tables("USERS").Rows(0).Item("MOHASEBREVIEWER")
				mnu1 = DSCHECKUSERS.Tables("USERS").Rows(0).Item("MOHASEBMENU1")
				mnu2 = DSCHECKUSERS.Tables("USERS").Rows(0).Item("MOHASEBMENU2")
				mnu3 = DSCHECKUSERS.Tables("USERS").Rows(0).Item("MOHASEBMENU3")
				mnu4 = DSCHECKUSERS.Tables("USERS").Rows(0).Item("MOHASEBMENU4")
				mnu5 = DSCHECKUSERS.Tables("USERS").Rows(0).Item("MOHASEBMENU5")
				mnu6 = DSCHECKUSERS.Tables("USERS").Rows(0).Item("MOHASEBMENU6")
				mnu7 = DSCHECKUSERS.Tables("USERS").Rows(0).Item("MOHASEBMENU7")
				mnu8 = DSCHECKUSERS.Tables("USERS").Rows(0).Item("MOHASEBMENU8")

				ADPCHECKUSERS.Dispose()
				CONCHECKUSERS.Close()
				Me.Hide()
				Dim frm As New frmMain
				frm.Show()
			Else
				MessageBox.Show("تأكد من ادخال كلمة السر أو اسم المستخدم بشكل صحيح", "كلمة السر", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2, MessageBoxOptions.RtlReading)
				Me.TextBox1.Focus()
			End If

		Catch ex As Exception
			MsgBox(ex.Message & vbCrLf & vbCrLf & ex.TargetSite.Name)
		End Try

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 29 مارس 2008 في 01:44

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#13

ملاحظة بسيطة اخى الحبيب محمد

المشكلة تظهر على نفس جهازى

يعنى اعمل تشغيل على بيئة التطوير فيعمل البرنامج بدون اى مشكلة اطلاقا لكن

بعد ما اعمل نشر للبرنامج على جهازى فى نفس الوقت اشغله على جهازى فتظهر لى المشكلة

عموما انا شاكر لك جهدك الكبير معى

وفقك الله وهداك واغناك واسعدك وارضاك

#14

فعلا قمت بنشر البرنامج وتنصيبه على نفس الحاسب وحصلت على خطأ بعدما استبدلت عبارة On Error Resume Next ببلوك Try كما اخبرتك سابقا

أعتقد أنني قد وجدت حل المشكلة لديك

لديك التعريف التالي

Public constring As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\MOHASEB.mdb"

وهو يفترض أن ملف قاعدة البيانات موجود في نفس المجلد الذي تم تنصيب البرنامج عليه

ولكن في الحقيقة عندما نستخدم طريقة Click Once لنشر التطبيق لايتم نشر ملف قاعدة البيانات إلى نفس المجلد الذي يتم نشر الملف التنفيذي للمشروع إليه لذا قمت بتعديل السطر المذكور إلى

Public constring As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\MOHASEB.mdb"

فتم حل المشكلة على جهازي

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 29 مارس 2008 في 02:48

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#15

اخى محمد بارك الله فيك والله لم اكن اريد ان اجهدك معى

جزاك الله خيرا ساجرب واخبرك بالنسبة لقاعدة البيانات ،

اما بالنسبة للمشكلة الرئيسية وهى ان القوائم غير نشطة

فالشكر لله شكرا كبيرا تم حلها الآن

Public menu1 As Boolean

استبدلت المتغير البولينى بمتغير نصى يعنى

Public menu1 As string

واصبحت القائمة نشطة والشكر لله (ارجو ان تفهمنى لماذا)

واخشى من اجهاد الذاكرة وحدوث مشاكل بعد استبدال نوع المتغير

ام هل تعتقد ان هذا صائب ؟

وجزاك الله خيرا

تم تعديل هذه المشاركة بواسطة simpleprogramer في 29 مارس 2008 في 16:28

#16

لا أدري لماذا تم تجاوز المشكلة عندما غيرت نوع المتغير إلى نصي

ولكن الذي قادني إلى تعديل قيمة المتغير المذكور في جوابي الأخير هو رسالة الخطأ التي ظهرت نتيجة استبدالي عبارة On error resume next ببلوك Try

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#17

اخى الحبيب محمد

عند وضع قاعدة البيانات يدويا فى المجلد الرئيسى الذى ينصب فيه البرنامج تحل المشكلة تماما

لكن المشكلة هو ان قاعدة البيانات لا تنشر الى المجلد الرئيسى اليا ،

نفذت نصيحتك فى المشاركة رقم 14

ولكن بيئة التطوير تقول لى تحت dataDirectory

character is not valid

فهناك مشكلة فى الصيغة

وبحثت على استعمال وتعريف الدااتا دايركتورى فى ملفات المساعدة ولكن بدون جدوى ،

اعتقد ان هناك تعديل بسيط على الكود فى المشاركة 14 ليتم نشر القاعدة فى المجلد الرئيسى ولكن يئست من البحث والمحاولة

ارجو ان تخبرنى ان كنت تعرف

وجزاك الله خير الجزاء وزادك الله علما

#18

up

اريد ان تنشر قاعدة البيانات الى المجلد الرئيسى

لأنها تنشر الى مجلد فرعى

ولكن حينما انقلها يدويا الى المجلد الرئيسى يعمل البرنامج بدون مشكلة

ما التعديل الذى اجريه على هذا الكود

Public constring As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\MOHASEB.mdb"

لتنشر الى المجلد الرئيسى الذى ينصب فيه البرنامج

وجزاكم الله خيرا

مواضيع مشابهة