Zum Inhalt springen

Alex_winf01

Mitglieder
  • Gesamte Inhalte

    639
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle Inhalte von Alex_winf01

  1. Liebe Forengemeinde, ich habe ein "kleines" Problem mit meiner Druckfunktion, die soweit funzt. ABER: Da mein JTabbedPane sehr groß ist vom Inhalt her, wird jeder Reiter auf 2 Seiten gedruckt. Gibt es eine Möglichkeit (etwa wie in Excel mit Datei -> Seite einrichten -> Skalierung -> Größe X% der Normalgröße verkleinern) die ganze Sache auf eine Seite "zu quetschen"? Fragt bitte nicht warum. Die Kollegen und der Kunde möchten das so. Und da gibt es keine Diskussion!!! Ich bitte um konstruktive Hinweise. So drucke ich bis jetzt aus: class druckenListener implements ActionListener { public void actionPerformed(ActionEvent e) { pj = PrinterJob.getPrinterJob(); pj = PrinterJob.getPrinterJob(); try { if (pj.printDialog()) { paper = new Paper(); paper.setSize(594.936, 841.536); // Set to A4 size. paper.setImageableArea(30, 30, 530, 780);//set margins pageFormat = new PageFormat(); pageFormat.setPaper(paper); size = lizenzPane.getSize(); hauptpanel.setSize(size); formular = new Formular_Lizenzbestimmung(lizenzPane); pj.setPrintable(formular, pageFormat); pj.print(); } } catch (PrinterException ex) { ex.printStackTrace(); } } } class Formular_Lizenzbestimmung implements Printable { private Container container; private int index = -1; private Rectangle page = new Rectangle(0, 0, 0, 0); Formular_Lizenzbestimmung(Container container) { this.container = container; } public int print(Graphics g, PageFormat pageFormat, int pageIndex) { Graphics2D g2d = (Graphics2D) g; g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY()); int iWidth = (int) pageFormat.getImageableWidth(); int iHeight = (int) pageFormat.getImageableHeight(); double scaleFactor = (double) iWidth / (double) container.getWidth(); while (index < pageIndex) { if (pageIndex > container.getHeight() * scaleFactor / iHeight) { return NO_SUCH_PAGE; } page.y += page.height; page.width = (int) (iWidth / scaleFactor); page.height = (int) (iHeight / scaleFactor); index++; } g2d.scale(scaleFactor, scaleFactor); g2d.translate(0, -page.y); g2d.clip(page); container.print(g2d); return PAGE_EXISTS; } }
  2. Gibt es eine Möglichkeit, eine bestehende XML-Datei in Powerpoint zu integrieren?
  3. Weil es intern so gewünscht wird. Ich bin gerade dabei, den Leuten das Auszureden. Das Hauptargument: "Wir kennen Access und können ganz bequem die Formulare benutzen". Das ist der einzige Grund. Man möchte Access nur noch dafür nutzen, dass man ein Formular in Access hat, der Anwender drückt ein Knopf und bekommt die Ergebnisse in Access geliefert.
  4. Das hab ich schon eingerichtet. Wie muss ich aber die Formulare in Access mit den Tabellen in Oracle verknüpfen? Welche Probleme können in der Zusammenarbeit zwischen Access und Oracle auftragen? Ich suche einfach Tutorials, wo ich mich in die Thematik einarbeiten kann.
  5. Liebe Forengemeinde, ich suche mir seit Tagen schon einen Wolf für Tutorials zum Thema "Access als Frontend für Oracle". Hat da jemand Tipps bzw. Links? Es ist so: ich soll eine Oracle-Datenbank aufbauen und als Frontend Access nehmen. Die ganzen Tabellen, Abfragen sollen auf Oracle laufen. Die Oracle-DB liegt auf einem Server und die ganze Rechenleistung (komplizierte Abfragen) sollen auch auf dem Server laufen. Im Access gibt es dann nur noch Formulare, mit denen man die Abfragen startet und die Ergebnisse angezeigt werden.
  6. Folgendes: Ich habe auf dem Rechner A meine Applikation liegen und starte es mit einer start.bat. In der start.bat steht nur java.Login. Damit rufe ich meine Hauptklasse Login.class auf. Nun gehe ich an den Rechner B, gehe über Netzwerkumgebung und melde mich auf dem Rechner an. Ich rufe die start.bat auf und kann es auf dem Rechner B nicht ausführen, da ich folgende Fehlermeldung bekomme: Dann wird die start.bat ausgeführt und ich bekomme die Fehlermeldung "class Login nicht gefunden". Wenn ich allerdings meinen Joe öffne und die Login ausführe, klappt es wunderbar. Kann mir jemand da helfen?
  7. Ach noch was: Es soll gar nicht erst so weit kommen, dass es konkurierende Updates gibt. Anwender A lässt sich Datensatz A anzeigen, Anwender B kann sich dann den Datensatz A nicht mehr anzeigen lassen. Für ihn steht auch kein select zur Verfügung.
  8. @ dr.dimitri Diese Variante habe ich mit dem Kunden schon diskutiert - wird nicht gewollt. Es muss eine H2-Datenbank sein. Und warum sollte das mit Transaktionen nicht funktionieren? Hilbernate läuft auch mit Transaktionen.
  9. Also ich verwende die Server-Komponente von der Datenbank H2 (Vorgabe vom Kunden, kein RMI, kein Hibernate oder anderes Persistenzframework). Es soll wie folgt laufen: Anwender A schaut sich Datensatz A an. Anwender B darf Datensatz A weder lesen, geschweige denn bearbeiten oder löschen. Hab mich jetzt umentschieden. Werde eine Tabelle anlegen, wo neben der Spalte "inBearbeitung" noch die Spalte "Anwender" enthält, der den Datensatz gerade in Bearbeitung hat. Nur dieser Anwender ist dann berechtigt, den Datensatz zu lesen, bearbeiten und zu löschen. Natürlich brauche ich Transaktionen. Falls das Programm abschmiert, wird mit Rollback alles wieder zurück geschrieben. Ich brauche auch ein Timeout, falls der Anwender einschläft oder einfach vom Rechner weggeht. Ich muss also jeden Anwender eindeutig dem Datensatz zuordnen
  10. @ Schiller256 Also es wird eine Java-SE-Umgebung verwendet (Java 6.0). Hash-Map hört sich mal nicht schlecht an. Durch die Mehrbenutzerfähigkeit habe ich mein Programm auf jedem Client als JAR-File liegen (die Datenbank liegt auf dem Server). Ich muss dann ja irgendwo die Hash-Map so speichern, dass jeder Anwender-Client darauf Zugriff hat. Wie kann ich das lösen?
  11. Auf den Clients/Server wird Windows verwendet. Wenig heisst < 4.000 Datensätze im Jahr. Kannst Du mir ein Beispiel geben, wie eine Zugriffsfunktion auf eine Tabelle aussehen kann? Ich möchte nicht die ganze Tabelle sperren, nur den einzelnen DS.
  12. Java-Umgebung, H2 Datenbank, wenig Datensätze. Wie gesagt: Hibernate ist nicht gewollt. EDIT: Natürlich muss das dann in einer Transaction ausgeführt werden. Entweder ganz oder gar nicht.
  13. Also ich habe ein "kleines" Problem: Anwender A lässt sich DS A mit Select anzeigen und möchte den bearbeiten. Anwender B lässt sich den DS A auch anzeigen. Nun soll Anwender B den DS A nicht überschreiben. Der Kunde möchte jedoch nicht Hibernate und H2 unterstützt nur die Database Locking und nicht das Locking auf den einzelnen DS. Ich habe mir das jetzt so gedacht: In meiner Tabelle habe ich eine Spalte "inBearbeitung". Sobald der erste Anwender den DS A anzeigt, wird diese Spalte auf TRUE gesetzt. Gleichzeitig muss ich mir natürlich merken, dass dies Anwender A war, damit dieser auch ein Update durchführen kann. Anwender B kann dann zwar ein Select durchführen, aber kein Update.
  14. @ _Arvid_ das Problem mit der JList ist gelöst. Es hat ganz simpel ein return; gefehlt. Damit habe ich sämtliche Probleme gelöst.
  15. @ _Arvid_ Vielen Dank für Deine schnelle Antwort. Ich habe da noch zwei weitere Probleme mit JList: 1. Problem Ich füttere meine JList mit Werten aus der DB. Ich habe eine Schaltfläche "Neues Kriterium festlegen", mit dem der Anwender entscheiden kann, ob in der Liste Nummern oder der Name angezeigt werden soll. Der Handler sieht wie folgt aus: class listeSortierenListener implements ActionListener { public void actionPerformed(ActionEvent e) { String text = "Welches Kriterium soll in der Liste angezeigt werden?"; stringSort = ( String ) JOptionPane.showInputDialog(null, "Kriterium für Liste", "Dialog", JOptionPane.QUESTION_MESSAGE, new ImageIcon("img/middle.gif"), sortierung, sortierung[0]); String stringSortWert = stringSort; if (stringSortWert.equals("Name")) { kriterium = "nachname"; liste.updateUI(); scrollPane.setViewportView(liste); try { String lese_nachname = "Select * from anwender"; Statement stmt_nachname = Login.connection.createStatement(); ResultSet result_nachname = stmt_nachname.executeQuery(lese_nachname.toString()); // Anzeige neuer DS in der Liste for (;result_nachname.next();defaultlistmodel.addElement(anzeige_JList)) { anzeige_JList = result_nachname.getString(kriterium); } pack(); stmt_nachname.close(); } catch(SQLException a) { JOptionPane.showMessageDialog(null, " Fehler beim Datenbankabbau" + e, "DB-Meldung", JOptionPane.ERROR_MESSAGE); } liste.addListSelectionListener(new SelectionHandler_Nachname()); } if (stringSortWert.equals("Fall-Nummer")); { kriterium = "fall_nummer"; liste.updateUI(); scrollPane.setViewportView(liste); try { String lese_fallnummer = "Select * from anwender"; Statement stmt_fallnummer = Login.connection.createStatement(); ResultSet result_fallnummer = stmt_fallnummer.executeQuery(lese_fallnummer.toString()); // Anzeige neuer DS in der Liste for (;result_fallnummer.next();defaultlistmodel.addElement(anzeige_JList)) { anzeige_JList = result_fallnummer.getString(kriterium); } pack(); stmt_fallnummer.close(); } catch(SQLException a) { JOptionPane.showMessageDialog(null, " Fehler beim Datenbankabbau" + e, "DB-Meldung", JOptionPane.ERROR_MESSAGE); } liste.addListSelectionListener(new SelectionHandler_FallNummer()); } } } 2. Problem: Wähle ich den Punkt "Fall-Nummer" aus, werden auch nur die Fall-Nummern angezeigt. Wähle ich den Punkt "Nachname" aus, werden mir die Nachnamen + die Fallnummern angezeigt. Wie kann ich das verhindern? 3. Problem: Wenn ich diese Schaltfläche benutze und zwischen Fall-Nummer und Nachname wähle, verschwindet nach Aktualisierung der JList ein Teil der GUI. Schließe ich das Fenster und öffne es wieder ganz normal, wird mir das GUI wieder richtig angezeigt. Wie kann ich das vermeiden?
  16. Ich habe eine JList, die auf eine Schaltfläche reagiert: /*-------------------------------------------------------------------*/ /**J L i s t */ /*-------------------------------------------------------------------*/ String[] liste_dokumentationen_s = {"anzahl_dokumentationen", "fall_nummer"}; liste_dokumentation = new JList(defaultlistmodel_weitereDokumentationen); liste_dokumentation.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); liste_dokumentation.setSelectedIndex(0); liste_dokumentation.setSize(50,50); liste_dokumentation.setSelectionMode(0); doku_scrollPane = new JScrollPane(liste_dokumentation); doku_scrollPane.setViewportView(liste_dokumentation); /*-------------------------------------------------------------------*/ /**JList mit Werten aus der Datenbank auslesen*/ /*-------------------------------------------------------------------*/ int a = Fragebogen.patienten_liste.getSelectedIndex(); String b = Fragebogen.fall_nummer_text.getText(); try { String query_wDoku = "SELECT * FROM dokumentation where dokumentation_fall_nummer = " + "'" + b + "'"; // Statement erzeugen Statement wDoku_st = Login.connection.createStatement(); // Query ausführen ResultSet wDoku_rs = wDoku_st.executeQuery(query_wDoku); //Daten einlesen und auf dem Bildschirm ausgeben while (wDoku_rs.next()) { String anzeige_anzahl_dokumentation_JList; anzeige_anzahl_dokumentation_JList = wDoku_rs.getString("anzahl_dokumentation"); defaultlistmodel_weitereDokumentationen.addElement(anzeige_anzahl_dokumentation_JList); } wDoku_st.close(); } catch(SQLException d1) { JOptionPane.showMessageDialog(null, " Fehler beim Datenbankabbau " + d1, "DB-Meldung", JOptionPane.ERROR_MESSAGE); } liste_dokumentation.addListSelectionListener(new SelectionHandler3()); cp.add(doku_scrollPane); Klick ich auf die Schaltfläche, werden die Ergebnis der Abfrage dort angezeigt. So weit so gut. Klicke ich ein zweites Mal auf die Schaltfläche, werden die Ergebnisse des 1. Klicks mit angezeigt. Wie kann ich das verhindern? Es soll ja nur die Ergebnisse des aktuellen Klicks angezeigt werden.
  17. @ Jaraz Danke schon mal für Deine Antwort. Ich habe festgestellt, dass ich das Array gar nicht verwende, sondern gleich über liste = new JList(defaultlistmodel); Habe das Problem jetzt anders gelöst. Man nehme eine Variable, die man als public deklarier (z. B. public static String kriterium;) Setze diese Standard-mäßig auf nummer und sobald der Anwender über die Schaltfläche "Neues Kriterium" klickt und ein Kriterium festlegt (z. B. Name) wird das in der Variablen kriterium gespeichert. Fertig. Funzt Nun habe ich nur noch ein "kleines" Problem: Ich habe da einen Handler für die Liste, der ja die Problematik lösen soll, wie die Liste reagieren soll. Derzeit sieht mein Listener so aus: /*------------------------------------------------------------*/ /* Handler für die JList*/ /*------------------------------------------------------------*/ class SelectionHandler implements ListSelectionListener { public void valueChanged(ListSelectionEvent e) { if (e.getSource() == liste) { // Methodenaufrufe, wie die Liste reagieren soll for (int i = 0; i< 100; i++) { String index = (String)liste.getSelectedValue(); if (liste.getSelectedIndex()==i) { /*------------------------------------------------*/ /* Daten auslesen*/ /*------------------------------------------------*/ String query_daten = "SELECT * FROM tabelle where nummer" + "=" + "'" + index + "'"; try { // Statement erzeugen Statement statement = Login.connection.createStatement(); // Query ausführen ResultSet result = statement.executeQuery(query_daten); //Daten einlesen und auf dem Bildschirm ausgeben while (result.next()) { if(patient_rs.getString(kriterium).equals(index)) { // Hier werden die Daten dann auf den Bildschirm gesetz (z. B. in ein Textfeld mit setText(); } } statement.close(); } catch(SQLException e2) { JOptionPane.showMessageDialog(null, "Fehler beim Auslesen" + e2, "DB-Meldung", JOptionPane.ERROR_MESSAGE); } Nun habe ich folgendes "Problem": Wie ich ja geschrieben habe, kann der Anwender einmal das Kriterium "Nummer" auswählen und einmal das Kriterium "Name". Das klappt mit einem Listener nicht. Wie kann ich dieses Problem lösen?
  18. Ich habe folgende Liste: /*-------------------------------------------------------------------*/ /**J L i s t */ /*-------------------------------------------------------------------*/ String[] liste_array = {"nachname , ", "vorname,", "fall_nummer"}; liste = new JList(defaultlistmodel); liste.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); liste.setSelectedIndex(0); liste.setSize(50,50); liste.setSelectionMode(0); scrollPane = new JScrollPane(liste); Diese fülle ich mit Werten aus der Datenbank: /*-------------------------------------------------------------------*/ /**JList mit Werten aus der Datenbank auslesen*/ /*-------------------------------------------------------------------*/ try { // Anzeige neuer Datensätze in der Liste String anzeige_JList; for (;Login.result.next();defaultlistmodel.addElement(anzeige_JList)) { anzeige_JList = Login.result.getString("fall_nummer"); } pack(); } catch(SQLException e) { JOptionPane.showMessageDialog(null, " Fehler beim Datenbankabbau" + e, "DB-Meldung", JOptionPane.ERROR_MESSAGE); } Nun habe ich eine Schaltfläche, mit der ich erreichen will, dass nicht die fall_nummer, sondern der Name oder der Status aus der DB ausgelesen wird. Hier der ActionListener dazu: class listeSortierenListener implements ActionListener { public void actionPerformed(ActionEvent e) { String text = "Welches Kriterium soll in der Liste angezeigt werden?"; stringSort = ( String ) JOptionPane.showInputDialog(null, "Kriterium für Liste", "Dialog", JOptionPane.QUESTION_MESSAGE, new ImageIcon("img/middle.gif"), sortierung, sortierung[0]); if (stringSort == null) return; } } Die Variable sortierung ist wie folgt definiert: public static String[] sortierung = {"Fall-Nummer", "Name", "Status"}; Ich muss ja dann die JList z. B. mit dem hier überschreiben: /*-------------------------------------------------------------------*/ /**JList mit Werten aus der Datenbank auslesen*/ /*-------------------------------------------------------------------*/ try { // Anzeige neuer Datensätze in der Liste String anzeige_JList; for (;Login.result.next();defaultlistmodel.addElement(anzeige_JList)) { anzeige_JList = Login.result.getString("name"); } pack(); } catch(SQLException e) { JOptionPane.showMessageDialog(null, " Fehler beim Datenbankabbau" + e, "DB-Meldung", JOptionPane.ERROR_MESSAGE); } Nur mal angenommen, der Anwender klickt auf "Name". Nur leider tut sich da nix. Wer kann mir helfen? Und wenn es über ein kleines Beispiel ist.
  19. Wie sieht es denn aus mit der Datenbank H2? Kann man dort mit mehreren Leuten gleichzeitg zugreifen?
  20. Man hat ja noch die Möglichkeit das Speichern der Daten in der log-Datei. Das mit den Text-Dateien war mir schon fast befusst. Nur in einem anderen Forum behauptet man genau das Gegenteil. Nämlich dass das Speichern von mehreren Anwendern in eine csv-Datei möglich ist. Man sagt, dass wäre solange machbar, solange der datenbankbenutzer != systembenutzer ist. @ dr.dimitri Kannst Du mir noch folgende Frage beantworten: Ist hsqldb überhaupt mehrbenutzerfähig? Man kann ja hsqldb einmal als standalone und einmal als Server laufen lassen.
  21. Hintergrund: ich möchte gerne CREATE TEXT TABELE(....). Dann werden die Werte in einer csv-Datei gespeichert. Da aber mehrere Anwender das Programm nutzen, weiss ich nicht, ob die csv-Datei mitmacht. Geht das überhaupt, wenn icht Text-Tabellen habe, dass ich dann mit TEXT-Tabellen arbeiten kann und Zugriff mit mehreren Anwendern? Ist hsqldb überhaupt mehrbenutzerfähig? --> Nach meiner Meinung ja und zwar über den Server-Modus. Mir geht es hier um die Speiecherung der Daten.
  22. Hallo, eine Frage zu Binärdatein in hsqldb: Es werden mehrere Anwender auf die Tabellen in meiner Datenbank gleichzeitig nutzen. Nun hab ich den Hinweis bekommen, dass die Zugriffsrechte bei Binärdateien kein Problem ist. Wie seht ihr das? Ich kann mir das nur schwer vorstellen. Als Beispiel: Anwender A fügt Artikel für den Kunden B ein, Anwender C fügt Artikel für den Kunden D ein. Beide greifen gleichzeitig auf die Tabelle Artikel zu.
  23. Hat sich erledigt.
  24. Danke schon mal für Deine schnelle Antwort. Leider startet der Server bei mir nicht. import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; public static class Login { Connection conn; Class.forName("org.hsqldb.jdbcDriver"); conn = DriverManager.getConnection("jdb:hsqldb:hsql://localhost/musicShop", "sa", ""); Server server = new Server(); server.start(); }
  25. Ich benötige nochmal Eure Hilfe. Wie kann ich eine hsqldb aus meiner Anwendung heraus starten? Ich hab die Doku auf hsqldb.org gelesen und werd nicht richtig schlau. Muss das so laufen wie Testdb db = null; try { db = new Testdb("db_file"); } catch(Exception ex1) { ex1.printStackTrace(); } In einem anderen Forum hat man mich nur auf die Doku verwiesen. Ich benötige aber einfach ein bildliches Beispiel - weil Beispiele für eine Standalone-Lösung finde ich genügend. Bitte helft mir.

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...