منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : إظهار النتيجة في ليبل
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
[attachment=2490][attachment=2490]
مرحبا

عندي قاعدة بيانات مربوطة بمشروع فيجوال بيزك 2010 عن طريق سلسلة الإتصال cnn
بالمشروع به فورم اسمه Facture به combobox اسمه cmbProd وليبل اسمه Qte
ربطت الكل مع قاعدة البيانات GestionCom.accdb عن طريق الاتا أدابتر والبادينق سورس
قاعدة البيانات بها كيوري اسمهSold   هذه الكيوري تحسب لي كميات السلعة لمستراة والمباعة والر صيد المتبقي
معلت في اللكومبوبوكس (CmbProd) كلما اخترت منه سلعة يضظر الرصيد في الليبل
المشكلة كيف أربط اليلبل مع الكيوري Sold
الأكواد التي استنعملتها هي :
Imports System.Data
Imports System.Data.OleDb
Public Class Facture
    Private cnn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|GestionCom.accdb")
    Dim ClientsDataAdpter As New OleDbDataAdapter("Select * From Clients Order by Société", cnn)
    Dim FactureDataAdpter As New OleDbDataAdapter("Select * From Facture", cnn)
    Dim ProduitsDataAdpter As New OleDbDataAdapter("SELECT * FROM Produits ORDER BY Produits.Désignations", cnn)
    Dim SoldDataAdapter As New OleDbDataAdapter("Select * FROM Sold", cnn)
    Dim Ds As New DataSet
    Dim ClientBS As New BindingSource
    Dim FactureBS As New BindingSource
    Dim ProduitsBS As New BindingSource
    Dim soldBS As New BindingSource
    Dim Dsview As New DataView
    Sub View()
        If cnn.State = ConnectionState.Open Then
            cnn.Close()
        End If
        cnn.Open()
        ClientsDataAdpter.Fill(Ds, "Clients")
        FactureDataAdpter.Fill(Ds, "Facture")
        ProduitsDataAdpter.Fill(Ds, "Produits")
        SoldDataAdapter.Fill(Ds, "Sold")
        cnn.Close()
        Dsview = Ds.Tables(0).DefaultView
        'ClientBS.DataSource = Dsview
        'FactureBS.DataSource = Dsview
        soldBS.DataSource = Dsview

        'Fill Tous les ComboBox
        CmbClients.DataSource = Ds.Tables("Clients")
        CmbClients.DisplayMember = "Société"
        CmbClients.ValueMember = "ID"

        CmbProd.DataSource = Ds.Tables("Produits")
        CmbProd.DisplayMember = "Désignations"
        CmbProd.ValueMember = "CodeP"

        'Vidage des ComboBoxs
        CmbClients.Text = ""
        CmbModeP.Text = ""
        CmbProd.Text = ""

        txtNFact.Focus()

   
 Private Sub Facture_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.View()
    End SubEnd Sub
 
 Private Sub CmbProd_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmbProd.SelectedIndexChanged
        If CmbProd.SelectedText = "" Then
            Exit Sub
        End If
        If cnn.State = ConnectionState.Open Then
            cnn.Close()
        End If

        cnn.Open()
        SoldDataAdapter.Fill(Ds, "Sold", CmbProd.SelectedValue)
        cnn.Close()
    End Sub
أرجوا أن أكون قد وضحت الفكرة والإشكال
المشروع على الرابط : http://www.4shared.com/rar/3mSqldkNba/Facture.htm
.....

كود :
Private Sub btnajout_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnajout.Click
    Dt.Clear()
    SoldDataAdapter.SelectCommand.Parameters.Clear()
    SoldDataAdapter.SelectCommand.Parameters.AddWithValue("@CodeP", Me.CmbProd.Text)
    If SoldDataAdapter.Fill(Dt) > 0 Then Me.Qte.Text = Dt.Rows(0).Item("Solde")
End Sub

.....
شكرا لك أخي الكريم أشتغلت فقط مع السطر الأول للcmbProd
.....

يجب تعبئة cmbProd بالبيانات لتختار منها،
إذا أرت أن تظهر النتيجة فوراً بمجرد الاختيار بدون الضغط على الزر يمكنك وضع الكود السابق في الحدث SelectedIndexChanged لـ cmbProd

.....
كتبته كما قلت والكومبوبوكس عبأته بالبيانات ورغم ذلك ما اشتغلت
تحب أبعثلك الفورم ؟
ما فيه مشكلة أنت تأمر موبس تعدل
ممكن تعيد تبعث لي المشروع كي أشوف وأفهم
.....

فقط استبدل هذا الكود بكامل كود الفورم بالذي لديك ثم جرب البرنامج
كود :
Imports System.Data.OleDb
Public Class Facture

    Private cnn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|GestionCom.accdb")
    'Dim FactureDataAdpter As New OleDbDataAdapter("Select * From Facture", cnn)


    Private Sub Facture_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        ' تعبئة صناديق السرد مرة واحدة فقط
        comboBoxFill(CmbClients, "Clients", "Société", "ID", "Société")
        comboBoxFill(CmbProd, "Produits", "Désignations", "CodeP", "Désignations")

        txtNFact.Focus()

    End Sub

    ' إظهار الرصيد المتبقي
    Private Sub CmbProd_SelectionChangeCommitted(ByVal sender As Object, ByVal e As System.EventArgs) Handles CmbProd.SelectionChangeCommitted
        Using da As New OleDbDataAdapter("Select * FROM Sold", cnn)
            Using Dt As New DataTable
                da.SelectCommand.Parameters.Clear()
                da.SelectCommand.Parameters.AddWithValue("@CodeP", CmbProd.SelectedValue)
                If da.Fill(Dt) > 0 Then Me.Qte.Text = Dt.Rows(0).Item("Solde")
            End Using
        End Using
    End Sub

    ' ComboBox إجراء عام لتعبئة صندوق السرد
    Private Sub comboBoxFill(ByVal comboBox As ComboBox, ByVal tableName As String _
                        , ByVal displayMember As String, ByVal valueMember As String _
                        , Optional ByVal orderBy As String = "")

        Dim sql As String = " SELECT [" & displayMember & "], [" & valueMember & "] " & _
                            " FROM [" & tableName & "] " & _
                            If(orderBy.Trim <> "", " ORDER BY [" & orderBy & "]", "")

        Using da As New OleDbDataAdapter(sql, cnn)
            Dim dt As New DataTable
            da.Fill(dt)
            comboBox.DataSource = dt
            comboBox.DisplayMember = displayMember
            comboBox.ValueMember = valueMember
            comboBox.SelectedIndex = -1
        End Using

    End Sub


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Close()
    End Sub

End Class

.....