Hallo Reimer,

zum Umgang mit der Mailingliste hat Edgar schon das Wesentliche vermerkt. 
Deswegen hier nur Kommentare zum Inhalt.
> 
> Zunächst hätte ich gerne gewusst, wo ich Hanfbuch oder ähnliches über
> OOo-Basic erhalten kann. Gibt es im Netz eine Adresse wo man das
> Handbuch in einem PDF-Format herunterladen könnte. Oder lässt es sich
> nur über den Fachhandel erwerben. Wenn JA dann WO???

Suchst Du OOo-Basic oder die Grundlagen für Base, also Datenbank? Zur 
Datenbank: Es handelt sich um eine HSQLDB, d.h. die Website dafür ist hier:
http://hsqldb.org/doc/guide/ch09.html

... wobei ich gleich die bei mir am häufigsten genutzte Seite angebe, die Dir 
bei den untenstehenden Problemen vielleicht die entscheidenden Hinweise geben 
kann.
> 
> Dann zu meinem Problem was ich mir auferlegt habe. Im Anhang habe ich
> eine Test-Tabelle mal hinterlegt. Zu dieser Tabelle möchte ich eben eine
> Datenbank hinterlegen. Ich habe mir auch schon eine Datenbank-Tabelle
> erstellt. speziell geht es mir jetzt darum, das ich bei der Eingabe im
> Formular von den Feldern "Start-Zeit" und Ende Zeit die Stunden in dem
> Feld "Stunden" errechnet ausgeben möchte. Außerdem soll wenn in dem Feld
> "Pausen" ein "TRUE" eingegeben wird aus der Stamm-Datei die hinterlegen
> Pausen-Zeit abgezogen werden.
> 
> Gibt es jemand der mir schon Lösungsvorschläge machen kann, und wie ich
> unter OOo-Base da vorgehen muss???

Vorsicht ist geboten, wenn Du zwischen Datenbank (HSQLDB) und OOo-Basic mit 
Datum/Zeit hin und her springen willst. Dabei geht es sowohl um Formatierungen 
als auch um unterschiedliche Startdaten (Welches Datum entspricht der Zeit 0 
...)
Deshalb mein Vorschlag: Mach alles mittels einer Abfrage, die Du im 
Abfragecontainer von Base hinterlegst und in Deinem Formular nur zum Update 
aufrufst.

IDZeit
SZeit als Startzeit
EZeit als Endzeit
CheckPause

stehen in einer Tabelle

IDPause
Pause

steht in der zweiten Tabelle

Die Abfrage jetzt

SELECT "IDZeit", DATEDIFF('mi', "SZeit", "EZeit") AS "Arbeitszeit" FROM 
"Tabelle1"

müsste den Zeitunterschied in Minuten ergeben

SELECT "Tabelle1"."IDZeit", CASEWHEN("Tabelle1"."Pause",DATEDIFF('mi', 
"Tabelle1"."SZeit", "Tabelle1"."EZeit")-"Tabelle2"."Pause", DATEDIFF('mi', 
"Tabelle1"."SZeit", "Tabelle1"."EZeit") AS "reine_Arbeitszeit" FROM 
"Tabelle1","Tabelle2"

Die Abfrage wirst Du so nicht in der GUI-Ansicht eingeben können. Dazu musst 
Du den Ansichtsmodus auf den Abfragetext umschalten.

Im Formular machst Du die Abfrage zu einem Unterformular, das Du gar nicht 
erst zum Beschreiben vorsiehst. Verknüpfungspunkt zum Hauptformular ist die 
"IDZeit". Das Unterformular muss nachher in der Ansicht gar nicht als solches 
erkennbar sein, d.h. die entsprechenden Felder können auch direkt neben den 
Eingabefeldern zur Zeit liegen.

In BASIC ist jetzt nur ein Makro notwendig, dass
- die Eingabe aus dem Hauptformular abspeichert und
- das Unterformular aktualisiert.
Prinzipiell geht das Ganze aber auch ohne, wenn Du auf die direkte Ansicht 
verzichtest.

Ansonsten:
SUB Zeitausgabe
        DIM oDoc AS OBJECT
        DIM oDrawpage AS OBJECT
        DIM oForm AS OBJECT
        DIM oSubForm AS OBJECT
        oDoc=thisComponent
        oDrawpage=oDoc.Drawpage
        oForm=oDrawpage.Forms.getByName("NameFormular")
        oSubForm=oForm.getByName("NameSubFormular")
        IF oForm.rowInserted() THEN                     
                REM Die neue Zeile abspeichern  
                oForm.updateRow()
        ELSE
                oForm.insertRow()
        END IF
        oSubForm.reload()
END SUB

Das bindest Du an das Eingabefeld, das direkt vor dem Feld zur Berechnung 
liegt. Wenn das Feld verlassen wird soll dieses Makro laufen. Du musst 
lediglich den Namen des Formulars  ( meist "MainForm" in der 
Normaleinstellung) und den des Subformulars (meist "Standard" in der 
Normaleinstellung) ersetzen.

Eine Macke hat das Makro so allerdings: Es funktioniert erst einmal nur bei 
Neueingaben, da die Funktion oForm.rowInserted() nur aktuelle einen 
Rückgabewert abgibt, aber eben nicht, wenn es sich um einen schon vor einiger 
Zeit abgespeicherten Wert handelt.

Um das in den Griff zu bekommen musst Du entweder über den Makrorecorder 
einfach die entsprechende Datenspeicherung mit den dazugehörigen Befehlen 
ermitteln oder bei der Analyse des Formularinhaltes mehr Hand anlegen.

Gruß

Robert

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org
For additional commands, e-mail: users-h...@de.openoffice.org

Reply via email to