03-03-24, 05:14 PM
عندي مشكله في استخدام فيجوال بيسك 2017 عندي قاعدة بيانات SQLite واعمل علي برنامج جرد المخازن مشتريات ومبيعات ومرتجع مورد ومرتجع زبون وعندي هذا الكود بيظهر عدد المشتريات فقط ويتجاهل عدد المبيعات وعدد المرتجعات اريد من الاخواه الافاضل المساعدة في حل هذه المشكله ولكم جزيل الشكر
هذا الكود يعرض نتيجه qty فقط
وباقي الحقول لا يتم عرضاها مثل qtya,qtyb,qtyc
المشكله في هذا الجزء
اذا كانت
FROM Invoice WHERE Qty IS NOT NULL AND ItmName IS NOT NULL AND ItmName <> '' GROUP BY ItmName, code ORDER BY ItmName"
اذا كانت FROM Invoice WHERE Qty يعرض بيانات Qty
واذا كانت FROM Invoice WHERE Qtya يعرض بيانات Qtya وهكذا
اريد حل هذه المشكله مع جزيل الشكر
Imports System.Data.SQLite
Public Class ForGARD
Private Sub ForGARD_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Using conn As SQLiteConnection = DatabaseConnection.GetConnection()
conn.Open()
Dim query As String = "SELECT ItmName AS أسم_الصنف, code AS كود_الصنف, SUM(Qty) AS مشتريات, SUM(Qtya) AS مبيعات, SUM(Qtyb) AS مرتجع_زبون, SUM(Qtyc) AS مرتجع_مورد, SUM(Qty) - SUM(Qtya) - SUM(Qtyc) + SUM(Qtyb) AS المخزن FROM Invoice WHERE Qty IS NOT NULL AND ItmName IS NOT NULL AND ItmName <> '' GROUP BY ItmName, code ORDER BY ItmName"
Dim dt As New DataTable()
Dim adapter As New SQLiteDataAdapter(query, conn)
adapter.Fill(dt)
For Each row As DataRow In dt.Rows
Dim purchases As Integer = If(row("مشتريات") IsNot DBNull.Value, Convert.ToInt32(row("مشتريات")), 0)
Dim sales As Integer = If(row("مبيعات") IsNot DBNull.Value, Convert.ToInt32(row("مبيعات")), 0)
Dim customerReturns As Integer = If(row("مرتجع_زبون") IsNot DBNull.Value, Convert.ToInt32(row("مرتجع_زبون")), 0)
Dim supplierReturns As Integer = If(row("مرتجع_مورد") IsNot DBNull.Value, Convert.ToInt32(row("مرتجع_مورد")), 0)
row("مشتريات") = purchases
row("مبيعات") = sales
row("مرتجع_زبون") = customerReturns
row("مرتجع_مورد") = supplierReturns
row("المخزن") = purchases - sales - supplierReturns + customerReturns
Next
DataGridView1.DataSource = dt
Dim columnWidths() As Integer = {200, 90, 90, 90, 90, 90, 90}
For i As Integer = 0 To DataGridView1.Columns.Count - 1
DataGridView1.Columns(i).Width = columnWidths(i)
Next
End Using
هذا الكود يعرض نتيجه qty فقط
وباقي الحقول لا يتم عرضاها مثل qtya,qtyb,qtyc
المشكله في هذا الجزء
اذا كانت
FROM Invoice WHERE Qty IS NOT NULL AND ItmName IS NOT NULL AND ItmName <> '' GROUP BY ItmName, code ORDER BY ItmName"
اذا كانت FROM Invoice WHERE Qty يعرض بيانات Qty
واذا كانت FROM Invoice WHERE Qtya يعرض بيانات Qtya وهكذا
اريد حل هذه المشكله مع جزيل الشكر
Imports System.Data.SQLite
Public Class ForGARD
Private Sub ForGARD_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Using conn As SQLiteConnection = DatabaseConnection.GetConnection()
conn.Open()
Dim query As String = "SELECT ItmName AS أسم_الصنف, code AS كود_الصنف, SUM(Qty) AS مشتريات, SUM(Qtya) AS مبيعات, SUM(Qtyb) AS مرتجع_زبون, SUM(Qtyc) AS مرتجع_مورد, SUM(Qty) - SUM(Qtya) - SUM(Qtyc) + SUM(Qtyb) AS المخزن FROM Invoice WHERE Qty IS NOT NULL AND ItmName IS NOT NULL AND ItmName <> '' GROUP BY ItmName, code ORDER BY ItmName"
Dim dt As New DataTable()
Dim adapter As New SQLiteDataAdapter(query, conn)
adapter.Fill(dt)
For Each row As DataRow In dt.Rows
Dim purchases As Integer = If(row("مشتريات") IsNot DBNull.Value, Convert.ToInt32(row("مشتريات")), 0)
Dim sales As Integer = If(row("مبيعات") IsNot DBNull.Value, Convert.ToInt32(row("مبيعات")), 0)
Dim customerReturns As Integer = If(row("مرتجع_زبون") IsNot DBNull.Value, Convert.ToInt32(row("مرتجع_زبون")), 0)
Dim supplierReturns As Integer = If(row("مرتجع_مورد") IsNot DBNull.Value, Convert.ToInt32(row("مرتجع_مورد")), 0)
row("مشتريات") = purchases
row("مبيعات") = sales
row("مرتجع_زبون") = customerReturns
row("مرتجع_مورد") = supplierReturns
row("المخزن") = purchases - sales - supplierReturns + customerReturns
Next
DataGridView1.DataSource = dt
Dim columnWidths() As Integer = {200, 90, 90, 90, 90, 90, 90}
For i As Integer = 0 To DataGridView1.Columns.Count - 1
DataGridView1.Columns(i).Width = columnWidths(i)
Next
End Using