Daten per SQL in JTable (evtl erweiterbar?!)

Maddili

Mitglied
hi,
nicht gleich schimpfen, dass ich dieses Thema eröffnet habe. Aber ich komm überhaupt nicht klar. Hab schon ziemlich viel gelesen, aber es will einfach nicht klappen.

Folgendes:
habe eine Access Datenbank, und will in Java eine Tabelle mit den DB-Daten befüllen.

mein Statement lautet folgendermaßen:

Java:
String stmt = "TRANSFORM Sum(tbl_Zeit.Verfuegbar) AS SummevonVerfuegbar" +
				"SELECT tbl_Zeit.ProjektID, tbl_Zeit.PersNr, tbl_Mitarbeiter.MA_NName, " +
				"tbl_Mitarbeiter.MA_VName, tbl_Mitarbeiter.MA_Abteilung, tbl_Mitarbeiter.MA_Funktion" +
				"FROM tbl_Mitarbeiter INNER JOIN tbl_Zeit ON tbl_Mitarbeiter.MA_PersNr = tbl_Zeit.PersNr" +
				"GROUP BY tbl_Zeit.ProjektID, tbl_Zeit.PersNr, tbl_Mitarbeiter.MA_NName, tbl_Mitarbeiter.MA_VName," +
				"tbl_Mitarbeiter.MA_Abteilung, tbl_Mitarbeiter.MA_Funktion "+
				"PIVOT Format$([DDatum],\"yyyy/mm\")";

Meine Abfrage liefert im Access folgendes Ergebnis:

7



Die Tabelle soll (sagen wir mal auf 5 Jahre, also bis 2014, erweiterbar sein.
Aber vorerst wäre ich mit 3 monaten (wie zu sehen) zufrieden.


Im Prinzip möchet ich ein zweidimensionales Objekt, welches alle Daten (rows) enthält, um mit diesem Objekt weiterarbeiten zu können. (Für meine spezielle JTable mit GroupableTableHeader).

Kann mir vielleicht jemand weiterhelfen**** Bütte bütte bütte.

Grüße,
Maddin
 
Kann mir keiner helfen**** Wenn ihr noch Infos benötigt, bitte schreibt mir. Ich bin nicht so der Pro-Programmer.

Ich habe eben versucht, die Daten (resultierend aus der sql query) in ein mehrdimensioinales Feld zu schreiben:
folgender Code:

Java:
package test;

import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.TableColumn;

public class SearchPanelCoC extends JPanel{

	/**
	 * Always implements <br>
	 * Wird immer implementiert
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * Main Panel <br>
	 * Hintergrund Panel
	 */
	public static JPanel getSearchPanelCoC;

	/**
	 * JDBCAdapter for query execution<br>
	 * JDBCAdapter um SQL Anweisung auszuführen
	 */
	JDBCAdapter dtcoc;

	/** JTable tableView */
	public static JTable tableView;


	/**
	 * Field for all data <br>
	 * Feld für alle Daten
	 */
	public static Object[][] data;

	public static Object[] COC_ProjektID;
	public static Object[] COC_PersNr;
	public static Object[] COC_NName;
	public static Object[] COC_VName;
	public static Object[] COC_Funktion;
	public static Object[] COC_Abteilung;


	public static Object[] y1_01;
	public static Object[] y1_02;
	public static Object[] y1_03;
	public static Object[] y1_04;
	public static Object[] y1_05;
	public static Object[] y1_06;
	public static Object[] y1_07;
	public static Object[] y1_08;
	public static Object[] y1_09;
	public static Object[] y1_10;
	public static Object[] y1_11;
	public static Object[] y1_12;



	/** JPanel searchPanelMA */
	public static JPanel searchPanelcoc;

	/** JScrollPane scrollpane */
	public static JScrollPane scrollpane;

	/** JPanel searchPanel */
	public static JPanel searchPanelCoC;


	public  SearchPanelCoC(String stmt) {
		searchPanelCoC = new JPanel();
		searchPanelCoC.setSize(300,800);
		dtcoc = new JDBCAdapter();
		System.out.println("stmt:" + stmt);
		dtcoc.executeQuery(stmt);


		
		tableView = new JTable(dtcoc);
		tableView.setRowSelectionAllowed(true);
		tableView.setColumnSelectionAllowed(false);
		tableView.setAutoscrolls(true);
		tableView.getTableHeader().setResizingAllowed(true);
		tableView.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		tableView.setDragEnabled(true);
		tableView.getTableHeader().setReorderingAllowed(true);


		System.out.println("searchpanelcoc - jdbc.rows.size: "  + JDBCAdapter.rows.size());


		// Felder mit der Größe der Anzahl der Datensätze, werden gefüllt mit
		// Werten aus der Suchtabelle
		COC_ProjektID = new Object[JDBCAdapter.rows.size()];
		COC_PersNr = new Object[JDBCAdapter.rows.size()];
		COC_NName = new Object[JDBCAdapter.rows.size()];
		COC_VName = new Object[JDBCAdapter.rows.size()];
		COC_Funktion = new Object[JDBCAdapter.rows.size()];
		COC_Abteilung = new Object[JDBCAdapter.rows.size()];
		y1_01 = new Object[JDBCAdapter.rows.size()];
		y1_02 = new Object[JDBCAdapter.rows.size()];
		y1_03 = new Object[JDBCAdapter.rows.size()];
		y1_04 = new Object[JDBCAdapter.rows.size()];
		y1_05 = new Object[JDBCAdapter.rows.size()];
		y1_06 = new Object[JDBCAdapter.rows.size()];
		y1_07 = new Object[JDBCAdapter.rows.size()];
		y1_08 = new Object[JDBCAdapter.rows.size()];
		y1_09 = new Object[JDBCAdapter.rows.size()];
		y1_10 = new Object[JDBCAdapter.rows.size()];
		y1_11 = new Object[JDBCAdapter.rows.size()];
		y1_12 = new Object[JDBCAdapter.rows.size()];


		for (int i = 0; i < JDBCAdapter.rows.size(); i++) {
			System.out.println("i = " + i);

			COC_ProjektID[i] = tableView.getValueAt(i, 0);
			COC_PersNr[i] = tableView.getValueAt(i, 1);
			COC_NName[i] = tableView.getValueAt(i, 2);
			COC_VName[i] = tableView.getValueAt(i, 3);
			COC_Funktion[i] = tableView.getValueAt(i,4);
			COC_Abteilung[i] = tableView.getValueAt(i, 5);
			y1_01[i] = tableView.getValueAt(i, 6);
			y1_02[i] = tableView.getValueAt(i, 7);
			y1_03[i] = tableView.getValueAt(i, 8);
			y1_04[i] = tableView.getValueAt(i, 9);
			y1_05[i] = tableView.getValueAt(i, 10);
			y1_06[i] = tableView.getValueAt(i, 11);
			y1_07[i] = tableView.getValueAt(i, 12);
			y1_08[i] = tableView.getValueAt(i, 13);
			y1_09[i] = tableView.getValueAt(i, 14);
			y1_10[i] = tableView.getValueAt(i, 15);
			y1_11[i] = tableView.getValueAt(i, 16);
			y1_12[i] = tableView.getValueAt(i, 17);


		}
		// Die 5 Felder zu einem mehrdimensionalen Feld zusammen führen
		data = new Object[JDBCAdapter.rows.size()][18];


		for (int i = 0; i < JDBCAdapter.rows.size(); i++) {
			data[i][0] = COC_PersNr[i];
			data[i][1] = COC_PersNr[i];
			data[i][2] = COC_NName[i];
			data[i][3] = COC_VName[i];
			data[i][4] = COC_Funktion[i];
			data[i][5] = COC_Abteilung[i];
			data[i][6] = y1_01[i];
			data[i][7] = y1_02[i];
			data[i][8] = y1_03[i];
			data[i][9] = y1_04[i];
			data[i][10] = y1_05[i];
			data[i][11] = y1_06[i];
			data[i][12] = y1_07[i];
			data[i][13] = y1_08[i];
			data[i][14] = y1_09[i];
			data[i][15] = y1_10[i];
			data[i][16] = y1_11[i];
			data[i][17] = y1_12[i];


		}


		// Notwendig damit die Tabelle mit KLicks auf Spaltennamen sortiert
		// werden kann
/*		MyTableModelCoC mcoc = new MyTableModelCoC();
		TableSorter sorter = new TableSorter(mcoc);
		sorter.setTableHeader(tableView.getTableHeader());
		sorter.isCellEditable(0, 0);

		tableView.setModel(sorter);
		tableView.getTableHeader()
				.setToolTipText("SearchPanel COC");
		// Eigentliche Erzeugung der Tabelle
		TableColumn col = tableView.getColumnModel().getColumn(18);


		col = tableView.getColumnModel().getColumn(17);
		col.setMinWidth(30);
		col.setPreferredWidth(30);
		col = tableView.getColumnModel().getColumn(16);
		col.setMinWidth(30);
		col.setPreferredWidth(30);
		col = tableView.getColumnModel().getColumn(15);
		col.setMinWidth(30);
		col.setPreferredWidth(30);
		col = tableView.getColumnModel().getColumn(14);
		col.setMinWidth(30);
		col.setPreferredWidth(30);
		col = tableView.getColumnModel().getColumn(13);
		col.setMinWidth(30);
		col.setPreferredWidth(30);
		col = tableView.getColumnModel().getColumn(12);
		col.setMinWidth(30);
		col.setPreferredWidth(30);
		col = tableView.getColumnModel().getColumn(11);
		col.setMinWidth(30);
		col.setPreferredWidth(30);
		col = tableView.getColumnModel().getColumn(10);
		col.setMinWidth(30);
		col.setPreferredWidth(30);
		col = tableView.getColumnModel().getColumn(9);
		col.setMinWidth(30);
		col.setPreferredWidth(30);
		col = tableView.getColumnModel().getColumn(8);
		col.setMinWidth(30);
		col.setPreferredWidth(30);
		col = tableView.getColumnModel().getColumn(7);
		col.setMinWidth(30);
		col.setPreferredWidth(30);
		col = tableView.getColumnModel().getColumn(6);
		col.setMinWidth(30);
		col.setPreferredWidth(30);
		col = tableView.getColumnModel().getColumn(5);
		col.setMinWidth(30);
		col.setPreferredWidth(30);
		col = tableView.getColumnModel().getColumn(4);
		col.setMinWidth(30);
		col.setPreferredWidth(30);
		col = tableView.getColumnModel().getColumn(3);
		col.setMinWidth(30);
		col.setPreferredWidth(30);
		col = tableView.getColumnModel().getColumn(2);
		col.setMinWidth(150);
		col.setPreferredWidth(150);
		col = tableView.getColumnModel().getColumn(1);
		col.setMinWidth(30);
		col.setPreferredWidth(30);
		col = tableView.getColumnModel().getColumn(0);
		col.setMinWidth(0);
		col.setPreferredWidth(0);
		col.setMaxWidth(0);
		// scrollbare Tabelle
		scrollpane = new JScrollPane(tableView);
		scrollpane
				.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
		Output.component_action();
		searchPanelCoC.add(scrollpane);
		getSearchPanelCoC = searchPanelCoC;
		*/
	}





}

Abfrage ist mir aufgefallen, dass Anzahl der Rows nicht stimmt:
Lt. System.out.println(JdbcAdapter.rows.size) sind es elf Rows.

Allerdings sind es mehr wie elf. Im Mom. sind es 14. (zum Beweis:
smu0wy.jpg
)

Jemand ne Idee, was falsch läuft?

Gruß,
Maddin
 
Zuletzt bearbeitet:
Keiner ne Idee?

Bitte Leute ****** Ich komm überhaupt nicht weiter (seit ZWEI Tagen!!)

Meiner Meinung liegt es daran, dass ich die Daten nicht ins Array (data[][]) reinbekomme.

Was mach ich falsch? Sagt, wenn ihr mehr Infos benötigt.
 
Zurück