Datenbank mit speichern unter abspeichern

Antwort erstellen


Um automatische Eingaben zu unterbinden, musst du die nachfolgende Aufgabe lösen.

BBCode ist eingeschaltet
[img] ist ausgeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Datenbank mit speichern unter abspeichern

Re: Datenbank mit speichern unter abspeichern

von Defender19 » Mi, 01.08.2018 13:50

Hallo F3K Total,

zur Information.....ich habe in der Taskleiste den Open Office Schnellstarter. Als
ich diesen beendet habe und dann erneut die Daten eingegeben habe, wurde alles
ordnungsgemäß gespeichert. Konnte das der Grund sein, warum die geänderten
Daten nicht zurückgeschrieben wurden?

Ich kann leider in den Einstellungen den Autostart nicht entfernen, weil unser Open
Office modifiziert wurde. Auch kann ich keinen Systemeingriff im Windows System
vornehmen, da wir von der IT-Seite gesperrt sind.

Gibt es da evtl. ein Makro, dass beim Starten der Datei der Schnellstarter geschlossen
wird?

Gruß Defe

gelöst:Datenbank mit speichern unter abspeichern

von Defender19 » Mi, 01.08.2018 09:23

Guten Morgen F3K Total,

vielen Dank für deine unermüdliche Hilfe. Ich habe deine
Hinweise vom 25.07.2018 schon gelesen und darauf geachtet. Allerdings
muss im Hintergrund Open Office irgendwie noch aktiv sein. Das liegt
vielleicht an unserem Firmennetzwerk. Jedenfalls habe ich deinen Code
eingebaut und der Fehler ist bisher nicht mehr aufgetreten. Ich hoffe,
dass die auch so bleibt, wenn ich im Urlaub bin. Sonst werden meine
Mitarbeiter ziemlich auf dem Schlauch stehen.
Jedenfalls einen riesen Respekt von mir. Ich weiß nicht, wie ein normal
Sterblicher all das Wissen haben kann, wie du.
Also Merci vielmals für deine Geduld und deine Hilfe...

Gruß Defe

Ich setze den Thread mal auf gelöst... 8)

Re: Datenbank mit speichern unter abspeichern

von F3K Total » Di, 31.07.2018 19:42

... wer lesen kann, ist klar im Vorteil, ich habe es dir bereits 2x geschrieben:
F3K Total hat geschrieben:
Mi, 25.07.2018 15:54
Hallo Defender,
ich wiederhole meinen Hinweis:

F3K Total hat geschrieben: ↑
Mi, 25.07.2018 12:22
... Die ggf. veränderten Daten werden erst dann sicher zurückgespeichert, wenn OpenOffice komplett beendet wird.
Versuche mal

Code: Alles auswählen

Sub speichern()
  
  oDoc=thisDatabaseDocument
  oDoc.DataSource.flush'<---sollte die Daten der internen HSQLDB auf Platte speichern
  .
  .
  .
Gruß R

Re: Datenbank mit speichern unter abspeichern

von Pretender1970 » Di, 31.07.2018 16:03

Hallo F3K Total,

darf ich dich noch einmal belästigen?

Ich habe doch das Makro "speichern unter" und mir ist aufgefallen, dass wenn ich den
Button anklicke und das Makro gestartet wird und ich den Ordner und die entsprechende
Datei (die soll überschrieben werden) ausgewählt habe, er mir die Datei ersetzt. Das ist
ja genau, was ich will.
Allerdings beim erneuten starten der Datei, sind die geänderten Einträge nicht vorhanden.
Ist da was beim Makro falsch? Oder liegt das generell an der Datenbank?

Gruß Defe

Code: Alles auswählen

Sub speichern()
  
  oDoc=thisDatabaseDocument
  dim args1(0) as new com.sun.star.beans.PropertyValue
  args1(0).Name = "FilterName"
  args1(0).Value = "calc8"

  arg = Array(com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_AUTOEXTENSION) 
  dialog = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
  dialog.Initialize(arg()) 
  dialog.appendFilter("ODB Datenbank (*.odb)", "*.odb")
  
   IF Msgbox ("Bitte Datei abspeichern unter, "  & vbNewLine & _
  ""& vbNewLine & _
   "Fa.GS / Firma Datenbank /" & vbNewLine & _
   ""& vbNewLine & _
   " Auflistung / Programm / Auflistung")= 1 then 
   dialog.SetMultiselectionMode(false)
 
  dialog.DefaultName = Filename
  ok = dialog.execute()
 end if
 if ok = 1 Then   
	datei = dialog.getFiles() 
	URL = datei(0) 
    oDoc.storeasurl(URL, args1())

  end if
  
  end sub

gelöst: Re: Datenbank mit speichern unter abspeichern

von Defender19 » Fr, 27.07.2018 11:28

Hallo F3K Total,

genial....super.....das so etwas kleines, so eine große Auswirkung hat, ist
schon der Hammer. Ich muß noch viel lernen.

Ich danke dir unheimlich, für die echt klasse Unterstützung. Ich verbeuge
mich vor dir.

Endlich kann das Wochenende kommen....yeahhhh

Gruß Defe

Re: Datenbank mit speichern unter abspeichern

von F3K Total » Fr, 27.07.2018 08:53

Hi,
statt

Code: Alles auswählen

oDoc=thisComponent
nimm

Code: Alles auswählen

oDoc = thisDatabaseDocument
Sonst speicherst du "ThisComponent", was z.B. nur das gerade geöffnete Formular sein kann.
Gruß R

Re: Datenbank mit speichern unter abspeichern

von Defender19 » Fr, 27.07.2018 08:30

Sorry, dass ich den Thread noch einmal öffnen muß. Ich habe folgendes
Problem. Mit meinem Makro "speichern unter" speichert er zwar die Datenbank
ab. Allerdings ist die Datenbank beim erneuten Starten komplett verschwunden und
ich stelle fest, dass es mit OO-Writer abgespeichert wurde. Somit wurde aus 1,32 Mbyte
plötzlich 8,53 kbyte. Ich verstehe nicht warum.
Kann mir jemand noch einmal helfen?

Code: Alles auswählen

Sub speichern()
  
  oDoc=thisComponent
  dim args1(0) as new com.sun.star.beans.PropertyValue
  args1(0).Name = "FilterName"
  args1(0).Value = "calc8"

  arg = Array(com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_AUTOEXTENSION) 
  dialog = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
  dialog.Initialize(arg()) 
  dialog.appendFilter("ODB Datenbank (*.odb)", "*.odb")
  
   IF Msgbox ("Bitte Datei abspeichern unter, "  & vbNewLine & _
  ""& vbNewLine & _
   "GS / Geschäft /" & vbNewLine & _
   ""& vbNewLine & _
   "  Programm / Geschaeft")= 1 then 
   dialog.SetMultiselectionMode(false)
 
  dialog.DefaultName = Filename
  ok = dialog.execute()
 end if
 if ok = 1 Then   
	datei = dialog.getFiles() 
	URL = datei(0) 
    oDoc.storeasurl(URL, args1())

  end if
  
  end sub

gelöst: Datenbank mit speichern unter abspeichern

von Defender19 » Mi, 25.07.2018 16:21

Hallo F3K Total,

genau das wars,....hippppppppppppie ich haben den Windows Dialog genommen und
siehe da, alle Laufwerke sind vorhanden.
Echt klasse, dass du mir geholfen hast....ich bin sprachlos und begeistert.

:lol: :lol: :lol: :lol:

Vielen lieben Dank an dich und an Stephan für die Hilfe.

WOW.WOW.WOW komm einfach nicht aus dem staunen raus......

Defender19

Re: Datenbank mit speichern unter abspeichern

von F3K Total » Mi, 25.07.2018 15:54

Hallo Defender,
ich wiederhole meinen Hinweis:
F3K Total hat geschrieben:
Mi, 25.07.2018 12:22
... Die ggf. veränderten Daten werden erst dann sicher zurückgespeichert, wenn OpenOffice komplett beendet wird.
Und ja, es gibt einen OpenOffice-Dialog

Code: Alles auswählen

dialog = CreateUnoService("com.sun.star.ui.dialogs.OfficeFilePicker")
und den Betriebssystem Dialog

Code: Alles auswählen

dialog = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
Bei mir unter W7 zeigen alle beide meine sämtlichen lokalen Laufwerke, andere habe ich leider nicht:
d.png
d.png (31.14 KiB) 1984 mal betrachtet

Gruß R

Re: Datenbank mit speichern unter abspeichern

von Defender19 » Mi, 25.07.2018 15:51

Hallo Stephan,

vielen Dank für deine schnelle Antwort. Allerdings ist bei uns im
Geschäft alles etwas anders. Unsere IT hat Open Office angepasst und
somit erscheinen deine Verweise leider nicht bei mir unter "Extras-Optionen/Einstellungen-Allgemein -->"OpenOffice-Dialoge".
Auch geht das Aufzeichnen der Makros nicht. Ich muss alles von Hand programmieren. Der Button wurde
schlicht weg entfernt. Bin schon froh, dass ich mit F11 in die Makros komme.

Haste noch ne andere Idee? Bin für alles dankbar...

Gruß Defe

Re: Datenbank mit speichern unter abspeichern

von Stephan » Mi, 25.07.2018 15:36

Somit geht es mir eigentlich nur darum, dass beim "speichern unter"(Makro) alle Laufwerke angezeigt werden.
Du kannst mir auch nicht sagen, warum bei DialogOpen.displaydirectory......alle Laufwerke angezeigt werden?
Bei mir werden (unter Windows 7) alle Laufwerke angezeigt, wenn ich den Dialog aufrufe, aber nur dann wenn ich den Windows-Dialog nutze (was Standard ist) jedoch nicht wenn ich den OO-eigenen Dialog nutze indem ich den unter Extras-Optionen/Einstellungen-Allgemein -->"OpenOffice-Dialoge verwenden" aktiviert habe.


Gruß
Stephan

Re: Datenbank mit speichern unter abspeichern

von Defender19 » Mi, 25.07.2018 14:01

Hallo,

um die Handhabung noch einmal zu erklären.
Es arbeitet immer nur eine Person an der Datenbank, sollte eine andere Person zugreifen wollen, erscheint
ein Hinweis, mit der entsprechenden User-ID. Somit kann immer nur eine Person darauf arbeiten und das
ist auch so vollkommen in Ordnung.
Die Datenbank startet beim öffnen sofort mit den Button "für Eingaben" nach dem temporären speichern und
beenden eines Dialogs, kann ich anschließend das "speichern unter" (kein Makro) manuell über Datei speichern
erledigen. Da erscheinen wiederum alle Laufwerke.

Somit geht es mir eigentlich nur darum, dass beim "speichern unter"(Makro) alle Laufwerke angezeigt werden.
Du kannst mir auch nicht sagen, warum bei DialogOpen.displaydirectory......alle Laufwerke angezeigt werden?

gruß Defe

Re: Datenbank mit speichern unter abspeichern

von F3K Total » Mi, 25.07.2018 12:22

Moin,
wieso die Netzlaufwerke nicht angezeigt werden, kann ich nicht sagen, bin da kein Fachmann.
Allerdings wollte ich dich darauf hinweisen, dass ich deine "Arbeitsweise" für kritisch halte. Wenn ich dich richtig verstehe, willst du mit mehrern Nutzern über ein Netzlaufwerk auf die .odb Datei zugreifen.

Punkt 1:
Es handelt sich aber bei einer .odb Datei, so wie geliefert um eine SINGLE-USER Datei. Zugriff mit mehreren USERN gleichzeitig ist ausgeschlossen.

Punkt 2:
Beim Öffnen der .odb (nix weiter als ein .zip-Archiv), wird die eingebettete HSQL-Datenbank aus dem .zip-Archiv entpackt und dann im Arbeitsspeicher des jeweiligen Clients gehalten. Die ggf. veränderten Daten werden erst dann sicher zurückgespeichert, wenn OpenOffice komplett beendet wird. Ob dies stattfindet, wenn es nicht vergessen wird, ist schwer zu kontrollieren.
Kommt es während des Betriebs zu einem Fehler, z.B. Rechnerabsturz oder Stromausfall, ist die .odb Datei in den meisten Fällen zerstört, die Daten unwiederbringlich verloren. Es gibt im Internet erfahrene Leute, die dringend davon abraten eine .odb, wie geliefert, professionel zu verwenden.

Eine möglich Abhilfe, aber nicht banal, wäre der folgende Weg:
Man kann die HSQL-Datenbank aus der .odb Datei herauslösen, sollte man erst dann tun, wenn das Design steht.
Die herausgelöste DB kann im Server-Mode laufen gelassen werden, dazu ist es allerdings erforderlich, das auf dem Server JAVA laufen darf. Ein kleines Sript startet, ein zweites fährt die Datenbank wieder herunter, ist aber nicht nötig, kann immer laufen.
Es handelt sich hier um das Datenbank-Backend.
Wenn es soweit ist, kann man mit mehreren Nutzern gleichzeitig zugreifen, die .odb, samt Abfragen, Formularen und Berichten arbeitet dann vom jeweiligen Client als Frontend.
So ist es auch möglich verschiedene Benutzernamen und Passworte zu vergeben, den Nutzern unterschiedliche Berechtigungen auf die Tabellen zuzuweisen und vieles mehr. Und am Wichtigsten, Datenverlust ist nahezu ausgeschlossen.
Aber wie gesagt, einfach ist das nicht. Es ist einiges zu lernen bevor das läuft.

Das Herauslösen des HSQL DB habe ich in einem meiner Videotutorials beschrieben.
Informationen zum Server-Modus findest du z.B. hier: https://forum.openoffice.org/en/forum/v ... 85#p257585
Gruß R

Re: Datenbank mit speichern unter abspeichern

von Defender19 » Mi, 25.07.2018 11:24

Hallo F3K Total,

vielen Dank für deinen Hinweis. Allerdings erscheinen wiederum nicht alle
Laufwerke. Egal ob ich den Punkt setze oder die Zeile entferne. Kann es daran
liegen, dass die Datenbank auf einem Server abgelegt ist, von denen alle
zugreifen können? Und es daher kein lokales Laufwerk ist?

Ich habe auch versucht die Daten mit einem "Speichern Makro" abzuspeichern,
allerdings speichert er das nicht in der Originaldatenbank ab, sondern speichert
es auf dem jeweiligen persönlichen Bereich des Users im Netzwerk ab. Ich finde
und finde den Fehler nicht. Deswegen wollte ich den Weg mit "speichern unter"
gehen, um sicherzustellen, dass nach der Dateneingabe auch alles später wieder
vorhanden ist.
Mit diesem Teil, zeigt er mir alle Laufwerke an....mmmmhhh, ich komme nicht
dahinter warum es hier geht und beim anderen nicht.
Kannst du mir da einen Tip geben?

Grülße Defe

Code: Alles auswählen

DialogOpen=createunoservice("com.sun.star.ui.dialogs.FilePicker")
       DialogOpen.title = "Datei auswählen"
       DialogOpen.displaydirectory = "c:\"

Re: Datenbank mit speichern unter abspeichern

von F3K Total » Mi, 25.07.2018 09:48

Moin,
ich verstehe zwar den Sinn des Makros nicht, aber einen Fehler habe ich entdeckt, es fehlt ein Punkt. So wird Laufwerk C angezeigt, läßt du die Zeile weg, werden alle Laufwerke angezeigt:

dialog.displayDirectory = ConvertToURL("C:\")

Gruß R

Nach oben