31. Dezember 2016

Die Zukunft von Forms - DOAG Forms Day in Berlin, 18.01.2017

Heute, am letzten Tag des alten Jahres, möchte ich noch auf den wichtigsten Event im nächsten Jahr hinweisen, der uns als Forms-Community betrifft. Die DOAG wird im Januar einen Forms-Day ausrichten, an dem wir ausschliesslich Forms-Vorträge hören werden:

DOAG Forms-Day 2017

Kommt alle vorbei und diskutiert mit der Community über eure Forms 12c Erfahrungen.


Euch allen einen guten Start ins neue Jahr und wir sehen uns in Berlin
Gerd

26. November 2015

Was ist neu in Forms 12c, Teil 2

Schauen wir uns nun den Form Builder einmal genauer an, um die Unterschiede zwischen 11 und 12 zu entdecken

Zuerst einmal sieht man direkt den neuen Datei Öffnen-Dialog. Es ist nun der Standard-Dialog aus Windows, mit viel mehr Flexibilität als in Forms 11g.


Neue Features im Konvertieren-Dialog:

  • Neues Feature "Converting to and from XML"
  • Checkbox "Overwrite"
  • Checkbox "Keep window open", falls man mehrere Dateien nacheinander konvertieren möchte.


Voreinstellungen-Dialog, Tab "Allgemein":

  • Die Checkbox "Hide PL/SQL Compile Dialog" ist neu
  • Web Browser-Speicherort  (Forms 11g: Tab "Laufzeit")
  • Compiler Output ist neu

Tab "Unterklasse": Keine Änderungen


Tab "Assistenten": Keine Änderungen


 Tab "Laufzeit":
  • Die Checkbox "Show URL Parameters" ist neu
  • Die Application Server URL ist viel größer!
  • Der Web-Browser-Speicherort wanderte auf die Tab "Allgemein"



Viel Spass damit
Gerd

6. November 2015

Was ist neu in Forms 12c?

Hier sind einige der Änderungen, die ich in Forms 12c gefunden habe. Und viele Dinge, die sich nicht geändert haben.

Fangen wir mit dem Object Navigator an. Links sehen wir Forms 11g, rechts Forms 12c.

Absolut keine Änderungen sind erkennbar.




Gleiches gilt für Menü und Toolbar. Keine Änderungen



Die grösste Änderung sehen wir, wenn wir uns den neuen Titel anschauen. In den letzten Jahrzehnten waren wir es gewohnt, dass dort "Forms Builder" stand. Er heisst nun "Form Builder".

Vielleicht ist es ja auch nur ein Tippfehler. Warten wir auf Release 2 und schauen, ob das "s" dann immer noch fehlt.


Nach dieser Ernüchterung haben ich tiefer gegraben. Das Hilfesystem! Im globalen Inhalt fand ich nur einen einzigen Unterschied.


Oracle Forms User Interface wurde in Oracle Form Builder umbenannt. Im Untermenü gab es einen neuen Eintrag für Installation und Konfiguration.




Zum Schluss durchsuchte ich dann noch den kompletten Index auf beiden Systemen. Hier gab es dann doch eine Menge Neuerungen

Hilfe ist nun verfügbar für diese 18 Themen:

  • Compiler Output
  • Form_Query_Only
  • Forms_Abterm_Cleanup
  • Forms_C_Stack_Trace_To_File
  • Forms_RUEI_Send_Form_Name
  • Hide PL/SQL Compile Dialog
  • Max_Event_Wait
  • Record_Count_Displayed
  • Show URL Parameters
  • System.Last_Event
  • System.Notification_Value
  • System.RecMgr_MAlloced
  • System.RecMgr_Mapped_In_Use
  • System.RecMgr_Mapped_Reserved
  • System.RecMgr_Mapped
  • System.RecMgr_Written_In_Use
  • System.RecMgr_Written
  • User_IP_Address


Viel Spass damit
Gerd

26. Oktober 2015

Forms 12c Installation

Meine erste Installation war nicht sehr stabil. Um das Problem zu identifizieren, musste ich erst einmal in die Zertifizierungsmatrix reinschauen.


Und dort sah ich das Problem. Mein Windows 10 war ein wenig zu neu für die Installation von Forms 12c.

Also installierte ich mir heute ein Windows 8 in einer VM. Und damit klappte dann alles.

Der Unterschied zu meiner ersten Installation ist, das der Forms Configuration Manager nicht startete.


In Windows 8 startet der Manager nun problemlos. Diese Schritte werden vom Manager durchlaufen:

1) Instance Configuration

Hier setzt man den Form Builder Instance Pfad. Ich habe einfach ein neues Verzeichnis angelegt und es in dem Pfad hinterlegt


2) Fortschritt


3) Ende



Nach der Konfiguration liess sich der Form Builder problemlos starten


Just use it
Gerd


24. Oktober 2015

Forms 12c ist draussen

Heute Nacht brachte Oracle seine neueste Version von Oracle Forms heraus. Früh genug um auf der Oracle Open World 2015 vorgestellt zu werden.

Hier nun meine ersten Schritte bei der Installation von Forms 12c.

Als Betriebssystem nutzte ich eine VMware mit Windows 10 auf meinem iMac.

1) Start


2) Automatische Updates


3) Speicherort


4) Installationsart


5) Voraussetzungen


6) Sicherheitsupdates


7) Zusammenfassung


8) Ende


Nach der Installation: Mein erster Aufruf des neuen Forms.


Mehr dazu in ein paar Tagen.

Viel Spass mit Forms 12c
Gerd

10. August 2015

Einfaches Logging und Debugging, Version 2.0

Jede Applikation braucht eine einfache Methode um Fehler zu speichern. Die folgende Technik kann desweiteren dazu benutzt werden um Forms, Reports und PL/SQL zu debuggen. In der neuen Version 2.0 wird nun auch der Username gespeichert und der Viewname hat sich leicht geändert.

Zuerst einmal erstellen wir die Tabelle, Sequence und eine View um die Logging-Information zu speichern:
CREATE TABLE Logging (
  ID                         NUMBER(9) NOT NULL,
  SESSION_ID                 NUMBER(9),
  INSERT_DATE                DATE NOT NULL,
  INSERT_USER                VARCHAR2(30) NOT NULL,
  TEXT                       VARCHAR2(2000) NOT NULL);

CREATE SEQUENCE Logging_SEQ;

CREATE OR REPLACE VIEW Logging_desc_V
         (ID, SESSION_ID, INSERT_DATE, INSERT_USER, TEXT)
AS SELECT ID, SESSION_ID, INSERT_DATE, INSERT_USER, TEXT
     FROM Logging
    ORDER BY SESSION_ID DESC, ID DESC;

Als nächstes brauchen wir ein Package mit den Prozeduren, die für das Logging benötigt werden.
CREATE OR REPLACE PACKAGE PK_DEBUG IS
  FUNCTION Debug_allowed RETURN BOOLEAN;
  FUNCTION Next_ID       RETURN NUMBER;

  PROCEDURE Disable;
  PROCEDURE Enable;
  PROCEDURE Destroy;
  PROCEDURE Init  (P_Debug_allowed IN BOOLEAN DEFAULT TRUE);
  PROCEDURE Write (P_Text IN VARCHAR2,
                   P_Session_ID IN NUMBER DEFAULT NULL);

  G_Debug_allowed BOOLEAN := TRUE;
  G_Session_ID    NUMBER;
END;
/
CREATE OR REPLACE PACKAGE BODY PK_DEBUG IS
FUNCTION Debug_allowed RETURN BOOLEAN IS
BEGIN
  RETURN (G_Debug_allowed);
END;

FUNCTION Next_ID RETURN NUMBER IS
  V_ID NUMBER;
BEGIN
  SELECT Logging_SEQ.nextval
    INTO V_ID
    FROM DUAL;
  RETURN (V_ID);
END;

PROCEDURE Disable IS
BEGIN
  G_Debug_allowed := FALSE;
END;

PROCEDURE Enable IS
BEGIN
  G_Debug_allowed := TRUE;
END;

PROCEDURE Destroy IS
BEGIN
  Write ('----------------------stopp '
    || to_char (G_Session_ID) || '--');
  G_Session_ID := NULL;
END;

PROCEDURE Init (
  P_Debug_allowed IN BOOLEAN DEFAULT TRUE) IS
BEGIN
  G_Debug_allowed := P_Debug_allowed;
  G_Session_ID := Next_ID;
  Write ('--start ' || to_char (G_Session_ID)
    || '----------------------');
END;

PROCEDURE Write (
  P_Text       IN VARCHAR2,
  P_Session_ID IN NUMBER DEFAULT NULL) IS
  PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
  IF Debug_allowed THEN
    IF G_Session_ID IS NULL THEN
      Init;
    END IF;
    INSERT INTO Logging (ID,
      Session_ID,
      Insert_Date,
      Insert_User,
      Text)
    VALUES (Next_ID,
      NVL (P_Session_ID, G_Session_ID),
      Sysdate,
      User,
      P_Text);
    COMMIT;
  END IF;
END;
END;
/

Das Debugging wird mit INIT gestartet und endet mit DESTROY. Fehlermeldungen werden in die Tabelle festgeschrieben mit WRITE. Zum Beispiel:
pk_Debug.Init;
pk_Debug.Write ('Hello World - ' || V_Test);
pk_Debug.Destroy;

Teile des Debuggings können deaktiviert werden mit DISABLE, so dass von dieser Zeile Code an keine Logging-Informationen mehr geschrieben werden, bis man ENABLE startet.

Die View Logging_DESC_V zeigt die Logging-Daten, gruppiert nach der neuesten Session-ID.
ID Session Insert-Date     Text
============================================
24    21   10.09.-12:38:48 -------stopp 21--
23    21   10.09.-12:38:48 Hello World - 42
22    21   10.09.-12:38:48 --start 21-------


Viel Spass damit
Gerd

19. Juni 2015

Gerade wiedergefunden


jetzt brauche ich nur noch ein 3,5" Diskettenlaufwerk.

:-)
Gerd

31. März 2015

Gerüchte über Oracle Reports 12c

Seit fast sechs Wochen gibt es Gerüchte, dass Oracle Reports nicht in der Version 12c erscheinen wird.

Seitdem versuche ich Informationen zu diesem Thema zu bekommen. Dies ist mir dann nach einigen EMails auch gelungen.


Das Gerücht ist definitiv falsch und niemand bei Oracle will Reports 12c einstellen.


Ich hoffe, dass dies die Gerüchteküche ein wenig abkühlt.

Gerd

26. Februar 2015

Das ADF-Buch ist da

Die Deutsche ADF- (und Forms-) Community hat heute ihr erstes Buch herausgegeben.

Das "ADF Buch" ist eine Zusammenstellung von deutschsprachigen Vorträgen, Artikeln und Workshop-Tutorials zum Thema Oracle ADF (es sind auch vereinzelte englischsprachige Beiträge enthalten). Die Autoren sind Mitglieder der deutschen ADF Community. Der Zeitrahmen umfaßt die Jahre 2010 bis 2014. Das Projekt "ADF Buch" wurde von einem Team von Mitarbeitern aus Partnerunternehmen und Oracle umgesetzt.

40 Autoren schrieben 70 Beiträge auf 1400 Seiten.

Der Download besteht aus einem 110 MB PDF und ist kostenfrei: ADF-Community-Homepage


Mein Artikel im Buch hat den Titel "Modernizing Oracle Forms". In ihm demonstriere ich, wie einfach in Oracle Forms die Integration moderner Frameworks wie z.B. LAF (Look and Feel-Framework von Francois Degrelle) ist und wie man ADF in Oracle Forms via OraFormsFaces (Framework von Wilfred van der Deijl) integriert.

Viel Spaß beim Lesen
Gerd

19. März 2014

INC und DEC sollte man in PL/SQL Libraries nicht benutzen

In meiner ältesten PL/SQL-Library in Forms 4 waren dies meine ersten Prozeduren:

PROCEDURE Inc (P_Number IN OUT NUMBER) IS
BEGIN
  P_Number := P_Number + 1;
END;

PROCEDURE Dec (P_Number IN OUT NUMBER) IS
BEGIN
  P_Number := P_Number - 1;
END;

Diese Prozeduren nutze ich seit 20 Jahren in der ein oder anderen Variation. Manchmal mit zwei Parametern, oft auch nur mit einem Parameter. In der ganzen Zeit gab es nie Probleme

In neueren Versionen von Oracle Forms funktioniert dies nun nicht mehr

Und warum? Oracle hat in PL/SQL einen neuen SUBTYPE für DECIMAL erzeugt und ihn "DEC" genannt. Diesen TYPE kann man zum Beispiel zur Variablendeklaration benutzen:
DECLARE
  V_Value   DEC;
BEGIN
... 
 
Das zerstört natürlich meine Prozedur in der PL/SQL-Library :-(
Alle anderen Sprachen kennen von Hause aus schon INC und DEC. Nur nicht Oracle!

Also immer schön acht geben beim erzeugen von neuen Funktionen die für lange Zeit gültig sein sollen :-)
Gerd

8. Januar 2014

2. Oktober 2013

Modernizing Forms Vortrag

Das Interview, über das ich vorgestern schrieb, ist in Zusammenarbeit mit meinem Vortrag "Wie modernisiere ich Oracle Forms" entstanden.

Das vollständige Video zu dem Vortrag (50 min) ist hier zu finden:





Die Folien des Vortrags sind über diesen Link erreichbar.

Try it
Gerd

30. September 2013

DOAG Interview

Nach meinem letzten Konferenzvortrag bin ich von der DOAG interviewt worden. Thema des Interviews war die Modernisierung von Oracle Forms.


Inhalt des Interviews + YouTube-Info:
Viele sagen über das Ausehen des Entwicklungswerkzeugs Oracle Forms, dieses sei nicht mehr zeitgemäß. Gerd Volberg von Opitz Consulting hat sich im Open-Source-Umfeld umgeschaut und Frameworks gefunden, mit denen die Forms-Welt aufgepeppt werden kann. Im Interview mit dem Leiter der SIG Development Christian Schwitalla präsentiert Volberg das "Forms Look and Feel Project" vom Oracle Ace Francois Degrelle sowie das Framework von Wilfred van der Deijl von "OraFormsFaces", das die Forms und ADF-Welt vereint.

Viel Spass
Gerd

29. Mai 2013

Oracle Forms in the Cloud - the next big thing?

Die ganze Welt redet nur noch vom Arbeiten in der Cloud. Warum nicht auch Oracle Forms?

Warum nicht...

Warum...

Weil Oracle es längst tut...



Link zum Webcast


Michael Ferrante und Roger Vidal besprechen in dem Webcast, wie man Applikationen in der Cloud im Web Logic Server laufen lässt und was das für die Zukunft von Oracle Forms bedeutet.

Grant hat in seinem Blog auf den Webcast verwiesen mit den Worten: "Oracle Forms remains a key technology..."

Viel Spass beim Webcast
Gerd

31. Januar 2013

Verhalten von Registerkarten

Wenn Registerkarten immer weiter vergrössert werden, kann man ein interessantes Verhalten feststellen: Nehmen wir zum Beispiel eine Maske mit 3 Registerkarten (Stil Breite = Fest)
Forms erzeugt alle 3 Registerkarten in der selben Breite. Das ist genau das, was wir erwartet haben.

Nun fügen wir eine vierte Registerkarte hinzu:

Sobald nicht genug Platz vorhanden ist, um alle Registerkarten darzustellen, reduziert Forms automatisch die Breite der einzelnen Überschriften. Die Breite der längsten Überschrift bleibt erhalten. Die anderen teilen sich den restlichen Platz.

Wir erzeugen weitere Registerkarten:
In der breitesten Registerkarte wird nun die Überschrift reduziert und einige Buchstaben durch Punkte ersetzt.

Ganz zum Schluß:

Die letzte Art der Darstellung erzeugt eine kleine horizontale Scrollbar. Spätestens jetzt kann man mit der Tab Canvas kaum noch arbeiten. Die Überschriften der Registerkarten sind nicht mehr sprechend und müssen teilweise schon erraten werden. Daran sollte man denken, wenn man Registerkarten immer weiter ausbaut und vergrössert.

Viel Spass damit
Gerd