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

كيف يمكن تنفيذ Stored Procedure على جملة إستعلام من نوع Parameter Query

مغلق
بدأه abduljawaad saad في 25 ديسمبر 2002 · 10 رد · 5,469 مشاهدة · في أرشيف قسم SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كيف يمكن تنفيذ Stored Procedure على جملة إستعلام من نوع Parameter Query مخزنه فى قاعدة Access بمعنى تمرير براميتر من خلال الكود إلى الجملة للحصول على بيانات محددة من سجل محدد

كيف يمكن عمل هذا بالكود؟

للجميع تحياتى

mytrial_a.gif

نحن بحاجة لتدوين تجاربنا , نحن بحاجة إلى اكتشاف قيمة التجربة, هذه تجربتى مثيرة ومفيدة ...,

هنا
#2

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 Sub

as you can see ,we update the source of the DataGrid after executing the stored procedure to display the query result

Hope this helps

Madani

1.zip

تم تعديل هذه المشاركة بواسطة walcom في 19 ديسمبر 2004 في 12:24

#3

شكرا لك ياأخ 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

mytrial_a.gif

نحن بحاجة لتدوين تجاربنا , نحن بحاجة إلى اكتشاف قيمة التجربة, هذه تجربتى مثيرة ومفيدة ...,

هنا
#4

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 Sub
#5

طبعا أنا عاجز عن الشكر

سأجرب الكود بعد التعديلات التى أشرت إليها

مع تمنياتى لك بمزيد من التقدم والنجاح

mytrial_a.gif

نحن بحاجة لتدوين تجاربنا , نحن بحاجة إلى اكتشاف قيمة التجربة, هذه تجربتى مثيرة ومفيدة ...,

هنا
#6

أخى الكريم madani

جربت الكود والنتيجة 100%

وسؤال أخير : لو حبيت إستخدام الكود فى إرسال إلى البراميتر ( كلمة ) بدلا من ( حرف ) فما الذى يمكن أن نعدله فى هذا الكود

لك شكرى وتقديرى

mytrial_a.gif

نحن بحاجة لتدوين تجاربنا , نحن بحاجة إلى اكتشاف قيمة التجربة, هذه تجربتى مثيرة ومفيدة ...,

هنا
#7

Just use adVarChar instead of adChar and increase the size to 50

 Set PramTemp = cmd.CreateParameter("@Letter", adVarChar, adParamInput, 50)
#8

لك منى عظيم الشكر مع خالص تقديرى .. وقل لى كيف أتصل بك هاتفيا؟

mytrial_a.gif

نحن بحاجة لتدوين تجاربنا , نحن بحاجة إلى اكتشاف قيمة التجربة, هذه تجربتى مثيرة ومفيدة ...,

هنا
#9

ارجو من لديه معلومه ان لايبخل علينا

وشكرا للاخ abduljawaad saad على هذا السؤال كنت سوف اسأل هذا اسؤال اليوم...

#10
وقل لى كيف أتصل بك هاتفيا؟

+447984981620

#11

تحياتى يا madani

موبايلى +966057129098

mytrial_a.gif

نحن بحاجة لتدوين تجاربنا , نحن بحاجة إلى اكتشاف قيمة التجربة, هذه تجربتى مثيرة ومفيدة ...,

هنا

هذا الموضوع مغلق.

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