Buona serata a tutti (almeno a Voi)
E' una settimana che sto girando e rigirando il codice per riuscire ad inserire più righe in una tabella che si trova in un db sqlite remoto.
Partiamo dall'inizio. Devo:
1) ricavare il numero dell'ordine
2) inserire in una tabella una riga di testata ordine
3) inserire in un'altra tabella più righe di dettaglio.
Uso questa procedura:
Ricavo n. ordine da una tabella e aggiorno la stessa all'ordine successivo
Inserisco le righe di dettaglio e verifico che siano state inserite tutte ricavando l'importo totale
'se somma coincide procedo con inserimento di testata dell'ordine
Verifico che la riga dell'ordine sia stata inserita
Bene. Sembra fatto.
Invece no. Riscontro problemi nell'inserimento delle righe di dettaglio
Riscontro diversi problemi.
Se provo con app in debug e jrdc2 in debug tutto funziona anche se le righe di dettaglio non vengono inserite nell'ordine in qui sono state inviate.
Se provo con app in release e jrdc2 in debug il 20% delle volte mi si pianta nell'inserimento delle righe di dettaglio
Se provo con app in debug e jrdc2 in release mi si pianta nell'inserimento delle righe di dettaglio
Idem con app in release.
C'è qualcuno cosi gentile da consigliarmi qualche soluzione?
Grazie
E' una settimana che sto girando e rigirando il codice per riuscire ad inserire più righe in una tabella che si trova in un db sqlite remoto.
Partiamo dall'inizio. Devo:
1) ricavare il numero dell'ordine
2) inserire in una tabella una riga di testata ordine
3) inserire in un'altra tabella più righe di dettaglio.
Uso questa procedura:
Ricavo n. ordine da una tabella e aggiorno la stessa all'ordine successivo
B4X:
'Ricavo n. ordine precedente
Private Sub RDC_GetOrderNumber()
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "Select_GetOrderNumber"
reqManager.ExecuteQuery(cmd, 0, "Select_GetOrderNumber")
End Sub
'Aggiorno a n. ordine Attuale
Private Sub RDC_UpdateOrderNumber(OrderNumber As String)
Dim cmd As DBCommand
cmd.Initialize
Dim Param(1) As Object
Param(0) = OrderNumber
cmd.Parameters = Param
cmd.Name = "Update_OrderNumber"
reqManager.ExecuteCommand(cmd, "Update_OrderNumber")
End Sub
Inserisco le righe di dettaglio e verifico che siano state inserite tutte ricavando l'importo totale
B4X:
'inserisco righe di dettaglio ricavate da una Map
Private Sub RDC_InsertOrderRow(OrderNumber As String)
Dim i As Int
Dim cmd As DBCommand
cmd.Initialize
For i = 0 To MapRowGrp.Size -1
Dim sRowGrp As RowList
sRowGrp = MapRowGrp.Get(i)
Dim sDes As String
sDes = sRowGrp.sDes.Trim
sDes = sDes.Replace(",", "")
sDes = sDes.Replace(".", "")
nSumTotRowOut = nSumTotRowOut + sRowGrp.nTot
cmd.Parameters = Array As Object(OrderNumber, sRowGrp.sCod, sDes, "", sRowGrp.nQta, sRowGrp.nPrzPie + sRowGrp.nPrzTY1 + sRowGrp.nPrzTY2, sRowGrp.nTot, sRowGrp.sPrint, "0", "", "", "", "0", sRowGrp.nProgre, sRowGrp.PrgPie, sRowGrp.PrgAgg)
cmd.Name = "Insert_OrderRow"
reqManager.ExecuteCommand(cmd, "Insert_OrderRow")
x = i
Next
End Sub
'se inserito ultima riga calcolo la somma
.....
Case "Insert_OrderRow"
If x = MapRowGrp.Size -1 Then
x = 0
RDC_GetSumRowOrd(sNewNumOrd)
End If
.....
Private Sub RDC_GetSumRowOrd(sOrd As String)
Dim cmd As DBCommand
cmd.Initialize
cmd.Parameters = Array As Object(sOrd)
cmd.Name = "Select_GetSumRowOrd"
reqManager.ExecuteQuery(cmd, 0, "Select_GetSumRowOrd")
End Sub
'se somma coincide procedo con inserimento di testata dell'ordine
B4X:
....
Case "Select_GetSumRowOrd"
Dim Record() As Object = result.Rows.Get(0)
nSumTotRowDB = Record(0)
If nSumTotRowOut <> nSumTotRowDB Then
Log(nRaundTotRow & " / " & nSumTotRowOut & "-" & nSumTotRowDB)
nRaundTotRow = nRaundTotRow + 1
If nRaundTotRow < 10 Then
Sleep(1000)
RDC_GetSumRowOrd(sNewNumOrd)
Else
.......
End If
Else
Log(nRaundTotRow & " / " & nSumTotRowOut & "-" & nSumTotRowDB)
RDC_InsertOrderNew(sNewNumOrd, _
mdoFunction.FormatDate(DateTime.Now,"yyyy-MM-dd"), _
mdoFunction.FormatDate(DateTime.Now,"HH:mm:ss"), _
Main.gName, _
lblTotale.Text, _'.Replace(",","."), _
"", _
lblPlace.Text, _
lblTable.text, _
mdoFunction.FormatDate(DateTime.Now,"yyyy-MM-dd HH:mm:ss"), _
"", _
"", _
"0", _
"0", _
"0", _
"0", _
"", _
"0", _
"0", _
"0", _
"1", _
Main.gIPDevice, _
"XSeO25", _
"", _
"", _
Main.gIDAnag, _
Main.gDateDelivery, _
Main.gTimeDelivery, _
Main.gPhone, _
Main.gTown, _
Main.gPayType)
End If
....
'Inserisco Testata Ordine
Private Sub RDC_InsertOrderNew(OrderNumber As String, OrderData As String, OrderTime As String, Name As String, ImportoTotale As Double, CodReparto As String, Coperti As Int, NumeroTavolo As String, OraAssegnaTav As String, OraStatus As String, DesStatus As String, StampaUnita As String, Aggiunta As String, PrintedORD As String, PrintedFISC As String, SconFisc As String, Blocco As String, Personale As String, Sconto As String, SeatClosed As String, PCOrd As String, TipoOrdine As String, NomeFile As String, PCConferma As String, IDAnag As Int, DataConsegna As String, OraConsegna As String, NumeroTelefono As String, LottPIva As String, PayType As String)
Dim cmd As DBCommand
cmd.Initialize
cmd.Parameters = Array As Object(OrderNumber, OrderData, OrderTime, Name, ImportoTotale, CodReparto, Coperti, NumeroTavolo, OraAssegnaTav, OraStatus, DesStatus, StampaUnita, Aggiunta, PrintedORD, PrintedFISC, SconFisc, Blocco, Personale, Sconto, SeatClosed, PCOrd, TipoOrdine, NomeFile, PCConferma, IDAnag, DataConsegna, OraConsegna, NumeroTelefono, LottPIva, PayType)
cmd.Name = "Insert_OrderNew"
reqManager.ExecuteCommand(cmd, "Insert_OrderNew")
End Sub
Verifico che la riga dell'ordine sia stata inserita
B4X:
Private Sub RDC_GetSumOrd(sOrd As String)
Dim cmd As DBCommand
cmd.Initialize
cmd.Parameters = Array As Object(sOrd)
cmd.Name = "Select_GetSumOrd"
reqManager.ExecuteQuery(cmd, 0, "Select_GetSumOrd")
End Sub
Bene. Sembra fatto.
Invece no. Riscontro problemi nell'inserimento delle righe di dettaglio
Riscontro diversi problemi.
Se provo con app in debug e jrdc2 in debug tutto funziona anche se le righe di dettaglio non vengono inserite nell'ordine in qui sono state inviate.
Se provo con app in release e jrdc2 in debug il 20% delle volte mi si pianta nell'inserimento delle righe di dettaglio
Se provo con app in debug e jrdc2 in release mi si pianta nell'inserimento delle righe di dettaglio
Idem con app in release.
C'è qualcuno cosi gentile da consigliarmi qualche soluzione?
Grazie