كيف يمكن تنفيذ Stored Procedure على جملة إستعلام من نوع Parameter Query مخزنه فى قاعدة Access بمعنى تمرير براميتر من خلال الكود إلى الجملة للحصول على بيانات محددة من سجل محدد
كيف يمكن عمل هذا بالكود؟
للجميع تحياتى
كيف يمكن تنفيذ Stored Procedure على جملة إستعلام من نوع Parameter Query مخزنه فى قاعدة Access بمعنى تمرير براميتر من خلال الكود إلى الجملة للحصول على بيانات محددة من سجل محدد
كيف يمكن عمل هذا بالكود؟
للجميع تحياتى
Use ADO to create a command and append parameters.The example attached uses an Access query called ProductsByPrice
SELECT * FROM Products WHERE Price>[PRC];
It gets the products whose price is greater than the parameter
You could called it from VB using
Private Sub Command1_Click()
Dim Com As ADODB.Command
Dim Par As ADODB.Parameter
Set Com = New ADODB.Command
Com.ActiveConnection = Adodc2.Recordset.ActiveConnection
Com.CommandText = "ProductsByPrice"
Com.CommandType = adCmdStoredProc
Set Par = Com.CreateParameter("@PRC", adInteger, adParamInput, 50, Text1.Text)
Com.Parameters.Append Par
Set Adodc2.Recordset = Com.Execute()
End Subas you can see ,we update the source of the DataGrid after executing the stored procedure to display the query result
Hope this helps
Madani
تم تعديل هذه المشاركة بواسطة walcom في 19 ديسمبر 2004 في 12:24
شكرا لك ياأخ madani
ممتاز ممتاز ممتاز
إذا وبناء على توضيحك الرائع 00 ما هو الخطأ فى هذا الكود؟
الغرض من الكود : ملأ List Box ببيانات (حقل) محدد يحتوى على أسماء (من كل الجدول) فى قاعدة بيانات Access بحيث تظهر
كل الأسماء طبقا لأول حرف يتم إدخاله عن طريق Text Box
طريقة عمل الكود : تمرير الحرف المراد إظهار الأسماء التى تبدأ به إلى إستعلام من نوع Parameter Query
وجملة الإستعلام قمت بتخزينها داخل قاعدة البيانات بإسم LetterLookUp
جملة الإستعلام ;'*'+SELECT ItemName FROM Items WHERE ItemName Like Letter
ولقد تأكدت أن جملة الإستعلام تعمل جيدا من داخل البرنامج VisData بعد تنفيذها بالأمر Execte
والمشكلة : بعد تنفيذ الكود لا يتم ملأ الليست بوكس بأى بيانات بالرغم من عدم ظهور أى رسالة خطأ فى
أى مرحله من مراحل الكود وكأن الجدول الذى كونته جملة الإستعلام فارغ
Option Explicit
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim cmd As New ADODB.Command
Dim PramTemp As ADODB.Parameter
Dim Letter As String
Private Sub Text_Change()
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= (App.Path & "" & "jawaad.MDB")
Set cmd = New ADODB.Command
cmd.CommandText = "LetterLookUp"
cmd.CommandType = adCmdStoredProc
Letter = Text
Set PramTemp = cmd.CreateParameter("Letter", adChar, adParamInput, 1)
cmd.Parameters.Append PramTemp
PramTemp.Value = Letter
Set cmd.ActiveConnection = cn
Set rs = cmd.Execute
Do While Not rs.EOF
List.AddItem rs.Fields("ItemName")
rs.MoveNext
Loop
rs.Close
cn.Close
End Subتم تعديل هذه المشاركة بواسطة walcom في 10 مارس 2005 في 12:19
U welcome brother
First the query criteria need to be inside "[" and "]" .Second ,you need to use "%" and not "*" because in my point of view ADO uses "%" while Access and DAO uses "*".The query using "%" may not work in Access but it will work in VB
SELECT ItemName FROM Items WHERE ItemName Like [Letter] & "%";
you also need to add "" to the path of the file and the "@" before the param name as highlighted in red
Private Sub Command2_Click()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim cmd As New ADODB.Command
Dim PramTemp As ADODB.Parameter
Dim Letter As String
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & App.Path & "jawaad.MDB"
Set cmd = New ADODB.Command
cmd.CommandText = "LetterLookUp"
cmd.CommandType = adCmdStoredProc
Letter = Text1
Set PramTemp = cmd.CreateParameter("@Letter", adChar, adParamInput, 1)
cmd.Parameters.Append PramTemp
PramTemp.Value = Letter
Set cmd.ActiveConnection = cn
Set rs = cmd.Execute
Do While Not rs.EOF
List.AddItem rs.Fields("ItemName")
rs.MoveNext
Loop
rs.Close
cn.Close
End SubJust use adVarChar instead of adChar and increase the size to 50
Set PramTemp = cmd.CreateParameter("@Letter", adVarChar, adParamInput, 50)ارجو من لديه معلومه ان لايبخل علينا
وشكرا للاخ abduljawaad saad على هذا السؤال كنت سوف اسأل هذا اسؤال اليوم...
وقل لى كيف أتصل بك هاتفيا؟
+447984981620
هذا الموضوع مغلق.