0
well I am trying to register an order, however I have two tables, order and ordering, and a screen where I fill all the information and click to complete.
First the application makes an Insert in the requested table, then makes another in the requested table_product, but to make the Insert in the requested table_product the application must pick the order id, so I made a select searching for that id before performing the insertion, however I am not able to recover this id, let’s go to the codes:
btnConclude:
Button confirma = (Button) findViewById(R.id.btnConfirmar);
confirma.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final BancoController crud = new BancoController(getBaseContext());
EditText data = (EditText) findViewById(R.id.edtData);
EditText emissao = (EditText) findViewById(R.id.edtEmissao);
EditText obs = (EditText) findViewById(R.id.edtObs);
String dataString = data.getText().toString();
String emissaoString = emissao.getText().toString();
String obsString = obs.getText().toString();
String resultadoPe;
String resultadoPp;
Spinner spClientes = (Spinner) findViewById(R.id.spCliente);
Spinner spCarteira = (Spinner) findViewById(R.id.spCarteira);
Spinner spPagamentos = (Spinner) findViewById(R.id.spPagamento);
SQLiteCursor dadosClientes = (SQLiteCursor) spClientes.getAdapter().getItem(
spClientes.getSelectedItemPosition());
SQLiteCursor dadosCarteira = (SQLiteCursor) spCarteira.getAdapter().getItem(
spCarteira.getSelectedItemPosition());
SQLiteCursor dadosPagamentos = (SQLiteCursor) spPagamentos.getAdapter().getItem(
spPagamentos.getSelectedItemPosition());
String idCliente = String.valueOf(dadosClientes.getInt(0));
String idCarteira = String.valueOf(dadosCarteira.getInt(0));
String idPagamento = String.valueOf(dadosPagamentos.getInt(0));
crud.op = 2;
resultadoPe = crud.insereDados(null, null, null, null, null, null, null, null,
null, null, null, null, idCliente, idPagamento, idCarteira, dataString,
emissaoString, obsString, null, null, null, null, null);
Toast.makeText(getApplication(), resultadoPe, Toast.LENGTH_LONG).show();
final Cursor cursor = crud.pegarIdPedido();
pedId = cursor.getString(cursor.getColumnIndexOrThrow(CriaBanco.getPedId()));
ArrayList<Produtos> produtos = produtosAdapter.getProdutos();
int linhas = produtos.size();
for (int i = 0; i < linhas; i++ ){
crud.op = 3;
Produtos linha = produtos.get(i);
String id = linha.getId();
String qtd = linha.getQuantidade();
String preco = linha.getPreco();
int ipreco = Integer.parseInt(preco);
int iqtd = Integer.parseInt(qtd);
int itotal = ipreco / iqtd;
String stotal = String.valueOf(itotal);
resultadoPp = crud.insereDados(null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, pedId,
id, qtd, preco, stotal);
Toast.makeText(getApplication(), resultadoPp, Toast.LENGTH_LONG).show();
}
}
});
Pegidpedido:
public Cursor pegarIdPedido(){
Cursor cursor;
db = banco.getReadableDatabase();
cursor = db.rawQuery("SELECT MAX(" + banco.getPedId() + ") AS " + banco.getPedTabela() +
" FROM " + banco.getPedTabela(), null);
if(cursor != null){
cursor.moveToFirst();
}
db.close();
return cursor;
}
it is on this line that this the problem:
pedId = cursor.getString(cursor.getColumnIndexOrThrow(CriaBanco.getPedId()));
Can someone help me?
Note: When I run the app and arrive at this snippet, no error occurs on Android Monitor, but the application is forced to close.
thanks in advance!
---EDIT---
insert data:
public String insereDados
(String nome, String apelido, String cpf, String rg, String endereco, String bairro,
String municipio, String uf, String cep, String email, String fone, String cla,
String par, String car, String cpag, String data, String emissao, String obs, String ped,
String pro, String quantidade, String unitario, String item /**String lpPcodigo,
String lpDescri, String lpQtd, String lpPreco*/){
long resultadoC = -1;
long resultadoPe = -1;
long resultadoPr = -1;
//long resultadoLp = -1;
db = banco.getWritableDatabase();
switch (op){
case 1://Insere cliente:
ContentValues cvc;
cvc = new ContentValues();
cvc.put(CriaBanco.getParNome(), nome);
cvc.put(CriaBanco.getParApelido(), apelido);
cvc.put(CriaBanco.getParCpf(), cpf);
cvc.put(CriaBanco.getParRg(), rg);
cvc.put(CriaBanco.getParEndereco(), endereco);
cvc.put(CriaBanco.getParBairro(), bairro);
cvc.put(CriaBanco.getParMunicipio(), municipio);
cvc.put(CriaBanco.getParUf(), uf);
cvc.put(CriaBanco.getParCep(), cep);
cvc.put(CriaBanco.getParEmail(), email);
cvc.put(CriaBanco.getParFone(), fone);
resultadoC = db.insert(CriaBanco.getParTabela(), null, cvc);
break;
case 2://Insere Pedido
ContentValues cvpe;
cvpe = new ContentValues();
cvpe.put(CriaBanco.getClaId(), cla);
cvpe.put(CriaBanco.getPparId(), par);
cvpe.put(CriaBanco.getCarId(), car);
cvpe.put(CriaBanco.getCpagId(), cpag);
cvpe.put(CriaBanco.getPedData(), data);
cvpe.put(CriaBanco.getPedEmissao(), emissao);
cvpe.put(CriaBanco.getPedObs(), obs);
resultadoPe = db.insert(CriaBanco.getPedTabela(), null, cvpe);
break;
case 3: // Insere Pedido Produto
ContentValues cvpr;
cvpr = new ContentValues();
cvpr.put(CriaBanco.getPppedId(), ped);
cvpr.put(CriaBanco.getPpproId(), pro);
cvpr.put(CriaBanco.getPproQnt(), quantidade);
cvpr.put(CriaBanco.getPproUnit(), unitario);
cvpr.put(CriaBanco.getPproItem(), item);
resultadoPr = db.insert(CriaBanco.getPprodTabela(), null, cvpr);
break;
}
db.close();
if (resultadoC != -1){
return "Cliente inserido com sucesso!";
}else if(resultadoPe != -1 || resultadoPr != -1){
return "Pedido realizado com sucesso!";
}/**else if(resultadoLp != -1) {
return "Produto adicionado a lista com sucesso!";
}*/else{
return "Erro ao inserir registro (cliente/pedido)!";
}
}
Post the method you use to make the Insert of the request.
– ramaral
updated the post
– Taha tsu