I'm trying to create a simple cash system (cash entries minus cash outflows equal balance). And I made a method in the Expense class that goes into the bank with the custom query:
(SELEC SUM(VALOR) FROM DESPESA WHERE VALOR IS NOT NULL AND DATA='USUARIO ESCOLHE')
In the Expense class this looks like this:
public Despesa somarValoresDespesa(Despesa despesa, LocalDate data){
String sql = "SELECT SUM(valor) FROM despesa WHERE valor IS NOT NULL AND data=?";
//double soma = 0.0;
Despesa retorno = new Despesa();
data = despesa.getData();
try{
PreparedStatement stmt = conexao.prepareStatement(sql);
stmt.setDate(1, Date.valueOf(data));//Estava "Date.valueOf(data)"
ResultSet resultado = stmt.executeQuery();
while (resultado.next()){
double soma = resultado.getDouble(1);
despesa.setValor(soma);
retorno = despesa;
}
}catch (SQLException ex){
Logger.getLogger(DespesaDAO.class.getName()).log(Level.SEVERE, null, ex);
}
return retorno;
}
And in the controller like this:
@FXML
public void somaVlrDespesa(Despesa despesa, LocalDate data) throws IOException {
//Despesa despesa = new Despesa();
//LocalDate data;
data = dtData.getValue();
if(despesa != null && data != null){
despesa = despesaDAO.somarValoresDespesa(despesa, data);
txValorTotalDespesas.setText(String.valueOf(despesa.getValor()));
System.out.println(despesa);
} else {
dtData.setValue(LocalDate.now());
txValorTotalDespesas.setText(" ");
}
}
In view this controller has a button and a text box. Then the user chooses the date and clicks the button and the method makes the query and SHOULD set the value of the bank. SHOULD. But this exception:
Caused by: javafx.fxml.LoadException: Error resolving onAction='#somaVlrDespesa',
either the event handler is not in the Namespace or there is an error in the script.
file:/D:/Caxa-Renova/cxren/dist/run1293869844/cxren.jar!/cxren/view/FXMLAnchorPaneCadastroDespesa.fxml:54
at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2597)
at javafx.fxml.FXMLLoader.access$100(FXMLLoader.java:103)
at javafx.fxml.FXMLLoader$Element.processEventHandlerAttributes(FXMLLoader.java:610)
at javafx.fxml.FXMLLoader$ValueElement.processEndElement(FXMLLoader.java:770)
at javafx.fxml.FXMLLoader.processEndElement(FXMLLoader.java:2823)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2532)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3214)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3175)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3148)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3124)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3104)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3097)
at cxren.controller.FXMLVBoxPrincipalController.eventoBotaoAbrirCadastroDespesa(FXMLVBoxPrincipalController.java:38)
... 58 more
It says that you do not find the #somaVlrDespesa
method. But FXML is saved correct and if I put something out (System.exit (0)) in place, it gives no error.
What can it be?
If you need all the classes, I'll send them.
UPDATE follows the FXML of this controller
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.text.*?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane id="AnchorPane" fx:id="ancorPane" prefHeight="600.0" prefWidth="1200.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cxren.controller.FXMLAnchorPaneCadastroDespesaController">
<children>
<SplitPane dividerPositions="0.7587646076794657" layoutX="6.0" layoutY="104.0" prefHeight="484.0" prefWidth="1200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="50.0">
<items>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="548.0" prefWidth="432.0">
<children>
<TableView fx:id="tbCadastroDespesa" prefHeight="550.0" prefWidth="906.0">
<columns>
<TableColumn fx:id="tbColunaData" prefWidth="91.0" text="DATA" />
<TableColumn fx:id="tbColunaNome" prefWidth="123.0" text="NOME" />
<TableColumn fx:id="tbColunaValor" prefWidth="109.0" text="VALOR" />
<TableColumn fx:id="tbColunaDescrição" prefWidth="581.0" text="DESCRIÇÃO" />
</columns>
</TableView>
</children>
</AnchorPane>
<AnchorPane prefHeight="160.0" prefWidth="514.0">
<children>
<DatePicker fx:id="dtData" layoutX="97.0" layoutY="49.0" prefHeight="25.0" prefWidth="175.0" />
<ComboBox fx:id="cbNome" layoutX="97.0" layoutY="117.0" prefHeight="25.0" prefWidth="175.0" promptText="Escolha o Tipo..." />
<TextField fx:id="txValor" layoutX="97.0" layoutY="201.0" prefHeight="25.0" prefWidth="175.0" />
<TextField fx:id="txDescrição" layoutX="97.0" layoutY="319.0" prefHeight="25.0" prefWidth="175.0" />
<Button fx:id="btCadInserir" layoutX="97.0" layoutY="439.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="175.0" text="INSERIR" AnchorPane.rightAnchor="14.0" />
<Label layoutX="14.0" layoutY="53.0" text="DATA" />
<Label layoutX="14.0" layoutY="121.0" text="NOME" />
<Label layoutX="14.0" layoutY="204.0" text="VALOR" />
<Label layoutX="14.0" layoutY="323.0" text="DESCRIÇÃO" />
<Button fx:id="btCadDespesaVoltar" layoutX="220.0" layoutY="509.0" mnemonicParsing="false" onAction="#eventoBotaoVoltarInicio2" prefHeight="25.0" prefWidth="53.0" text="<--" AnchorPane.rightAnchor="14.0" />
<Label alignment="CENTER" layoutX="106.0" layoutY="513.0" text="Voltar ao Inicio">
<font>
<Font name="System Italic" size="12.0" />
</font>
</Label>
</children>
</AnchorPane>
</items>
</SplitPane>
<Label layoutX="14.0" layoutY="14.0" text="CADASTRO DE ITENS DE DESPESA - CAIXA RENOVA" textFill="#5341ab">
<font>
<Font name="System Bold" size="18.0" />
</font>
</Label>
<Label layoutX="811.0" layoutY="19.0" text="TOTAL DAS DESPESAS:" />
<TextField fx:id="txValorTotalDespesas" layoutX="940.0" layoutY="15.0" prefHeight="25.0" prefWidth="175.0" />
<Button fx:id="btCarregaValor" layoutX="496.0" layoutY="15.0" mnemonicParsing="false" onAction="#somaVlrDespesa" text="MOSTRA TOTAL DE DESPESAS POR DATA" />
</children>
</AnchorPane>
Thank you. PLACING IMPORTS REQUESTED
mport cxren.model.dao.DespesaDAO;
import cxren.model.database.BancoDeDados;
import cxren.model.database.DatabaseFactory;
import cxren.model.domain.Despesa;
import java.io.IOException;
import java.net.URL;
import java.sql.Connection;
import java.time.LocalDate;
import java.util.List;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.DatePicker;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.AnchorPane;