2016-04-01 7 views
0

Ich versuche, eine SQL-Android-Anwendung zu schreiben, die die Menge eines Inventars von einer Tabelle nimmt, um sie mit dem Preis des Elements in einer anderen Tabelle zu multiplizieren, um die Summe in einer anderen Spalte zu speichern. Basierend auf dem, was ich gelesen habe, scheint es ziemlich einfach zu sein, funktioniert aber nicht für mich. Ich habe mehrere Lösungen ausprobiert, aber an dieser Stelle habe ich den SQL-Code in eine separate Methode namens totalPrice() gestellt, die bei einem Klick in einer anderen Methode aufgerufen wird.Wie man SQL-Spalten aus 2 Tabellen multipliziert und in eine separate Spalte einfügt?

Ich habe eine andere Klasse, die die Methode innerhalb eines Tastendrucks aufruft.

public class AddInvoice extends AppCompatActivity { 
Button addInvoice; 
DbHelper db; 
EditText date, cid, item, size, invID, quantity; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_add_invoice); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    db = new DbHelper(this); 

    addInvoice = (Button) findViewById(R.id.btnAddToInvoice); 
    date = (EditText) findViewById(R.id.etDate); 
    cid = (EditText) findViewById(R.id.etCID); 
    item = (EditText) findViewById(R.id.ItemName); 
    size = (EditText) findViewById(R.id.etSize); 
    invID = (EditText) findViewById(R.id.etAddInventoryID); 
    quantity = (EditText) findViewById(R.id.etQuantity); 

    addInvoice.setOnClickListener(
      new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
       AddInvoice(); 
       AddOrderedItem(); 
       db.totalPrice(); 
       date.setText(""); 
       cid.setText(""); 
       item.setText(""); 
       size.setText(""); 
       invID.setText(""); 
       quantity.setText(""); 
       } 
      } 
    ); 
       getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
      } 

public void AddOrderedItem() { 

    boolean isInserted = db.addOrderedItem(item.getText().toString(), size.getText().toString(), Integer.parseInt(invID.getText().toString()), 
      Integer.parseInt(quantity.getText().toString())); 
    db.totalPrice(); 
     if (isInserted == true) 
      Toast.makeText(AddInvoice.this, "Item Inserted", Toast.LENGTH_SHORT).show(); 
     else 
      Toast.makeText(AddInvoice.this, "Item not Inserted", Toast.LENGTH_SHORT).show(); 
     } 

public void AddInvoice(){ 
    boolean isInserted = db.addInvoice(date.getText().toString(), cid.getText().toString()); 
     if (isInserted == true) 
      Toast.makeText(AddInvoice.this, "Invoice Inserted", Toast.LENGTH_SHORT).show(); 
     else 
      Toast.makeText(AddInvoice.this, "Invoice not Inserted", Toast.LENGTH_SHORT).show(); 
} 

}

Nun, wenn ich den Code der Wert ausführen, die in der Gesamtpreis Spalte gespeichert wird, ist null. Danke für jede Hilfe.

Antwort

0

Ich gehe davon aus, dass Sie im Grunde INNER ausführen wollen Abfrage folgenden JOIN:

SELECT column1 * column2 AS result FROM table1 t1 
    INNER JOIN table2 t2 dt ON t1.key = t2.key 

Und dann können Sie diesen Wert in Ihrem Java-Code zu verwenden.

+0

Ja, aber es speichert immer noch "Null" in der Spalte. Könnte es daran liegen, wie ich den Cursor oder die rawQuery-Methode mache? Ich habe versucht, eine ContentValues.put-Methode zu verwenden, aber ich kann eine Methode nicht als zweiten Parameter verwenden, es sei denn ich wickle es in die valueOf() -Methode, die "[email protected] –

+0

Vielleicht Ihr Problem speichert bezieht sich auf die Verwendung des Cursors Ich habe keine Erfahrung im Arbeiten mit Wunschcursorn, und ich schlage vor, sie überhaupt nicht zu benutzen, es sei denn, sie wird wirklich benötigt. – rxn1d

Verwandte Themen