テーブルからレコードを読み取り、別のテーブルにデータを挿入するコードに問題があります。すべての SQL トランザクションを実行するわけではありません。
コードは次のとおりです。
$(".btnRepetePed").live("click",function(){
var pedido = $(this).val();
db.transaction(function(tx){
console.log("Pedido:" + pedido);
tx.executeSql("SELECT p.pedido,p.cliente,p.obs,p.talao,p.obs,p.prazo,p.polvenda,p.datafat, p.tipo,p.valortotal,p.situacao,p.datacri,p.icms,p.cod_bonif,p.desc_bonif,p.cod_troca, pp.produto, pp.valor, pp.qtd, prod.peso, prod.descricao ,pp.desconto, pp.uni_embut, pp.quantidade FROM pedidos p INNER JOIN pedidos_produtos pp ON p.pedido = pp.pedido INNER JOIN produtos prod ON pp.produto=prod.codigo WHERE p.pedido=? ", [pedido], function(tx, rs){
var sql = "INSERT INTO carrinho (produto,descricao, peso, qtd, valor, desconto) VALUES(?,?,?,?,?,?)";
var len = rs.rows.length;
console.log("size:"+len);
var i = 0;
for(i=0;i<len;i++){
dados = [rs.rows.item(i).produto, rs.rows.item(i).descricao, rs.rows.item(i).peso,rs.rows.item(i).qtd, rs.rows.item(i).valor, rs.rows.item(i).desconto];
console.log(i);
(function(dados, sql) {
db.transaction(function(tx){
tx.executeSql(sql,dados,function(){
console.log(JSON.stringify(dados));
},function(e){
console.log("Código erro "+e.code);
console.log("Código erro "+e.message);
});
});
})(dados,sql);
}
alert("Finished");
goURL("pedidos.html#novoPedido");
},fail);
});
そして、コンソールからの出力は次のとおりです。
- D/CordovaLog(17822): サイズ:4
- D/CordovaLog(17822): 0
- D/CordovaLog(17822): 1
- D/CordovaLog(17822): 2
- D/CordovaLog(17822): 3
ここまではいい。4 つのレコードと「console.log(i);」があります。4 回実行されます。
'alert("Finished");' から OK ボタンをタッチした後でのみ コマンドを実行すると、トランザクションからの次のログが表示されます。
- D/CordovaLog(17822): [1010012,"F.TRIGO T1 MARIA INES C/FERMENTO 1KG",1,1,1.76,null]
- D/CordovaLog(17822): [1020011,"F.TRIGO T1 REDE MACRO 5kg",5,2,6.53,null]
- D/CordovaLog(17822): [1020004,"F.TRIGO T1 FLOCOS DE NEVE 1kg",1,112,1.3,null]
2 つ、場合によっては 3 つのトランザクション ログが表示されることがありますが、4 つのトランザクションすべてが実行されることはありません。
道に迷いました。何か案は?