Как получить расчет запасов самым быстрым способом в VB.NET
Как получить расчет запасов самым быстрым способом в vb.net
Привет мне нужно найти самый быстрый способ расчета запасов,
моя формула такова
Stock = Opening Stock + PURCHASE STOCK - OUTGOING STOCK + CREDIT NOTE STOCK - DEBIT NOTE STOCK
в то время как один элемент он приходит быстро но с несколькими элементами это займет слишком много времени
Мой бэкэнд-это SQL SERVER 2012, а фронтэнд-это VB.NET
Пожалуйста ответьте
заранее спасибо
Что я уже пробовал:
Я просто использовал
Сначала я запускаю запрос из продукта, в котором я получаю данные из diff. таблица сравнения, как покупки , счета, кредит-ноты , Дебет нота И все
но это занимает слишком много времени если элемент равен 50 то только это занимает время пожалуйста предложите мне применить индекс также и ко всей таблице
Мой код код
sqlSelect.CommandText = "Select Opening_Stock,ProdId from Product_tbl" adp.SelectCommand = sqlSelect adp.Fill(ds, "PrdList") While i <= ds.Tables("PrdList").Rows.Count - 1 strCate = "" strSubCate = "" iStock = 0 iGRN = 0 iOrdQty = 0 iCrd = 0 iDbt = 0 iWrkStock = 0 iOrdWorkQty = 0 iOpn = 0 iIncStock = 0 iStockTransFrom = 0 iStockTransTo = 0 iAssem = 0 iAssemOth = 0 iShortFall = 0 strProdId = (ds.Tables("PrdList").Rows(i).Item("Prod_Id").ToString) iOpn = Val(ds.Tables("PrdList").Rows(i).Item("Opening_Stock").ToString) sqlSelectInnr.CommandText = "Select ISNULL(SUM(Qty),0) as GRNQty from GRNTable where GRN_Type='Local' and Prod_Id=" & strProdId dtAdtInnr.SelectCommand = sqlSelectInnr dtAdtInnr.Fill(dtStInnr, "GRN_Stock") If dtStInnr.Tables("GRN_Stock").Rows.Count - 1 >= 0 Then iGRN = Val(dtStInnr.Tables("GRN_Stock").Rows(0).Item("GRNQty").ToString) End If dtStInnr.Tables("GRN_Stock").Rows.Clear() sqlSelectInnr.CommandText = "select ISNULL(SUM(Qty_FullFill),0) as Qty from Order_tbl where Prod_Id=" & strProdId & "" dtAdtInnr.SelectCommand = sqlSelectInnr dtAdtInnr.Fill(dtStInnr, "Ord_Dtls") If dtStInnr.Tables("Ord_Dtls").Rows.Count - 1 >= 0 Then iOrdQty = Val(dtStInnr.Tables("Ord_Dtls").Rows(0).Item("Qty").ToString) End If dtStInnr.Tables("Ord_Dtls").Rows.Clear() sqlSelectInnr.CommandText = "Select ISNULL(SUM(Qty),0) as CrdQty from CrditNote_tb where Prod_Id=" & strProdId dtAdtInnr.SelectCommand = sqlSelectInnr dtAdtInnr.Fill(dtStInnr, "Crd_Dtls") If dtStInnr.Tables("Crd_Dtls").Rows.Count - 1 >= 0 Then iCrd = Val(dtStInnr.Tables("Crd_Dtls").Rows(0).Item("CrdQty").ToString) End If dtStInnr.Tables("Crd_Dtls").Rows.Clear() sqlSelectInnr.CommandText = "Select ISNULL(SUM(Qty),0) as DbtQty from DebitNote_tb where Prod_Id=" & strProdId dtAdtInnr.SelectCommand = sqlSelectInnr dtAdtInnr.Fill(dtStInnr, "Dbt_Dtls") If dtStInnr.Tables("Dbt_Dtls").Rows.Count - 1 >= 0 Then iDbt = Val(dtStInnr.Tables("Dbt_Dtls").Rows(0).Item("DbtQty").ToString) End If dtStInnr.Tables("Dbt_Dtls").Rows.Clear() iStock = iOpn + iGRN - iOrdQty + iCrd - iDbt If iStock < 0 Then iStock = 0 End If dgvData.Rows.Add(strProdId, ds.Tables("PrdList").Rows(i).Item("Prod_Name").ToString, iStock) ', strItemType, ds.Tables("PrdList").Rows(i).Item("HSN_Code").ToString, strCate, ds.Tables("PrdList").Rows(i).Item("Location_Name").ToString, ds.Tables("PrdList").Rows(i).Item("Rack_No").ToString, ds.Tables("PrdList").Rows(i).Item("Tax3_Per").ToString, Val(ds.Tables("PrdList").Rows(i).Item("WQty").ToString), Val(ds.Tables("PrdList").Rows(i).Item("MIQ").ToString), iWrkStock, iIncStock, ds.Tables("PrdList").Rows(i).Item("Product_Description").ToString) k += 1 i += 1 End While ds.Tables("PrdList").Rows.Clear()
Richard MacCutchan
Пожалуйста, отредактируйте свой вопрос и покажите код, который вызывает проблему. Никто не может догадаться, что делает ваша программа.
hareshdgr8
хорошо сэр
Patrice T
"в то время как один элемент он приходит быстро, но с несколькими элементами это займет слишком много времени"
Определите "быстро" и "слишком много времени".
Patrice T
Кстати, структура базы данных, отношения и индексы тоже имеют значение