Zum Inhalt springen

AJRames

Mitglieder
  • Gesamte Inhalte

    22
  • Benutzer seit

  • Letzter Besuch

  1. Hm, ok....wär halt weniger arbeit für den Webserver, darum dacht ich mir lös ich das mit so ne procedure... Aber dann halt nicht trotzdem danke!
  2. Hi Leut, ich hab n kleines Problem und mein "Lösungsweg" funktioniert leider nicht. Folgendes: Ich schreibe einen Datensatz in eine Tabelle. Mit 2 Werten aus diesem Datensatz möchte ich eine Rechenoperation durchführen (spalte 1 - spalte 2 = Inhalt von Spalte 3). Nun habe ich versucht dafür einen Trigger zu schreiben, aber das geht nicht, da ich auf die Tabelle, auf die der Datensatz geschrieben wird den trigger ansetz... Da kommt die Fehlermeldung: "#1442 - Can't update table 'a_num_ranges' in stored function/trigger because it is already used by statement which invoked this stored function/trigger." Der Trigger sieht ungefähr so aus: CREATE TRIGGER calc_count_range AFTER INSERT ON test FOR EACH ROW BEGIN UPDATE test SET count = NEW.short_from-NEW.short_to; END Jemand ne idee?
  3. Ja, 31.07 sollte da stehn Mein Fehler... Aber anscheinend kann mir wohl keiner grad weiter helfen...
  4. SELECT * FROM (SELECT MAX(SUPPORT) AS SUPPORT, KDNR FROM TABELLE GROUP BY KDNR) WHERE SUPPORT < '"+end+"'; 'end' ist hierbei das Datum das ich manuell in mein Programm eingebe. Prizipiell ists das! Doch ich kann nicht mehr Als KDNR und das Supportdatum ausgeben. Ich bräuchte eigentlich dort auch alle felder.....Also: SELECT * FROM (SELECT * , MAX(SUPPORT) AS SUPPORT FROM.... Aber das nimmter nicht weil ja Support in dem * auch drin ist... Sobald ich mehr eingeb, gibts ne Fehlermeldung, zb: SELECT * FROM (SELECT MAX(SUPPORT) AS SUPPORT, KDNR, ANSPRECHPARTNER... FROM ... Fehler: Not in aggregate function or group by clause...
  5. Ja Group by hab ich mir auch gedacht, aber das kann ich meines wissens nur auf aggregatsfunktionen anwenden, das geht hier ja nicht.... (so ganz unwissend bin ich dann doch nicht ^^ ) @Amstelchen: Jep, ist ein Datumsfeld. Eigentlich führe ich die Abfrage auf einer Tabelle durch. Diese hat die Spalten: KDNR, Produkt, noch einige, Support. Ich bräucht die Infos vom "ältesten" (wenn mans so nennen will)
  6. Hi Leute! Ich weiss wieder nicht wie ich das lösen sollt. Folgender Aufbau. Ich habe Firmen in der Datenbank. Diese Firmen besitzen mehrere Produkte. Auf diese gekauften Produkte haben die Firmen jeweils Supportverträge. Z.b. Die Firma "FISI" hat ein Produkt "EINS" dessen Support am 31.05.2009 endet. und ein Produkt namens "ZWEI" dessen Support am 31.06.2009 endet. Nun möchte ich mit meiner Abfrage alle Firmen (und deren infos) ausgeben bei denen ein Produkt bis zum 31.07.2009 ausläuft. Theoretisch so ähnlich: SELECT DISTINCT KDNR FROM TABELLE WHERE SUPPORT < '31.07.2009' liefert das korrekte Ergebnis. Aber ich benötige mehr als nur die KDNR... Ein SELECT DISTINCT * geht ja nicht.... SELECT * FROM TABELLE WHERE SUPPORT < '31.07.2009'); Zeigt mir die eine Firma öfter an...das sollte auch nicht sein... Ich brauche die Firma nur einmal, damit ich weiß das bei Firma "Heinz" der support bis zum 31.07.2009 ausläuft. Jemand ne Idee?
  7. Danke nochmal Echt ne schwere Geburt, aber habs jetz fast, nur noch eine Frage. Bei mir siehts grad so aus das er nur die Uhrzeiten und Anfragen ausgibt wo bereits eine Anfrage war. Sprich so: 16.30 --> 9 16:45 --> 1 17:00 --> 1 Ich brauch jedoch auch die Info das z.b. um 7:00 Uhr keine Anfrage kam... Also ne ganze liste von 7 -18 Uhr....wie mach ich das am besten? z.B. 7:00 --> 0 7:15 --> 1 usw
  8. Danke für die schnelle Antwort! Aber ich versteh leider nicht wofür diese Zeile da ist: date_format(Datum, '%h:%i' )as uhrzeit, Ich glaub ich müsste sie verstehen, da ich mit HSQL arbeite und die entsprechend umändern muss! Danke!
  9. Hi Leute. Brauch mal dringend eure Hilfe. Ich muss eine Abfrage erstellen und weiss nicht weiter. Folgendes: Ich hab eine Tabelle die Anfragen speichert. Ich muss jetz ausgeben wieviele Anfragen im ersten Quartal eingegangen sind. Soweit sogut, aber das jetz auch noch mit Uhrzeit. Ich hätte es gern so das die Ausgabe der View oder Abfrage die ich erstelle so aussieht: Zeile1: Anfragen um 7.15 --> 30 Zeile2: Anfragen um 7.30 --> 15 Zeile3: Anfragen um 7.45 --> 12 usw bis 18 Uhr. Bin grad knapp davor ne While schleife zu machen und die Uhrzeit dann hochzählen zu lassen: SELECT COUNT(ID) FROM ANFRAGEN WHERE UHRZEIT LIKE ? AND Datum BETWEEN '2009-01-01' AND '2009-04-30'; Statt ? dann immer die Uhrzeit die ich in der While neu erstelle. Aber das wären pro Quartal 44 abfragen....nicht das Gelbe vom Ei.... Könnt ihr mir evtl. helfen? Danke schonmal, Gruß AJ
  10. Also ich häng momentan an dem Punkt nicht bei jedem Tastendruck eine Verbindung herzustellen. Hab jetzt die Klasse Verb um die Verbindung zu schaffen, dich habe ich ausgelagert: import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Verb { public Connection con = null; public void verbinden(){ try { Class.forName("org.hsqldb.jdbcDriver"); } catch (Exception e) { System.out.println("ERROR: failed to load HSQLDB JDBC driver."); e.printStackTrace(); } try { con = DriverManager.getConnection( "jdbc:hsqldb:hsql://192.168.0.3/TrinityTestAJ", "sa", ""); } catch (SQLException e) { System.out.println("Keine Verbindung!"); } } } in der DROP hab ich halt das hier in der Variablendeklaration: private Verb v = new Verb(); Und test2 sieht jetz so aus: public DROP test2() throws SQLException { v.verbinden(); PreparedStatement ps = v.con.prepareStatement("SELECT NAME FROM ADRESSEN WHERE NAME LIKE '"+getText()+"%';"); ResultSet res = ps.executeQuery(); while (res.next()) { this.addData(res.getString("NAME")); } res.close(); v.con.close(); ps.close(); return this; } Die Verbindung wird logischerweise immernoch hergestellt...es ist halt so schöner und ich hab PreparedStatements benutzt (ich hoff richtig). Wie mache ich das das ich die Connection in ner Privaten Variable speicher, damit die Verbindung nicht immer hergestellt wird...? Sorry, aber wie gesagt, ich bin totaler neuling in dem Gebiet und die "proffessionellen" feinheiten von Java hab ich auch noch nicht so raus... Ist grad echt depremierend das ichs net hinbekomm des zeug so hinzukriegen das es effizient läuft Ich hoff es entspricht schon ein wenig dem wie du dir das vorstellst dim.
  11. Hi und Danke Ja, habs jetz so hinbekommen das es läuft, nur leider wird bis jetzt bei jedem Tastendruck eine neue DB-Verbdingung aufgebaut...Das möchte ich noch verhindern....irgendwie. Das mit den PreparedStatements ist auf jedenfall ne gute idee, kannte die nicht, da ich noch nicht so fit bin! Danke schonmal!
  12. Hi Leute! Brauch eure Hilfe, ich komm nicht mehr weiter, obwohl ich schon recht weit gekommen bin... Folgendes: Ich hab ne Datenbank im Hintergrund laufen und ein TextField. Dieses TextField überwache ich mit nem KeyListener und frag während der Eingabe nach ob die Daten in der DB vorhanden sind, falls es einen entsprechenden Eintrag gibt, füllt der Listener automatisch des Feld komplett (Autovervollständigung). Z.B. wenn ich "Ba" eingebe füllt er das TextFeld mit dem Namen "Bachmann". Nur leider klappt das nur auf die eine weise (Ich lass ne for schleife vorher laufen um die Eintrage aus der DB einzulesen). Die For schleife braucht jedoch ne weile und schluckt ressourcen. Ich möchte dies jedoch ohne for, sondern direkt auf die DB zugreifen. Hier nun der Code. Die GUI: package Richtig; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.*; import java.sql.SQLException; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JTextField; public class TestKlasse2 extends JFrame{ private static final long serialVersionUID = 1L; private JButton bladefirma, bkundeninfo; private JLabel label, iplabel,jlKunden; private JPanel labelpanel, buttonpanel, editpanel; private JTextArea edit, edit2; private JTextField edit3, ip1, jtfKunden; private DROP d; public static String ipadresse; Ohr o = new Ohr(); public TestKlasse2() throws SQLException { super(); this.setTitle("AJ's"); bladefirma = new JButton("Drück mich"); bkundeninfo = new JButton("Info zum Kunden"); label = new JLabel("KundenNr:"); iplabel = new JLabel("ServerIP:"); jlKunden = new JLabel("Kundenname: "); labelpanel = new JPanel(); d = new DROP(50); edit = new JTextArea(); edit2 = new JTextArea(); edit3 = new JTextField(15); ip1 = new JTextField(15); jtfKunden = new JTextField(15); editpanel = new JPanel(new GridLayout(1,2)); editpanel.add(edit); editpanel.add(edit2); labelpanel.setLayout(new GridLayout(3,1)); labelpanel.add(label); labelpanel.add(edit3); labelpanel.add(iplabel); labelpanel.add(ip1); labelpanel.add(jlKunden); labelpanel.add(d.test2()); buttonpanel = new JPanel(); buttonpanel.setLayout(new GridLayout(1,2)); buttonpanel.add(bladefirma); buttonpanel.add(bkundeninfo); this.getContentPane().setLayout(new BorderLayout()); this.getContentPane().add(labelpanel, BorderLayout.NORTH); this.getContentPane().add(editpanel, BorderLayout.CENTER); this.getContentPane().add(buttonpanel,BorderLayout.SOUTH); bladefirma.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { ipadresse = ip1.getText(); o.ladeFirmenBez(edit); } }); bkundeninfo.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ ipadresse = ip1.getText(); edit2.append(o.infoZumKunden(edit3.getText())); edit2.append("\n"); } }); /**this.addKeyListener(new KeyAdapter(){ @Override public void keyTyped(KeyEvent e) { System.out.println("Jep"); } }); */ this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Die Klasse für das TextFeld zur Verfollständigung: package Richtig; import java.awt.event.KeyListener; import java.awt.event.KeyEvent; import javax.swing.JFrame; import javax.swing.JTextArea; import javax.swing.JTextField; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Vector; public class DROP extends JTextField implements KeyListener { private Vector<String> data = null; private boolean doNothingElse = false; private static final long serialVersionUID = 1L; public DROP(int lang) { super(lang); addKeyListener(this); data = new Vector<String>(); } public void setData(Vector<String> data) { this.data = data; } public void addData(String str) { data.add(str); } public void deleteData(String str) { data.remove(str); } private void quickSearch(String start) { for (String str : data) { if (str.startsWith(start)) { setText(str); select(start.length(), str.length()); doNothingElse = true; break; } } } private void handleKey(char key) { String selection = getSelectedText(); if (selection != null && selection.charAt(0) == key) { doNothingElse = true; setSelectionStart(getSelectionStart() + 1); } else if (selection != null) { String nonSelected = getText().substring(0, getText().length() - selection.length()) + key; quickSearch(nonSelected); } else { quickSearch(getText() + key); } } public void keyTyped(KeyEvent key) { if (doNothingElse == true) { key.consume(); doNothingElse = false; } } public void keyPressed(KeyEvent key) { if (Character.isLetter(key.getKeyChar()) || key.getKeyChar() == ' ') { handleKey(key.getKeyChar()); } } public void keyReleased(KeyEvent key) { } public DROP test() { //DB Verbindung Herstellen try { Class.forName("org.hsqldb.jdbcDriver"); } catch (Exception e) { System.out.println("ERROR: failed to load HSQLDB JDBC driver."); e.printStackTrace(); } Connection con = null; try { con = DriverManager.getConnection( "jdbc:hsqldb:hsql://192.168.0.3/TrinityTestAJ", "sa", ""); } catch (SQLException e) { System.out.println("Keine Verbindung!"); } Statement state = null; try { state = con.createStatement(); } catch (SQLException e) { System.out.println("Kann kein Statement erzeugen"); } //DB Verbindung ist hergestellt worden System.out.println("Verbindung Steht"); ; for(int i=10105;i<10800;i++){ String sql = "SELECT NAME FROM ADRESSEN WHERE FIRMANR="+i+";"; try { ResultSet res = state.executeQuery(sql); while (res.next()) { String name = res.getString("NAME"); this.addData(name); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); //return name; } } return this; } public DROP test2() throws SQLException { //DB Verbindung Herstellen try { Class.forName("org.hsqldb.jdbcDriver"); } catch (Exception e) { System.out.println("ERROR: failed to load HSQLDB JDBC driver."); e.printStackTrace(); } Connection con = null; try { con = DriverManager.getConnection( "jdbc:hsqldb:hsql://192.168.0.3/TrinityTestAJ", "sa", ""); } catch (SQLException e) { System.out.println("Keine Verbindung!"); } Statement state = null; try { state = con.createStatement(); } catch (SQLException e) { System.out.println("Kann kein Statement erzeugen"); } //DB Verbindung ist hergestellt worden System.out.println("Verbindung Steht"); DROP drop = new DROP(15); String sql1 = "SELECT FIRMANR FROM ADRESSEN WHERE NAME LIKE '"+"Ba"+"%';"; System.out.println(sql1); ResultSet res = state.executeQuery(sql1); String sql2 = null; while (res.next()) { int kundennummer = res.getInt("FIRMANR"); System.out.println(kundennummer); sql2 = "SELECT NAME FROM ADRESSEN WHERE FIRMANR="+kundennummer+";"; //this.addData(namen); } try { System.out.println("test"); ResultSet resu = state.executeQuery(sql2); while (resu.next()) { String namen = resu.getString("NAME"); this.addData(namen); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); //return name; } return this; } /** public static void main(String[] args) { JFrame frame = new JFrame(); DROP stf = new DROP(); stf.test(); } die methode test() funktioniert, mit der for. test2() geht nicht. Mein Problem bei test2() ist diese Zeile: String sql1 = "SELECT FIRMANR FROM ADRESSEN WHERE NAME LIKE '"+"Ba"+"%';"; statt "Ba" möcht ich hier halt die Tastatureingabe. Und ich kriegs nicht hin Wäre froh wenn Ihr mir helfen könntet.... Danke! Gruß AJ
  13. Wenn ich keine IP des Servers eingetragen habe, sollte das programm ja schon nen fehler bringen, oder abstürzen, oder sonstwas tun. Aber dies ist nicht der Fall. Die Daten, die ich von der DB anfordere bekomme ich...aus irgend einem Grund wählt er den richtigen Server aus obwohl ich nichts als adresse hinterlegt habe...
  14. Ah, ok ^^ ja um den absturz kann ich mich da dann kümmern wenn das prog erstmal das ausführt was es soll...schon von anfang an... Z.b. das es gleich zu anfang abstürzt wenn ich keinen IP eingetragen hab...das wär ja dann schonmal "logisch" und ok

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...