我想問一下從我的SqlDb插入數據到MariaDb。我的麻煩是,當我成功插入數據,我有相同的時間戳和狀態的雙重數據。我對插入過程很少解釋。每個AWB都有許多狀態喜歡SD,AR,OD,UN,RT,UN,UN和OK。我已經使用Windows服務計劃插入數據。我每30秒製作一次時間表。麻煩的是,我之前插入MariaDb的每個數據總是在數據庫中再次繪製,因此在數據庫中存在大量有關AWB的雙重數據。我怎麼能否認以前插入的數據與之前插入的相同的狀態和時間戳不能再進入我的MariaDB?VB.Net MariaDB Sql Server
這是我的 '選擇查詢和插入代碼'
Private Sub getStatus()
Try
Dim con As New SqlConnection(DesktopGeneral.koneksiTTM)
buka2(con)
Querysend = "Declare @AWB as varchar(50) "
Querysend += "Select @AWB=Pick_Cust.AWB from Pick_Cust inner join PICKUP_DETIL On Pick_Cust.TrNo=PICKUP_DETIL.TrNo where ComName LIKE '%Lazada%' "
Querysend += "Select PICKUP_DETIL.AWB,PICKUP_DETIL.RefNo,PICKUP_DETIL.Date,PICKUP_DETIL.time,PICKUP_DETIL.Origin As Station,PICKUP_DETIL.CP2 As Status,'' as Recipient,'' as Relation,'' as Remarks,PICKUP_DETIL.Login,'' as ReasonCode,'' as ReasonNote,'Data Entry' as Comment from PICKUP_DETIL "
Querysend += "inner join RECEIVED r on PICKUP_DETIL.AWB=r.AWB where [email protected] "
Querysend += "union "
Querysend += "Select PICKUP_DETIL.AWB,PICKUP_DETIL.RefNo,PICKUP_DETIL.PUdate as Date,PICKUP_DETIL.PUtime as Time,PICKUP_DETIL.Origin as Station,PICKUP_DETIL.CP as Status,'' as Recipient,'' as Relation,'' as Remarks, c.CouName,'' as ReasonCode,'' as ReasonNote,'Pick-Up' as Comment from PICKUP_DETIL "
Querysend += "inner join COURIER c on PICKUP_DETIL.Pic=c.CouRoute where [email protected] "
Querysend += "union "
Querysend += "Select BABY.AWB,p.RefNo,BABY.DATE,BABY.TIME,BABY.STN as Station,BABY.CP as Status,'' as Recipient,'' as Relation,BABY.BABY as Remarks,BABY.LOGIN,'' as ReasonCode,'' as ReasonNote,'Sotir Departement/Destination' as Comment from BABY "
Querysend += "inner join PICKUP_DETIL p on BABY.AWB=p.AWB where [email protected] "
Querysend += "union "
Querysend += "Select ARRIVAL.Code,p.RefNo,CONVERT(char(10),arrival.Date,120) as Date,CONVERT(char(5),arrival.Date,114) as Time,STN as Station,arrival.CP as Status,'' as Recipient,'' as Relation,'' as Remarks, arrival.PIC,'' as ReasonCode,'' as ReasonNote,'Arrival at Destination HUB' as Comment from ARRIVAL "
Querysend += "inner join PICKUP_DETIL p on ARRIVAL.Code=p.AWB where [email protected] "
Querysend += "union "
Querysend += "Select DELIVERY.AWB,p.RefNo,CONVERT(char(10),delivery.Date,120) as Date,CONVERT(char(5),delivery.Date,114) as Time, STN as Station,delivery.CP as Status,'' as Recipient,'' as Relation,'Kurir:' +COURIER.CouName + '.Note:'+Note + ' Cycle:'+CYCLE as Remarks,delivery.PIC,'' as ReasonCode,'' as ReasonNote,'On Delivery' as Comment from Delivery "
Querysend += "inner join COURIER on DELIVERY.CouRoute=COURIER.CouRoute inner join PICKUP_DETIL p on DELIVERY.AWB=p.AWB where [email protected] "
Querysend += "union "
Querysend += "Select UNDELIVERED.AWB,pd.RefNo,CONVERT(char(10),undelivered.date,120) as Date,CONVERT(char(5),undelivered.date,114) as Time,STN as Station,undelivered.CP as Status,'' as Recipient,'' as Relation,Note+'>' as Remarks,c.CouName,Other as ReasonCode,a.Remarks as ReasonNote,'Undelivered' as Comment from UNDELIVERED "
Querysend += "inner join COURIER c on UNDELIVERED.PIC=c.CouRoute inner join RMK_RET a on UNDELIVERED.Other=a.Code inner join PICKUP_DETIL pd on UNDELIVERED.AWB=pd.AWB where [email protected] "
Querysend += "union "
Querysend += "Select RECEIVED.AWB,pd.RefNo,CONVERT(char(10),received.Date,120) as Date,CONVERT(char(5),received.Date,114) as Time,STN as Station,received.CP as Status,Recipient as Recipient,Relation as Relation,Note as Remarks,received.PIC,'' as ReasonCode,'' as ReasonNote,'Delivery Success' as Comment from RECEIVED "
Querysend += "inner join PICKUP_DETIL pd on RECEIVED.AWB=pd.AWB where [email protected] "
Querysend += "union "
Querysend += "Select [RETURN].AWB,pd.RefNo,CONVERT(char(10),[return].date,120) as Date,CONVERT(char(5),[return].date,114) as Time,STN as Station,[return].CP as Status,'' as Recipient,'' as Relation,Note as Remarks,[return].PIC,returnCode as ReasonCode,a.Remarks as ReasonNote,'Return Shipper' as Comment from [RETURN] "
Querysend += "inner join RMK_RET a on [RETURN].returnCode=a.Code inner join PICKUP_DETIL pd on [RETURN].AWB=pd.AWB where [return][email protected] "
Dim ds As New DataSet
Dim cmd As New SqlCommand(Querysend, con)
Dim da As New SqlDataAdapter(cmd)
da.Fill(ds, "joe")
tutup2(con)
If ds.Tables(0).Rows.Count > 0 Then
Dim cn As New MySqlConnection(DesktopGeneral.koneksiAPI)
buka(cn)
For i As Integer = 0 To ds.Tables(0).Rows.Count - 1
Querysend = "Insert into api_status(AWB,TrackingNumber,Status,TimeStamp,Comment,Station,Recipient,Relation,ReasonCode,ReasonNote,Attempt,Username,RequestID,Flag) "
Querysend += "VALUES(@AWB,@TrackingNumber,@Status,@TimeStamp,@Comment,@Station,@Recipient,@Relation,@ReasonCode,@ReasonNote,@Attempt,@Username,@RequestID,@Flag) "
Dim mycmd As New MySqlCommand(Querysend, cn)
mycmd.Parameters.Add("AWB", MySqlDbType.VarChar, 50).Value = ds.Tables(0).Rows(i).Item("AWB").ToString
mycmd.Parameters.Add("TrackingNumber", MySqlDbType.VarChar, 50).Value = ds.Tables(0).Rows(i).Item("Refno").ToString
mycmd.Parameters.Add("Status", MySqlDbType.VarChar, 50).Value = ds.Tables(0).Rows(i).Item("Status").ToString
mycmd.Parameters.Add("TimeStamp", MySqlDbType.DateTime).Value = CDate(ds.Tables(0).Rows(i).Item("Date").ToString).ToString("yyyy-MM-dd") & " " & ds.Tables(0).Rows(i).Item("Time").ToString
mycmd.Parameters.Add("Comment", MySqlDbType.VarChar, 100).Value = ds.Tables(0).Rows(i).Item("Comment").ToString
mycmd.Parameters.Add("Station", MySqlDbType.VarChar, 50).Value = ds.Tables(0).Rows(i).Item("Station").ToString
mycmd.Parameters.Add("Recipient", MySqlDbType.VarChar, 150).Value = ds.Tables(0).Rows(i).Item("Recipient").ToString
mycmd.Parameters.Add("Relation", MySqlDbType.VarChar, 10).Value = ds.Tables(0).Rows(i).Item("Relation").ToString
mycmd.Parameters.Add("ReasonCode", MySqlDbType.VarChar, 10).Value = ds.Tables(0).Rows(i).Item("ReasonCode").ToString
mycmd.Parameters.Add("ReasonNote", MySqlDbType.VarChar, 100).Value = ds.Tables(0).Rows(i).Item("ReasonNote").ToString
mycmd.Parameters.Add("Attempt", MySqlDbType.Int16).Value = 1
mycmd.Parameters.Add("Username", MySqlDbType.VarChar, 50).Value = "Joe"
mycmd.Parameters.Add("RequestID", MySqlDbType.VarChar, 50).Value = ""
mycmd.Parameters.Add("Flag", MySqlDbType.Int16).Value = 0
mycmd.ExecuteNonQuery()
mycmd.Dispose()
Next
tutup(cn)
End If
Catch ex As Exception
Dim err As String
err = ex.Message
End Try
End Sub
請幫助。謝謝你之前:)
看起來你每隔30秒運行一次SELECT查詢,所以它會返回相同的數據並一次又一次地在目標數據庫中插入相同的數據。 –
感謝@ Chetan的迴應。我把設置時間放在我的配置文件中。所以它會自動將數據提交給我的MariaDB。那麼,如何忽略具有相同狀態和時間戳的數據以便不再拉到我的MariaDB?任何建議與代碼? – Joinnes
'「從Pick_Cust內部加入PICKUP_DETIL選擇@ AWB = Pick_Cust.AWB On Pick_Cust.TrNo = PICKUP_DETIL.TrNo其中ComName LIKE'%Lazada%'」'將始終返回相同的單個記錄。你是否試圖從該表中檢索最近插入的記錄?您的要求不是很清楚 - 什麼是AWB,您想要選擇什麼記錄? – ADyson