PDA

View Full Version : There is no source code available for the current location



searchman
یک شنبه 23 دی 1386, 12:36 عصر
با سلام
دو تا سوال داشتم که به ترتیب می پرسم:
1.من به پروژه م یک اسمبلی دات نت(DLL سابق) اضافه کرده ام(add referece..) که یک تقویم شمسی است. و به عنوان یک فیلد در db ذخیره می شه و در یک گرید نمایش داده می شه. مشکل:
وقتی بر روی db یک عملیات فیلتر انجام می شه در خروجی هیچی نمایش داده نمی شه. اما زمانی که برنامه رو خط به خط اجرا میکنم(f8) تا به دستور این فیلد خاص می رسم این پیغام رو می ده:

There is no source code available for the current location
و بعد از اینکه وارد disableassebely می شم و اسمبلی برنامه رو خط به خط اجرا می کنم خروجی درست نمایش داده می شه.
دستور nop توی اسمبلی چیکار می کنه؟
باید بگم که تابع فیلتر بدون وجود کد های مربوط به این فیلد درست کار می کنه و مشکل نداره.
اگه از دوستان کسی برام توضیح بده که چه اتفاقی در حال جریان خیلی ممنون می شم.
2.توی برنامه از یک class library هم استفاده شده ولی موقع اجرا همچه پیغامی می ده

a project with an output type of class library cannot be started directly.
in order to debuge thhis project to this solution which refrences the library project. set the executableproject as the startup project.
دقیقا از من چی می خواد؟
جلوتر از اساتید سپاسگزارم.

MH2538
یک شنبه 23 دی 1386, 15:13 عصر
1 - nop یعنی no operaion یعنی کاری نکن
2- شما توی Solution تون چند تا پروژه دارید و پروژه فعال شما همین پروژه DLL است و چون نمی‌توان DLL را مستقیماً اجرا کرد این پیغام را می دهد. برای درست شدن این مشکل روی پروژه‌ای که خروجی آن exe است کلیک راست کن و گزینه Set as startup project را انتخاب کن

searchman
دوشنبه 24 دی 1386, 15:05 عصر
با سلام و تشکر
با کمک دوست عزیز MH2538‌مشکل دوم من حل شد ولی همچنان با تابع فیلتر مشکل دارم. آیا فایل اسمبلی دات نت من درست add نشده یا ممکن مشکل دیگه ای وجود داشته باشه؟
اگه فکر کردید لازم بفرمایید کل کد رو هم بگزارم.
هماکنون نیارمند یاری سبزتان هستم!
متشکرم

MH2538
دوشنبه 24 دی 1386, 16:34 عصر
یکی از مواقعی که در هنگام دیباگ کردن چنین ژیغامی ظاهر میشه زمانی اشت که شما DLL ای را به پروِژه اضافه کرده‌اید که بصورت پیکربندی اون در حالت Release باشد. با توجه به اینکه به احتمال زیاد اشکال از کد شماست و با در نظر گرفتن این موضوع که شما به سورس این DLL دسترسی ندارید، پیشنهاد می‌کنم کد خودتون رو بنویسید تا ببینم اشکال از کجاست

searchman
دوشنبه 24 دی 1386, 17:18 عصر
PrivateFunction IsValidfilterForm() AsBoolean
' Check to make sure each field has a valid value
IfNot txtNumber.Text = ""And _
Not IsNumeric(txtNumber.Text) Then
MsgBox("برای فیلد تعداد قطعه مقدار عددی وارد کنید ", _
MsgBoxStyle.Exclamation, Me.Text)
ReturnFalse
EndIf
IfNot txtweigth.Text = ""And _
Not IsNumeric(txtweigth.Text) Then
MsgBox("برای فیلد وزن قطعه مقدار عددی وارد کنید ", _
MsgBoxStyle.Exclamation, Me.Text)
ReturnFalse
'
EndIf
IfNot txtNumber.Text = ""Or _
Not txtweigth.Text = ""Or _
Not txtBazarganiCode.Text = ""Or _
Not txtTitle.Text = ""Or _
Not txtSPN.Text = ""Or _
Not txtRequestCode.Text = ""Or _
Not cmbactor.Text = ""Or _
Not HM_FarsiCalendar1.Text = ""Or _
Not txtresultdate.Text = ""Or _
Not cmbSalseProduce.SelectedIndex = -1 Or _

Not cmbresult.SelectedIndex = -1 ThenReturnTrue

Else MsgBox("برای فیلتر سطرهای بانک اطلاعات فیلد یا فیلد هایی را وارد کنید ", _

MsgBoxStyle.Exclamation, Me.Text)

ReturnFalse

EndIf

EndFunction

و در تابع فیلتر:


PrivateSub filtergrid()sqlstring = SetSQLString()
ds = cdal.GetdatasetofGeneralDB("SELECT title,SPN,weigth,number," & _
"bazarganicode,reqcode,salseproducter,reqdate,actor ,command,result" & _
",resultdate FROM tblRequest" & _
IIf(sqlstring <> "", " WHERE " & sqlstring, ""))
dgEmkanat.DataSource = ds.Tables(0)
EndSub

و تابع‌تولید شرط where


PrivateFunction SetSQLString() AsString
sqlstring = ""
If Trim(txtTitle.Text) <> ""Then
sqlstring = sqlstring & IIf(sqlstring = "", "", " AND ") & _
"title=" & PrepareStr(txtTitle.Text)
EndIf
If Trim(txtSPN.Text) <> ""Then
sqlstring = sqlstring & IIf(sqlstring = "", "", " AND ") & _
"spn =" & PrepareStr(txtSPN.Text)
EndIf
If Trim(txtNumber.Text) <> ""Then
sqlstring = sqlstring & IIf(sqlstring = "", "", " AND ") & _
"number=" & Val(txtNumber.Text)
EndIf
If Trim(txtweigth.Text) <> ""Then
sqlstring = sqlstring & IIf(sqlstring = "", "", " AND ") & _
"weigth=" & Val(txtweigth.Text)
EndIf
If Trim(cmbSalseProduce.Text) <> ""Then
sqlstring = sqlstring & IIf(sqlstring = "", "", " AND ") & _
"SalseProducter =" & PrepareStr(cmbSalseProduce.Text)
EndIf
If Trim(cmbresult.Text) <> ""Then
sqlstring = sqlstring & IIf(sqlstring = "", "", " AND ") & _
"result=" & PrepareStr(cmbresult.Text)
EndIf
If Trim(txtBazarganiCode.Text) <> ""Then
sqlstring = sqlstring & IIf(sqlstring = "", "", " AND ") & _
"BazarganiCode=" & PrepareStr(txtBazarganiCode.Text)
EndIf
If Trim(txtRequestCode.Text) <> ""Then
sqlstring = sqlstring & IIf(sqlstring = "", "", " AND ") & _
"reqcode =" & PrepareStr(txtRequestCode.Text)
EndIf
If Trim(cmbactor.Text) <> ""Then
sqlstring = sqlstring & IIf(sqlstring = "", "", " AND ") & _
"actor=" & PrepareStr(cmbactor.Text)
EndIf
If Trim(HM_FarsiCalendar1.Text) <> ""Then
sqlstring = sqlstring & IIf(sqlstring = "", "", " AND ") & _
"reqdate =" & PrepareStr(HM_FarsiCalendar1.Text)
EndIf
If Trim(txtresultdate.Text) <> ""Then
sqlstring = sqlstring & IIf(sqlstring = "", "", " AND ") & _
"resultdate=" & PrepareStr(txtresultdate.Text)
EndIf
Return sqlstring
EndFunction

در تابع های اول و سوم زمانی که debuge برنامه به حطوط


If Trim(HM_FarsiCalendar1.Text) <> ""Then

و


Not HM_FarsiCalendar1.Text = ""Or

می رسه پیغام ذکر شده ضاهر می شه. HM_FarsiCalendar1 نام اسمبلی استفاده شده است. تاکید می کنم استفاده از این اسمبلی در سایر توابع بدون مشکل انجام می شه
باسپاس فراوان

MH2538
سه شنبه 25 دی 1386, 06:35 صبح
دوتا دستور آخر رو به این شکل تغییربده


If HM_FarsiCalendar1.Text.Trim().Length > 0 Then

و

not HM_FarsiCalendar1.Text.Trim().Length = 0 or

searchman
سه شنبه 25 دی 1386, 13:53 عصر
با سلام
ممنون از وقتی که می گزارید
ولی با وجود اعمال تغییراتی که گفته بودید مشکل همچنان باقی است

MH2538
چهارشنبه 26 دی 1386, 06:13 صبح
این DLL رو از کجا میشه دانلود کرد تا امحانش کنم

searchman
چهارشنبه 26 دی 1386, 12:15 عصر
متشکرم
هر دو را به پروژه add کرده ام

MH2538
چهارشنبه 26 دی 1386, 14:06 عصر
من با این DLL ها به مشکل نخوردم. نمونه برنامه رو هم براتون گذاشتم اما یک نکته
بدلیل وجود علامت‌های ____/__/__ دستور


If HM_FarsiCalendar1.Text.Trim().Length > 0 Then

و

not HM_FarsiCalendar1.Text.Trim().Length = 0 or

همیشه مقدار صحیح بر می‌گردونه، یعنی هیچ وقت خالی نیست.

searchman
پنج شنبه 27 دی 1386, 01:04 صبح
با عرض تشکر فراوان
نکته ای که شما اشاره کردید دقیقا مشکل رو حل کرد و برنامه جواب می ده. فقط قسمت جالب قضیه اینجاست که باز وقتی debug برنامه به کد های اشاره شده در بالا می رسه دوباره پیغام کذایی ضاهر می شه. برای محکم کاری من دوتا تصویر از پیغام و کد اسمبلی می گزارم تا اگر کسی در این مورد اطلاعی داره ما رو هم بی نصیب نزاره.
در ضمن من اصلا در سیستمم آدرسی که در صفحه disassembly ذکر شده رو ندارم.