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

نسخة كاملة : محتاج كود للبحث
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3
السلام عليكم الأخوة الكرام

احتاج كود للبحث في قاعدة البيانات من نوع SQL كالتالي :

لدي قاعدة بيانات فيها :
ItemCode
ItemName
ItemPrice
ولدي داتا جريد 
كود الصنف - اسم الصنف - سعر الصنف
المطلوب البحث عن رقم الصنف من داخل التكست بوكس وانزال نتيجة البحث في الداتا جريد 
لبرنامج فاتورة مبيعات

ارجو المساعدة
وعليكم السلام

أخي

لم تضع مشروع صغير للتوضيح

أنت تريد البحث عن رقم صنف محدد
وأكيد الناتج لن يزيد عن سطر واحد
فما علاقة الداتا جريد!

المعروف أن الداتا جريد مخصصة لعرض أسطر كثيرة!

عموما البحث يكون عن طريق where الخاصة بالاستعلام مثل select * from tbl where itemcode=1
والناتج تضيفه بحسب طريقتك في الكود
استخدمت هذا الكود ولاكن المشكلة بيضيف سطر واحد فقط وباقي الاسطر فارغة

If e.KeyChar = ChrW(Keys.Enter) Then

sql = "select ItemCode,ItemName,ItemPrice from Items where ItemCode ='" + TextBox1.Text + "'"
Dim dt_itm As New DataTable
dp = New OleDb.OleDbDataAdapter(sql, con)
dp.Fill(dt_itm)
dgv_data.Rows.Add()
dgv_data.Rows(0).Cells(0).Value = dt_itm.Rows(0)("ItemCode")
dgv_data.Rows(0).Cells(1).Value = dt_itm.Rows(0)("ItemName")
dgv_data.Rows(0).Cells(2).Value = dt_itm.Rows(0)("ItemPrice")




End If

هذي صورة توضيحية

صورة توضيحية
PHP كود :
Private Sub TextBox1_KeyPress(ByVal sender As ObjectByVal e As KeyPressEventArgsHandles TextBox1.KeyPress
    
If e.KeyChar <> ChrW(Keys.EnterThen Return

    
Using dp As New OleDb.OleDbDataAdapter("SELECT * FROM [Items] WHERE [ItemCode] = @code"con)
        
dp.SelectCommand.Parameters.AddWithValue("@code"TextBox1.Text)
        
Dim dt_itm As New DataTable
        
If dp.Fill(dt_itm) > 0 Then
            Dim r 
As DataRow dt_itm.Rows(0)
            
dgv_data.Rows.Add(r("ItemCode"), r("ItemName"), r("ItemPrice"))
            
            
dgv_data.FirstDisplayedScrollingRowIndex dgv_data.Rows.Count 1
            
            TextBox1
.Clear()
            
TextBox1.Select()

        
End If
    
End Using

End Sub 
جزاك الله خير اخي الكريم a.Ahmed

الى الان يا اخوان الكود تمام والمطلوب ولاكن انا اضفت قيمة وهي واحد لكل مره تنضاف الى الداتا جريد
الي احتاجه الان اذا اضفت صنف الى الجريد وكان مضاف من قبل ما اريد بياناته في سطر اخر احتاج زيادة الخلية الخاصة بالعدد الى 1
وكل ما تكرر صنف موجود بالداتا جريد نريد زيادة قيمة العدد ب 1ارفقت الصور لتوضيح ذلك

الصور التوضيحية

يعني اذا كان نفس الرقم موجود في الداتا جريد ما احتاج تكرار السطر وانما زيادة العدد فقط الى 2 او 3 او 4
PHP كود :
Private Sub TextBox1_KeyPress(ByVal sender As ObjectByVal e As KeyPressEventArgsHandles TextBox1.KeyPress
    
If e.KeyChar <> ChrW(Keys.EnterThen Return

    
Using dp As New OleDb.OleDbDataAdapter("SELECT * FROM [Items] WHERE [ItemCode] = @code"con)
        
dp.SelectCommand.Parameters.AddWithValue("@code"TextBox1.Text)
        
Dim dt_itm As New DataTable
        
If dp.Fill(dt_itm) > 0 Then
            Dim r 
As DataRow dt_itm.Rows(0)

            
dgv_data.ClearSelection()

            
Dim dgvRow As DataGridViewRow = (From x In Me.dgv_data.Rows Where x.Cells(0).Value r("ItemCode")).SingleOrDefault
            
If IsNothing(dgvRowThen

                dgv_data
.Rows.Add(r("ItemCode"), r("ItemName"), r("ItemPrice"), 1)

                
dgv_data.FirstDisplayedScrollingRowIndex dgv_data.Rows.Count - If(dgv_data.AllowUserToAddRows21)
                
dgv_data.Rows(dgv_data.Rows.Count - If(dgv_data.AllowUserToAddRows21)).Selected True

            
Else

                
dgvRow.Cells(3).Value += 1

                dgv_data
.FirstDisplayedScrollingRowIndex dgvRow.Index
                dgv_data
.Rows(dgvRow.Index).Selected True

            End 
If

            
TextBox1.Clear()
            
TextBox1.Select()

        
End If
    
End Using

End Sub 
وفقك الله في الدنيا والاخرة

هل ممكن اخي الكريم ان اطلب بزيادة رقم 1 للكمية بمجرد الضغط على + داخل التكست او نقصان 1 للكمية اذا كانة اكثر من 1 واذا كانت الكمية 1 وعملت - يتم حذف السطر
طبعا هذا التعامل لاخر سطر في الداتا جريد
PHP كود :
Private Sub Form1_Load(ByVal sender As ObjectByVal e As EventArgsHandles MyBase.Load
    dgv_data
.AllowUserToAddRows False

End Sub

Private Sub TextBox1_KeyPress(ByVal sender As ObjectByVal e As KeyPressEventArgsHandles TextBox1.KeyPress
    Select 
Case e.KeyChar

        
Case ChrW(Keys.Enter)

            
Using dp As New OleDb.OleDbDataAdapter("SELECT * FROM [Items] WHERE [ItemCode] = @code"con)
                
dp.SelectCommand.Parameters.AddWithValue("@code"TextBox1.Text)
                
Dim dt_itm As New DataTable
                
If dp.Fill(dt_itm) > 0 Then
                    Dim r 
As DataRow dt_itm.Rows(0)

                    
dgv_data.ClearSelection()

                    
Dim dgvRow As DataGridViewRow = (From x In Me.dgv_data.Rows Where x.Cells(0).Value r("ItemCode")).SingleOrDefault
                    
If IsNothing(dgvRowThen

                        dgv_data
.Rows.Add(r("ItemCode"), r("ItemName"), r("ItemPrice"), 1)

                        
dgv_data.FirstDisplayedScrollingRowIndex dgv_data.Rows.Count 1
                        dgv_data
.Rows(dgv_data.Rows.Count 1).Selected True

                    
Else

                        
dgvRow.Cells(3).Value += 1

                        dgv_data
.FirstDisplayedScrollingRowIndex dgvRow.Index
                        dgv_data
.Rows(dgvRow.Index).Selected True

                    End 
If

                    
TextBox1.Clear()
                    
TextBox1.Select()

                
End If
            
End Using

        
Case "+"
            
Dim dgvRow As DataGridViewRow = (From x In Me.dgv_data.Rows).LastOrDefault
            
If Not IsNothing(dgvRowThen
                dgvRow
.Cells(3).Value += 1
            End 
If
            
e.Handled True

        
Case "-"
            
Dim dgvRow As DataGridViewRow = (From x In Me.dgv_data.Rows).LastOrDefault
            
If Not IsNothing(dgvRowThen
                dgvRow
.Cells(3).Value -= 1
                
If dgvRow.Cells(3).Value 0 Then Me.dgv_data.Rows.RemoveAt(dgvRow.Index)
            
End If
            
e.Handled True

    End Select

End Sub 
والله يا اخي الكريم حفظك الله وبارك في علمك

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

الان بعد ما ذكرنا كل الى راح
لو عند الكاشير قطعة اخذ منها الزبون مثلا15 حبة نحتاج حل جيد لهذا مثلا :

كيف استطيع تحديد الكمية وباركود الصنف زي كذا

15+1000
يعني احتاج الكود الي يساوي 1000 والكمية تكون 15

والعكس صحيح يعني

15-1000
يعني انقاص 15 حبة من كمية الصنف رقم 1000
PHP كود :
Private Sub Form1_Load(ByVal sender As ObjectByVal e As EventArgsHandles MyBase.Load
    dgv_data
.AllowUserToAddRows False

End Sub

Private Sub TextBox1_KeyPress(ByVal sender As ObjectByVal e As KeyPressEventArgsHandles TextBox1.KeyPress
    Select 
Case e.KeyChar

        Case ChrW
(Keys.Enter)

 
           Dim code sender.Text.Trim
            Dim qty 
As Integer 1

            Dim spP
() As String sender.Text.Trim.Split("+")
 
           If spP.Count 2 Then
                code 
spP(0)
 
               qty spP(1)
 
           End If

 
           Dim spM() As String sender.Text.Trim.Split("-")
 
           If spM.Count 2 Then
                code 
spM(0)
 
               qty = -spM(1)
 
           End If

 
           Using dp As New OleDb.OleDbDataAdapter("SELECT * FROM [Items] WHERE [ItemCode] = @code"con)
 
               dp.SelectCommand.Parameters.AddWithValue("@code"code)
 
               Dim dt_itm As New DataTable
                If dp
.Fill(dt_itm) > 0 Then
                    Dim r 
As DataRow dt_itm.Rows(0)

 
                   dgv_data.ClearSelection()

 
                   Dim dgvRow As DataGridViewRow = (From x In Me.dgv_data.Rows Where x.Cells(0).Value r("ItemCode")).SingleOrDefault
                    If IsNothing
(dgvRowThen
                        If qty 
0 Then
                            dgv_data
.Rows.Add(r("ItemCode"), r("ItemName"), r("ItemPrice"), qty)

 
                           dgv_data.FirstDisplayedScrollingRowIndex dgv_data.Rows.Count 1
                            dgv_data
.Rows(dgv_data.Rows.Count 1).Selected True
                        End 
If

 
                   Else

                        dgvRow
.Cells(3).Value += qty

                        dgv_data
.FirstDisplayedScrollingRowIndex dgvRow.Index
                        dgv_data
.Rows(dgvRow.Index).Selected True

                        If dgvRow
.Cells(3).Value <= 0 Then Me.dgv_data.Rows.RemoveAt(dgvRow.Index)

 
                   End If

 
                   sender.Clear()
 
                   sender.Select()

 
               End If
 
           End Using

        Case 
"+"
 
           If sender.Text.Trim "" Then
                Dim dgvRow 
As DataGridViewRow = (From x In Me.dgv_data.Rows).LastOrDefault
                If Not IsNothing
(dgvRowThen
                    dgvRow
.Cells(3).Value += 1
                End 
If
 
               e.Handled True
            End 
If

 
       Case "-"
 
           If sender.Text.Trim "" Then
                Dim dgvRow 
As DataGridViewRow = (From x In Me.dgv_data.Rows).LastOrDefault
                If Not IsNothing
(dgvRowThen
                    dgvRow
.Cells(3).Value -= 1
                    If dgvRow
.Cells(3).Value 0 Then Me.dgv_data.Rows.RemoveAt(dgvRow.Index)
 
               End If
 
               e.Handled True
            End 
If

 
   End Select

End Sub 

     Updated
الصفحات : 1 2 3