如何解决每个循环都在销售订单部分复制
每个语句我有 2 个。一个是获取订单,另一个是获取订单详情。
我有 2 个订单,每个订单有 1 个订单详情。
当我从另一个应用程序获取数据并插入我的数据库时,它返回 1 个订单和 2 个订单详细信息。
所以在我的数据库中总共有 2 个订单详细信息,我有 4 个,这是重复的。
***The result I want :
My Order :
#WHFT1100
#WHFT1101
My OrderDetails :
#WHFT1101 0 0 1278 FG-CHIC-0007 BBQ CHICKEN 500GMS
#WHFT1100 0 0 1278 FG-CHIC-0007 BBQ CHICKEN 500GMS
But what I'm getting inserted into database Now is :
My Order :
#WHFT1100
#WHFT1101
My OrderDetails :
#WHFT1101 0 0 1278 FG-CHIC-0007 BBQ CHICKEN 500GMS
#WHFT1100 0 0 1278 FG-CHIC-0007 BBQ CHICKEN 500GMS
#WHFT1101 0 0 1278 FG-CHIC-0007 BBQ CHICKEN 500GMS
#WHFT1100 0 0 1278 FG-CHIC-0007 BBQ CHICKEN 500GMS
这是我的代码(重复发生在销售订单部分):
Dim dt As DataTable = New DataTable()
dt.Columns.Add("RefNo",GetType(String))
dt.Columns.Add("OrderDate",GetType(String))
dt.Columns.Add("TotalAmt",GetType(String))
dt.Columns.Add("Totaldisc",GetType(String))
dt.Columns.Add("Email",GetType(String))
dt.Columns.Add("OrderNum",GetType(String))
dt.Columns.Add("TotalTax",GetType(Double))
dt.Columns.Add("TotalWeight",GetType(Integer))
dt.Columns.Add("Remarks",GetType(String))
dt.Columns.Add("FirstName",GetType(String))
dt.Columns.Add("LastName",GetType(String))
dt.Columns.Add("ShipCode",GetType(String))
dt.Columns.Add("ShipPrice",GetType(Double))
dt.Columns.Add("SAddress",GetType(String))
dt.Columns.Add("SName",GetType(String))
dt.Columns.Add("STel",GetType(String))
dt.Columns.Add("SCity",GetType(String))
dt.Columns.Add("SPostCode",GetType(String))
dt.Columns.Add("sstate",GetType(String))
dt.Columns.Add("SCountry",GetType(String))
For Each obj In st.orders
Dim RefNo As Long = obj.id
Dim OrderDate As String = Convert.ToDateTime(obj.created_at).ToString("yyyy-MM-dd hh:mm:ss")
Dim TotalAmt As Double = obj.total_price
Dim Totaldisc As Double = obj.total_discounts
Dim Email As String = obj.email
Dim OrderNum As String = obj.name 'Order Name
Dim TotalTax As Double = obj.total_tax
Dim TotalWeight As Long = obj.total_weight
Dim Remarks As String = obj.note
Dim FirstName As String = ""
Dim LastName As String = ""
Dim ShipCode As String = ""
Dim ShipPrice As Double
If obj.customer IsNot nothing Then
FirstName = obj.customer.first_name
LastName = obj.customer.last_name
End If
If obj.shipping_lines.Count > 0 And obj.shipping_lines IsNot nothing Then
ShipCode = obj.shipping_lines(0).title
ShipPrice = obj.shipping_lines(0).price
End If
Dim SAddress As String = ""
Dim SName As String = ""
Dim STel As String = ""
Dim SCity As String = ""
Dim SPostCode As String = ""
Dim sstate As String = ""
Dim SCountry As String = ""
If obj.shipping_address IsNot nothing Then
SAddress = obj.shipping_address.address1
SName = obj.shipping_address.first_name
STel = obj.shipping_address.phone
SCity = obj.shipping_address.city
SPostCode = obj.shipping_address.zip
sstate = obj.shipping_address.province
SCountry = obj.shipping_address.country
End If
dt.Rows.Add(RefNo,OrderDate,TotalAmt,Totaldisc,Email,OrderNum,TotalTax,TotalWeight,Remarks,FirstName,LastName,ShipCode,ShipPrice,SAddress,SName,STel,SCity,SPostCode,sstate,SCountry)
Next
'datatable2 to insert record for list of products details from line_items
Dim dt2 As DataTable = New DataTable()
dt2.Columns.Add("RefNo",GetType(String))
dt2.Columns.Add("LineID",GetType(String))
dt2.Columns.Add("Title",GetType(String))
dt2.Columns.Add("ProductID",GetType(String))
dt2.Columns.Add("Quantity",GetType(Integer))
dt2.Columns.Add("Grams",GetType(Double))
dt2.Columns.Add("Price",GetType(Double))
dt2.Columns.Add("SKU",GetType(String))
For Each obj In st.orders
For Each lineitems In obj.line_items
Dim RefNo As Long = obj.id
Dim LineID As Long
Dim Title As String = ""
Dim ProductID As Long
Dim Quantity As Integer
Dim Grams As Double
Dim Price As Double
Dim SKU As String = ""
If obj.line_items IsNot nothing Then
LineID = lineitems.id
Title = lineitems.title
ProductID = lineitems.product_id
Quantity = lineitems.quantity
Grams = lineitems.grams
Price = lineitems.price
SKU = lineitems.sku
End If
dt2.Rows.Add(RefNo,LineID,Title,ProductID,Quantity,Grams,Price,SKU)
Next
Next
'POST SALES ORDER TO EMAC
Dim SOID1 As Integer
Dim OrderDate1 As Date
Dim UpdatedDate As Date
Dim OrderNum1 As String = ""
Dim SOCustCode As String = "300-ONLINE"
'Post Sales Order to allocated shops db to save in tblSalesOrder and SalesOrderDetail
For Each row As DaTarow In dt.Rows
'Get db connection for each branch
Dim mDbsName As String = "WH_PCH"
'check if the sales order number already exist in emac (if exist exit)
Dim dataConn2 As sqlConnection = DBConnectionHelper.GetDataConn(mDbsName)
Dim CountRefNo As Integer
dataConn2.open()
Dim tsql2 As String = "SELECT Count(RefNo) From tblSalesOrder where RefNo =@RefNo"
Using command As sqlCommand = New sqlCommand(tsql2,dataConn2)
command.Parameters.AddWithValue("@RefNo",row("OrderNum"))
CountRefNo = command.ExecuteScalar
'If record not exist then insert into tblSIOrder
If CountRefNo = 0 Then
Dim dataConn As sqlConnection = DBConnectionHelper.GetDataConn(mDbsName)
Dim ComBranchID As Integer = 1
dataConn.open()
'Insert Statement
Using transaction As sqlTransaction = dataConn.BeginTransaction
Try
'Sales Order
Dim sqlStr As String = "EXEC USP_InsertSalesOrder @SOID,@RefNo,@SODate
Dim sqlCmd As sqlCommand = New sqlCommand(sqlStr,dataConn,transaction)
sqlCmd.Parameters.Clear()
sqlCmd.Parameters.Add(New sqlParameter("@SOID","0"))
sqlCmd.Parameters.Add(New sqlParameter("@RefNo",row("OrderNum")))
sqlCmd.Parameters.Add(New sqlParameter("@SODate",row("OrderDate")))
OrderDate1 = row("OrderDate")
UpdatedDate = row("OrderDate")
OrderNum1 = row("OrderNum")
' Execute
Dim sqlDR As sqlDataReader = sqlCmd.ExecuteReader()
If sqlDR.Read() Then
SOID1 = sqlDR(0)
End If
sqlDR.Close()
sqlCmd.dispose()
transaction.Commit()
'Sales Order Part
For Each row2 As DaTarow In dt2.Rows
Using transaction2 As sqlTransaction = dataConn.BeginTransaction
Try
'sql
Dim sql2 As String = "EXEC USP_InsertSalesOrderPart @SOPID,@SOID,@SORefNo
Dim cmd2 As sqlCommand
cmd2 = New sqlCommand(sql2,dataConn) With {.Transaction = transaction2}
cmd2.Parameters.Clear()
cmd2.Parameters.Add(New sqlParameter("@SOPID",0))
cmd2.Parameters.Add(New sqlParameter("@SOID",SOID1))
cmd2.Parameters.Add(New sqlParameter("@SORefNo",OrderNum1))
' Execute
Dim sqlDR1 As sqlDataReader = cmd2.ExecuteReader()
sqlDR1.Close()
cmd2.dispose()
transaction2.Commit()
Catch ex As Exception
transaction2.Rollback()
dataConn.Close()
Exit Sub
End Try
End Using
Next
Catch ex As Exception
transaction.Rollback()
dataConn.Close()
Exit Sub
End Try
End Using
dataConn.Close()
End If
End Using
dataConn2.Close()
Next
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。