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

نسخة كاملة : سؤال عن فترة ركود صنف في برنامج مبيعات
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
اريد ان يحدد العميل فترة لكل صنف اذا انقضت يرسل له البرنامج تنبيه بذلك
وبذلك فلكل صنف فترة مختلفة عن الاخر محفوظة في جدول الاصناف تحت اسم stagnation
واستعملت هذا الكود للاستعلام
Private Sub FlatButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FlatButton1.Click
        Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=small cashier.accdb")
        Dim da As New OleDbDataAdapter
        Dim dt As New DataTable
        da = New OleDbDataAdapter("select * from items where store > 0 and stagnation <> 0 ", con)
        da.Fill(dt)
        con.Open()
        If dt.Rows.Count > 0 Then
            DataGridView1.DataSource = dt
        Else
            Return
        End If
        Dim x As Integer
        Dim z As String
        For i As Integer = 0 To DataGridView1.Rows.Count - 1
            x = DataGridView1.Rows(i).Cells(13).Value
            z = DataGridView1.Rows(i).Cells(1).Value
            Dim daa As New OleDbDataAdapter
            Dim dtt As New DataTable
            daa = New OleDbDataAdapter("select iname_o, order_date from orders_d where cod = " & z & " and order_date < # " & today.addDays(-x) & " #    ", con)
            If dtt.Rows.Count = 0 Then
                daa.Fill(dtt)
                DataGridView2.DataSource = dtt
            Else
                Dim row As DataRow = dtt.NewRow
                row(0) = dtt.Rows(0)(0)
                row(1) = dtt.Rows(0)(1)

                dtt.Rows.Add(row)
                DataGridView2.DataSource = dtt
            End If
        Next
        MsgBox("تم")
    End Sub
في النهاية يظهر الاستعلام الاول في الداتا جريد الاولى سليم
ولا يظهر في الداتا جريد الثانية غير اسماء الجداول فقط ولا شئ تحتها
استبدل مكان هذين السطرين
            If dtt.Rows.Count = 0 Then                                                                                                                                                                               
                daa.Fill(dtt)
اجعل daa.Fill(dtt) قبل بداية جملة if
 
وانتبه لهذ السطر
            If dtt.Rows.Count = 0 Then

هل انت متأكد من انك لا تريده هكذا 
            If dtt.Rows.Count > 0 Then
(16-05-21, 06:32 PM)ابو انس كتب : [ -> ]استبدل مكان هذين السطرين
            If dtt.Rows.Count = 0 Then                                                                                                                     

عندما فعلت ذلك اصبح التكرار يغير قيم ال dtt في كل مرة وبذلك تظهر نتيجة واحدة للاستعلام في النهاية
ما هي القيم المخزنة بكلا من x z هنا
x = DataGridView1.Rows(i).Cells(13).Value
z = DataGridView1.Rows(i).Cells(1).Value
بعد Dim dtt As New DataTable
اكتب dtt.clear
(16-05-21, 07:11 PM)أبو عبدالله الحلواني كتب : [ -> ]ما هي القيم المخزنة بكلا من x z  هنا
x = DataGridView1.Rows(i).Cells(13).Value
           z = DataGridView1.Rows(i).Cells(1).Value

1- كود الصنف
13- فترة الركود الخاصة به
بعد محاولات كتير ده الكود النهائي للي ممكن يحتاجه

        Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=small cashier.accdb")
        Dim da As New OleDbDataAdapter
        Dim dt As New DataTable
        da = New OleDbDataAdapter("select * from items where store > 0 and stagnation <> 0 ", con)
        da.Fill(dt)
        con.Open()
        If dt.Rows.Count > 0 Then
            DataGridView1.DataSource = dt
        Else
            Return
        End If
        Dim x As Integer
        Dim z As String
        Dim dttt As New DataTable
        dttt.Columns.Add("اسم الصنف")
        dttt.Columns.Add("تاريخ اخر بيع")
        DataGridView2.DataSource = dttt
        For i As Integer = 0 To DataGridView1.Rows.Count - 1
            x = DataGridView1.Rows(i).Cells(13).Value
            z = DataGridView1.Rows(i).Cells(1).Value
            Dim daa As New OleDbDataAdapter
            Dim daaa As New OleDbDataAdapter
            Dim dtt As New DataTable
            Dim dtttt As New DataTable
            daa = New OleDbDataAdapter("select * from orders_d where cod = '" & z & "' and order_date < # " & Today.AddDays(-x) & " # ", con)
            daaa = New OleDbDataAdapter("select * from orders_d where cod = '" & z & "' and order_date > # " & Today.AddDays(-x) & " # ", con)
            daaa.Fill(dtttt)
            daa.Fill(dtt)
            If dtttt.Rows.Count > 0 Then
                If dtttt.Rows(0)(0) = dtt.Rows(0)(0) Then
                    'dtt.Clear()
                    'dtttt.Clear()
                Else
                    dtt.Clear()
                End If
            End If
            If dtt.Rows.Count > 0 Then
                Dim last As Integer = dtt.Rows.Count - 1
                Dim row As DataRow = dttt.NewRow
                row(0) = dtt.Rows(last)(2)
                row(1) = dtt.Rows(last)(6)
                dttt.Rows.Add(row)
                DataGridView2.DataSource = dttt
            End If

        Next