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

ربط كومبوبوكس بتكست بوكس

بدأه suz في 5 أبريل 2011 · 3 رد · 796 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أنا أعمل برنامج بالفيجوال بيسك 2008 و قاعدة بيانات سيكوال 2008

و أعمل الإتصال بقاعدة البيانات بالويزرد و لدي 3 حقول الأول ID و الثاني إسم السلعة و الثالث السعر و أريد عندما أختار إسم السلعة في الكومبوبوكس يظهر السعر الخاص بها في التكست بوكس و قد أنشئت بروسيديور هذا كوده

create procedure [dbo].[sp_FertigationPrice]

(@Fertigation_DesID int)

as

begin

select Fertigation_Unit_Price

from dbo.Fertigation

where Fertigation_DesID=@Fertigation_DesID

end

و قد كتبت كود الفيجوال هكذا

rivate Sub cmbfertigation_selectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbfertigation.selectedValueChanged

Dim ta As New Irrigation_Material__SuppliesDataSetTableAdapters. FertigationTableAdapter

TextBox1.Text = ta.sp_FertigationPrice(cmbfertigation.ValueMember)

End Sub

بهدف أن أخذ ValueMember ليكون البراميتر الذي يرسل إلي كود السيكوال و عند عمل تشغيل للكود تكون النتيجة في التكست -1 فأين الخطأ ؟

#2

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

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

.:: Wish to become better and better ::.

#3

ممكن الكود ده يشتغل معال بس انا هنا باختار الاسم ويعطينى الرقم قاعده بيانات اكسس

 Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        cm.CommandText = "select * from expenses where snames='" & ComboBox1.Text & "'"
        cm.Connection = cnn
        dr = cm.ExecuteReader
        Do While dr.Read
            TextBox2.Text = (dr("id"))
            TextBox2.Enabled = False
        Loop
        dr.Close()
    End Sub

الخير هنا ربى اغفر لى ولوالدى وللمؤمنين يوم يقوم الحساب000 امين

#4
abo_shroook كتب:

ممكن الكود ده يشتغل معال بس انا هنا باختار الاسم ويعطينى الرقم قاعده بيانات اكسس

 Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        cm.CommandText = "select * from expenses where snames='" & ComboBox1.Text & "'"
        cm.Connection = cnn
        dr = cm.ExecuteReader
        Do While dr.Read
            TextBox2.Text = (dr("id"))
            TextBox2.Enabled = False
        Loop
        dr.Close()
    End Sub

حلك يعمل بالنسبة للتطبيقات التي تعمل مع قواعد البيانات بشكل مباشر أي بدون استخدام قوالب جاهزة كالـ(DataSet) والتي تقوم بقراءة البيانات في الذاكرة، رغم ذلك لديك مشكلة صغيرة لكنها في بعض الأحيان تعد كبيرة وذلك لأنك تقوم بقراءة قيمة فردية بواسطة قارىء السجلات بينما لديك خيار أفضل هو أن تقوم باستخدام العملية (ExecuteScalar) فهي مخصصة لقراءة قيمة فردية أما الـ(DataReader) فيستخدم لقراءة كم من السجلات.

________________________

السائل الكريم بما أن الربط يتم عن طريق (DataSet) و (BindingSource) فيمكن الاعتماد على الـ(DataBindings) للـ(TextBox) والاستغناء عن استدعاء الـ(Procedure) هذا إذا كان الإجراء يقوم بمعالجة بيانات الجدول نفسه (أي الجدول الذي يتم قراءة حقل من حقوله في الـ(ComboBox)) وإذا لم يكن كذلك فبالإمكان استخدام طريقة أخرى.

بالتوفيق.

تم تعديل هذه المشاركة بواسطة Bashar Rabat في 12 أبريل 2011 في 12:21

The important thing is not so much

that every child should be taught,

as that every child should be given the wish to learn.

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