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

خطاء عند طلب عرض التقرير مع تمرير الباراميتر

بدأه flodi في 13 يناير 2009 · 2 رد · 1,131 مشاهدة · في تصميم وبرمجة التقارير
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

قمت بعمل كود يقوم بعرض التقرير بعد تمرير البارميتر ولكن يظهر خطاء غريب كالتالي

object reference not set to an instance of an object

عند جملة

pr1.parameterfieldname="@pid_no"

وتعبت احاول احله

والبرنامج باستخدام vb.net 2005 و قاعدة بيانات sql server 2005 حيث عند الضغط على طباعة يظهر صندوق يطلب رقم لعرضه بالتقرير مع بيانات هذا الرقم فقط

اليكم الكود خلف button طباعة التقرير

dim mm1 as string
mm1=inputbox("enter number")
sqlconection1.open
dim cm as sqlclient.sqlcommand
cm=new sqlclient.sqlcommand
cm.connection=sqlconnection1
cm.commandtext="select * from table1 where id_no =' " & trim ( mm1 ) & " ' "
cm.commandtype=commandtype.text
dim read as sqlclient.sqldatareader
read=cm.executereader
if not read.Read then
msgbox("wrong number")
read.close
sqlconnection1.close
else
dim param as new parameterfields
dim pr as sqlparameter
pr=new sqlparameter("@pid_no",sqldbtype.nvarchar)
pr.value=mm1
dim pr1 as parameterfield
pr1.parameterfieldname="@pid_no"
pr1.currentvalue.add(pr)
param.add(pr1)
crystalreportviewer1.parameterfieldinfo=param
crystalreportviewer.visibale=true
sqlconnection1.close

شكراً

#2

السلام عليكم ورحمة الله وبركاته

في الواقع لا ادري اين الخطأ في كودك ولكن ربما استطيع مساعدتك بالتالي :-

هذا كود شبيه بالكود خاصتك وهو يقوم بعرض مبيعات عميل معين

حاول توفق كودك معه

 Dim Dt As New DataTable

		Try
			If GSQLConnection.State = ConnectionState.Open Then


				GSQLCmd.CommandText = "SELECT* FROM CategoriesIssue WHERE  CustomerID=" & CustomerNumber & "AND IssueDocDate BETWEEN @FDate AND @SDate"

				GSQLCmd.Parameters.Clear()
				GSQLCmd.CommandType = CommandType.Text
				GSQLCmd.Parameters.Add("@FDate", SqlDbType.DateTime).Value = Me.FirstDate
				GSQLCmd.Parameters.Add("@SDate", SqlDbType.DateTime).Value = Me.SecondDate
				GDR = GSQLCmd.ExecuteReader

				Dt.Clear()
				Dt.Load(GDR)

				GDR.Close()

				Dim report As New ReportSalesCustomerByInterval

				'========================================

				'هنا نقوم بجلب اسم الشركة والسجل التجاري والبطاقة الضريبيةمن قاعدة البيانات
				GSQLCmd.CommandText = "SELECT* FROM CompanyData"

				GSQLCmd.CommandType = CommandType.Text
				GDR = GSQLCmd.ExecuteReader
				GDR.Read()

				Dim crFormulas As FormulaFieldDefinitions

				Dim crFormulaTextField1, crFormulaTextField2, crFormulaTextField3, crFormulaTextField4, crFormulaTextField5, crFormulaTextField6 As FormulaFieldDefinition

				Dim TheCompany As String
				Dim TradeRegister As String
				Dim ExciesID As String

				TheCompany = GDR.GetSqlString(1)
				TradeRegister = GDR.GetSqlString(2)
				ExciesID = GDR.GetSqlString(3)
				crFormulas = report.DataDefinition.FormulaFields

				crFormulaTextField1 = crFormulas.Item("TheCompany")
				crFormulaTextField1.Text = "'" & TheCompany & "'"


				crFormulaTextField2 = crFormulas.Item("TradeRegister")
				crFormulaTextField2.Text = "'" & TradeRegister & "'"


				crFormulaTextField3 = crFormulas.Item("ExciesID")
				crFormulaTextField3.Text = "'" & ExciesID & "'"


				crFormulaTextField4 = crFormulas.Item("FristDate")
				crFormulaTextField4.Text = "'" & Me.FirstDate & "'"

				crFormulaTextField5 = crFormulas.Item("SecondDate")
				crFormulaTextField5.Text = "'" & Me.SecondDate & "'"

				crFormulaTextField6 = crFormulas.Item("SupplierName")
				crFormulaTextField6.Text = "'" & CustomerName & "'"

				report.SetDataSource(Dt)

				rptViewer.ReportSource = report

				rptViewer.ShowGroupTreeButton = False

				' rptViewer.ReportSource = rptDocument
				rptViewer.Zoom(85%)
				rptViewer.RefreshReport()
				GDR.Close()
				Dt.Clear()

			End If
		Catch Ex As Exception
			' MsgBox(Ex.Message)
		Finally
			GDR.Close()
		End Try


	End Sub

مختار أحمد

موقع الويب : http://www.luxorsystems.com

منتدياتنا :http://www.luxorsystems.com/forum/index.php

للمراسلة

luxorsystems@hotmail.com

للاتصال التليفوني

00201228085123

#3

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

cm.commandtext="select * from table1 where id_no =' " & trim ( mm1 ) & " ' "

والصحيح ان تكون على هذا النحو

cm.commandtext="select * from table1 where id_no =" & var( mm1 )

جرب وشوف النتيجة

بالتوفيق

مختار أحمد

موقع الويب : http://www.luxorsystems.com

منتدياتنا :http://www.luxorsystems.com/forum/index.php

للمراسلة

luxorsystems@hotmail.com

للاتصال التليفوني

00201228085123

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…