Nach der Installation der 11g Datenbank stellte ich fest, dass u.a. folgende Schemen hinzugekommen sind:
- APEX : APEX_PUBLIC_USER, FLOWS_FILES u. FLOWS_030000
- Oracle Spatial: MDDATA, SPATIAL_CSW_ADMIN_USR, SPATIAL_WFS_ADMIN_USR .
Hier hat sich so Einiges getan und wir dürfen auf die weitere Entwicklung ruhig gespannt sein !
Wenn sich nun die Oracle 11g DB so munter neben der 10g DB tummelt, liegt es doch nahe, auch den neuesten Oracle MapViewer 11g Preview 2 zu installieren. Dieser läuft auf dem OC4J 11g Preview, hierfür gibt es noch keinen EM, d.h. das mapviewer.ear muss mit dem admin_client deployed werden.
Vorsichtshalber habe ich den OC4J 11g auf den Port 9998 gelegt, da der OC4J 10g auf dem Port 9999 läuft.
Die Installation des MapViewer verlief problemlos, einschliesslich der Neuinstallation des MVDEMO's :
Die Anzahl der Oracle Maps Demos ist auf 58 erweitert worden:
Sehr erfreulich ist auch die Erneuerung des Tiles-Managements, hier gibt es eine eigene Administrationsseite mit Vorschau der Tiled Maps:
Nun fehlt nur noch Forms 11g !
Grüße,
Friedhold
Donnerstag, 1. Mai 2008
Alles neu macht der Mai : Die 11g' s !
Eingestellt von
Friedhold Matz
um
21:05
0
Kommentare
Labels: Oracle DB 11g, Oracle Maps
GDV stellt neuen Spatial Commander vor
Die GDV Gesellschaft für geografische Datenverarbeitung mbH wird am 13./14. Mai eine neue Version des bewährten Spatial Commanders vorstellen. Dies ist ein JAVA- Rich Client zum Visualisieren, Analysieren und Editieren, natürlich auch direkt in Oracle Spatial. Mir gefallen an diesem Spatial-Tool vor allem:
- übersichtlich angeordnete Toolbars und Menüs
- wichtigste Editierfunktionen sind vorhanden
- Datenladen aus Dateien in Oracle Spatial
- Darstellung der Sachdaten auf 'Clickable Elements'
- Interaktion zwischen Sachdaten und Geometrien .
Und dies alles zum Nulltarif: Zum Kennenlernen akzeptabel, in einer Industrieanwendung ist der Support des Produktes notwendig und wird von der GDV angeboten.
Wenn man eine gute Datendrehscheibe zum Down- u. Upload der CAD- oder GIS-Formate (Konverter- oder GIS- basiert) hat, könnten die Daten mit dem Spatial Editor sehr einfach und übersichtlich bearbeitet werden.
Die GDV hat für die neue Version u.a. folgende Features angekündigt:
- neuer Updatemechanismus
- überarbeitete Benutzeroberfläche
- erweiterter Assistent zur Geoverarbeitung
- Geschwindigkeits- optimierte Verschneidungsfunktion
- zusätzliche Möglichkeiten von WMS- Diensten nutzbar
- Bildung von Pufferzonen.
Editoren direkt für Oracle Spatial und unabhängig von den großen GIS- Herstellern sind nunmal sehr rar !
Ich bin sehr gespannt auf die neue Version des Spatial Commanders !
Friedhold
Eingestellt von
Friedhold Matz
um
08:03
0
Kommentare
Labels: Oracle Spatial
Sonntag, 27. April 2008
PL/SQL und JavaScript als Sprachbasis für RIA's in den Deutschen Oracle Communities
Rich Internet Applications (RIA) Funktionalität wird mit JavaScript und AJAX erreicht; ob nun serverbasiert mit PHP, Ruby, Forms oder JSF.
Da liegt es doch nahe, dass man als Oracle Entwickler Altbewährtes anwendet: PL/SQL, JavaScript und XHTML.
Dank also an die drei Deutschen Oracle Communities Oracle Forms, Oracle APEX und Oracle Spatial/Maps : Die gemeinsame Sprachbasis ist PL/SQL und JavaScript ;-) !
Mit APEX und Oracle Maps wurde bereits die Interaktion in eindrucksvollen Demos praktiziert, mit der in Forms 11g enthaltenen JavaScript Unterstützung sollten dann auch Interaktionen von Forms mit Oracle Maps und APEX möglich sein.
Grüße,
Friedhold
Eingestellt von
Friedhold Matz
um
11:28
0
Kommentare
Labels: Oracle APEX, Oracle Forms, Oracle Maps
Freitag, 25. April 2008
Oracle Application Express für Oracle Forms Entwickler
Eigentlich wollte ich an dieser Stelle zusammenfassend über die Deutschen Oracle Communities berichten, dies muss ich aus aktuellem Anlass auf einen späteren Blog verschieben.
Als Teilnehmer des Oracle APEX Roundtables, im September vorigen Jahres von Bernhard Fischer-Wasels in Hamburg organisiert, stellte ich Mike Hitchwa die Frage nach eventuellen Migrationsmöglichkeiten von Oracle Forms nach APEX. Hier nun die Antwort von David Peake, Product Manager for Oracle Application Express:
A peek over the Application Express horizont :
'.. we are also working on Forms Migration. .. Using Oracle Form's XML conversion program we are looking to interpret the XML produced and derive the underlying design model to be able to generate Application Express components. As with the Access migration we don't expect to achieve 100% conversion but hopefully provide a valuable first-cut.'
Great News ! Diese APEX PL/SQL Components mit entsprechenden AJAX - Bibliotheken zu Rich Components angereichert und man erhält robuste und performante Web 2.0 - 2 Tier - Datenbankapplikationen !
Den Hinweis habe ich übrigens auf der Deutschen APEX Community - Seite gefunden und einen sehr gelungenen Forms und APEX - Vergleich findet man hier: Oracle Application Express for Oracle Forms Developers .
Friedhold
Eingestellt von
Friedhold Matz
um
21:52
1 Kommentare
Labels: Oracle APEX, Oracle Forms
Samstag, 5. April 2008
Mashup Oracle Maps und Google Maps (3)
Nachdem wir im Teil (2) der Mashup Serie dynamische POI's aus dem mvdemo - Schema aktiviert haben, möchte ich nun den Aufruf von Google Maps aus Oracle Maps erklären. Hierbei wird, wie bereits im Beitrag zu Detail Maps .. gezeigt, in Oracle Maps ein InfoWindow mit IFRAME und der URL zu der Google Maps Applikation aufgerufen:
Dabei werden die Koordinaten des Mausklick und die Zoomstufe übermittelt und
in Google Maps in der setCenterMap Function gesetzt:
Die POI Infos sehen wir in Oracle Maps :
und natürlich auch in Google Maps:
Viel Spaß mit den Mashups!
Friedhold
Eingestellt von
Friedhold Matz
um
20:58
0
Kommentare
Labels: AJAX, Google Maps, Mashups, Oracle Maps
Sonntag, 23. März 2008
Google Maps Mashup mit AJAX - PL/SQL- DAD (2)
Nachdem wir im Teil 1 die Funktionsweise des Google Maps Clients anhand der XML-Datei nachgewiesen haben, ersetzen wir im Teil 2 die XML-Datei durch den bewährten PL/SQL-DAD Zugriff.
Im mvdemo - Schema implementieren wir folgende Procedure zur serverseitigen Bereitstellung der AJAX-Daten:
Diese Procedure testen wir mit der URL: http://localhost:7777/pls/mvdemo/PLSQLAJAX_GENXML_CA
und erhalten die bereits mit der XML-Datei aus Teil 1 simulierten Daten, nun jedoch im dynamischen PL/SQL - Zugriff:
Im Teil 1 erfolgte der Funktionsnachweis der AJAX-Clientseite und jetzt können wir die dynamischen XML-Daten aus der Datenbank visuell verifizieren.
So brauchen wir nur noch die Datenquelle in der GDownloadUrl - Funktion auswechseln:
GDownloadUrl("http://localhost:7777/pls/mvdemo/plsqlajax_genxml_ca", function(data) { .. }
//GDownloadUrl("http://localhost:7777/plsqlajax_genxml2.xml", function(data) { .. }
und wir erhalten:
Einfacher geht es eigentlich nicht, zumal mit dem PL/SQL-DAD Zugriff die performanteste Technologie angewendet wird.
Friedhold
Eingestellt von
Friedhold Matz
um
18:20
0
Kommentare
Labels: AJAX, Google Maps, Mashups, Oracle Maps
Google Maps POI's mit AJAX - XML-Datei (1)
Die Möglichkeit zur Integration von Oracle Maps und Google Maps, sogenanntes Mashup, möchte ich mit der Darstellung von "Points of Interest" (POI) in Google Maps auf Basis des Oracle-DB - Zugriffes beginnen.
Der serverseitige Datenzugriff für AJAX-Clients wird häufig mit Java Servlets, PHP oder neuerdings mit Ruby on Rails realisiert.
Oracle stellt mit dem PL/SQL Toolkit, sozusagen im Database Core, umfangreiche HTTP-Funktionen bereit, mit denen sich AJAX und PL/SQL Datenzugriffe recht elegant verbinden lassen. Letztendlich werden diese Funktionen u.a. in APEX angewendet. Die APEX Community hat zum Thema APEX und AJAX eine sehr gut nachvollziehbare TODO-Folge veröffentlicht.
Mit der AJAX-Technologie können Datenschnittstellen abgefragt werden, die sinnvollerweise Daten in einem für Javascript gut verarbeitbarem Format, z.B. in XML oder JSON, liefern.
Zur Entwicklung des AJAX-Clients habe ich die Daten der POI's im XML- Format bereitgestellt:
Diese Datei (plsql_genxml.xml) legt man unter:%ORACLE_HTTP_SERVER%\Apache\Apache\htdocs ab, die URL zu dieser Adresse lautet: http://localhost:7777/plsql_genxml.xml .
Nun kann man mit der Google Maps - Function :
GDownloadUrl("http://localhost:7777/plsqlajax_genxml2.xml", function(data) { .. }
die XML-Daten lesen:
Die Google Maps Seite wird unter : %ORACLE_HTTP_SERVER%\Apache\Apache\htdocs abgelegt und der Start erfolgt mit der URL: http://localhost:7777/plsqlajax_gmap.html
Der Javascript - Code ist sehr kompakt, übersichtlich und gut lesbar:
function load() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map"));
//map.addControl(new GSmallMapControl());
//map.addControl(new GMapTypeControl());
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
map.addControl(new GScaleControl()) ;
map.addControl(new GOverviewMapControl()) ;
// Logging
var sTemp = self.location.href
GLog.write(sTemp);
map.setCenter(new GLatLng(37.7725, -122.39607), 13);
map.enableScrollWheelZoom();
//GDownloadUrl("http://localhost:7777/pls/mvdemo/plsqlajax_genxml_ca", function(data) {
GDownloadUrl("http://localhost:7777/plsqlajax_genxml2.xml", function(data) {
var xml = GXml.parse(data);
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var name = markers[i].getAttribute("name");
var address = markers[i].getAttribute("address");
var type = markers[i].getAttribute("type");
var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
var marker = createMarker(point, name, address, type);
// Logging
GLog.write(point+ " / " + address + " / " + type );
map.addOverlay(marker);
}
});
}
}
function createMarker(point, name, address, type) {
var marker = new GMarker(point, {title: name, icon: customIcons[type]} );
var html = name + " / " + address;
GEvent.addListener(marker, 'click', function() {
marker.openInfoWindowHtml(html);
});
return marker;
}
..
Das Ergebnis sieht dann in Firefox und Firebug so aus:
Die gelieferten Daten können im Google Logger und in der Response - Ausgabe des Firebug betrachtet werden.
Friedhold
Eingestellt von
Friedhold Matz
um
11:29
0
Kommentare
Labels: AJAX, Google Maps, Mashups, Oracle Maps
Samstag, 22. März 2008
Javascript Logging mit dem Firefox-Plugin Firebug
Zum Programmieren mit Javascript ist Firefox mit dem Plugin Firebug zum schnellen Auffinden von z.B. Definitions-Fehlern ein sehr nützliches Entwicklungswerkzeug. Es zeichnet sich besonders durch das Binding von Grafik- und Codedarstellung und die intuitiven Bedienung aus.
Sehr wichtig sind für eine gute Laufzeitumgebung, neben einem effizienten Deployment, auch die jeweiligen Logging - Mechanismen: Hierfür gibt es die ausgefeilten und weitestgehend symmetrisch anwendbaren Log4 {J / JS / NET / PLSQL ..}, d.h. mit Log4JS besteht auch diese Möglichkeit für Javascript.
Bei der Erstellung von Google Maps Anwendungen habe ich aber den Google Logger schätzen gelernt. Hierbei wird nur :
..
GLog.write(point+ " / " + address + " / " + type );
..
aufgerufen - einfach und gut (übrigens ohne Initialisierung!):
Nun gibt es aber speziell für den Firebug recht ausgefeilte Möglichkeiten zum Logging, nachfolgendes Beispiel zeigt einen Leistungsausschnitt:
..
function foo(s) {
bar(s + ' jkl;');
}
function bar(s) {
baz('qwerty ' + s);
}
function baz(s) {
// print stack trace
console.trace();
}
function fib(n) {
// count # of times called
console.count('Number of times fib() called');
if(n == 0 || n == 1) {
return 1;
} else {
return fib(n - 1) + fib(n - 2);
}
}
..
// 5 logging methods
console.log ('Using console.log()');
console.info ('Using console.info()');
console.debug('Using console.debug()');
console.warn ('Using console.warn()');
console.error('Using console.error()');
// printf style formatting
console.log('The value of %s is %d', 'foo', 516);
// can print complex structures
var array = [1, 1, 2, 3, 5, 8];
var object = {'foo': true, 'bar': 3.14, 'baz': [1, 2, 3]};
console.log(array);
console.log(object);
// can even print DOM elements
console.log(document.getElementById('header'));
// stack trace output
foo('asdf');
fib(10);
..
Das Logging-Protokoll in der Firebug-Console (Aktivierung mit F12) sieht so aus:
Dank Firefox und Firebug gibt es für die Entwicklung komplexer Oracle Maps Applikationen und Web 2.0 Mashups recht gute Voraussetzungen.
Ein frohes Osterfest wünscht
Friedhold
Eingestellt von
Friedhold Matz
um
21:33
0
Kommentare
Labels: Javascript, Oracle Maps
Donnerstag, 3. Januar 2008
Detail Maps im Userdefined InfoWindow von Oracle Maps (2)
Im Teil 2 über Userdefined InfoWindows möchte ich meinen Lösungsvorschlag zu Detail Maps, auch Nested Maps genannt, vorstellen (Demo-Video) :
In der 'Master Map', wird wie im Teil 1 beschrieben, die Mouseclickposition in dem IFRAME - InfoWindow an die Detail Map übergeben:
In der Detail Map werden die Parameter aus der URL separiert und der übergebene Masterpoint als Home Marker gesetzt:
In der Detail Map kann in den speziellen FOI's navigiert werden: Natürlich läßt sich auch das Userdefined InfoWindow aus Teil 1 aufrufen ..
In diesem Demo wird ebenfalls der Zugriff auf die PL/SQL-DAD 'mvdemo' vorausgesetzt, die Programme stehen hier zum Download bereit.
Die kleine Serie soll zeigen, dass man mit geringem Aufwand (JavaScript und PL/SQL) Userdefined InfoWindows recht effektvoll mit IFRAMES einsetzen kann.
Viel Erfolg,
Friedhold
Eingestellt von
Friedhold Matz
um
15:04
0
Kommentare
Labels: Oracle Maps
Mittwoch, 2. Januar 2008
Userdefined InfoWindows mit IFRAME in Oracle Maps (1)
In Oracle Maps können Info Windows entsprechender 'Features of Interest' - FOI's entweder mittels Mapbuilder statisch oder per XML-RPC im clientseitigen JavaScript dynamisch zugeordnet werden. Benötigt man bei mehrfach überdeckenden FOI-Layern jedoch Informationen, die sich z.B. auf die Basemap beziehen, kann der nachfolgend dargestellte Lösungsvorschlag (Demo-Video) weiterhelfen.
Voraussetzung zum Nachvollziehen sind die Oracle Maps Demos und der zuvor eingerichtete PL/SQL-DAD Zugriff auf das Schema 'mvdemo'.
Hierfür habe ich das unter:
%OC4J_HOME%\j2ee\home\applications\mapviewer\web\fsmc\tutorial\samples befindliche Demo: themeBasedFOIVisible.html in: themeBasedFOIVisibleIframe.html kopiert und folgende Änderungen eingefügt:
1.) Aktivierung des rechten Mouseclicks in der Hauptfunktion:
..
mapview.addEventListener("mouse_right_click", mouseclickright);
..
2.) Rechte Mouseclick-Function inkl. IFRAME - Aufbau:
In der JavaSript-Function wird die x/y-Location des rechten Mouseclicks an die PL/SQL-DAD Procedure mvdemo.show_info(p_x, p_y) übergeben.
Dort wird zunächst anhand der Punktkoordinaten die zugehörige Geometry gesucht -
Function: pkg_geo_mvdemo.fnc_get_fip:
Aus der Tabelle COUNTIES wird die Geometry-ID aus FIPSSTCO ermittelt und es werden in der Procedure show_county ausserdem falsche Punktkoordinaten erkannt.
- Ungültige Punktkoordinate - im Pazifik gibt es natürlich kein County :
- So sieht das Userdefined InfoWindow mit IFRAME letztendlich aus:
Die Programme stehen zum Download bereit.
Viel Spaß dabei,
Friedhold
Eingestellt von
Friedhold Matz
um
19:11
0
Kommentare
Labels: Oracle Maps
Einrichtung eines PL/SQL - DAD für das Schema mvdemo
Seit der Einführung der Oracle HTMLDB u. APEX wird die Web-Konfigurationsseite zum Einrichten anwenderdefinierter PL/SQL-DAD's nicht mehr angeboten, so dass die hier beschriebene, manuelle Einrichtung notwendig ist. Als Datenbankschema verwenden wir das 'mvdemo', da wir uns in Folgebeiträgen hierauf beziehen werden.
Im Verzeichnis %APEX_HOME%\Apache\modplsql\conf wird die DAD-Definition in die dads.conf eingetragen:
Danach wird der Apache neu gestartet und ein kleine Test-Procedure im Schema 'mvdemo' gespeichert:
Entsprechend der 'Location' in der DAD-Definition ist der URL-Path vorgegeben und wir testen den PL/SQL-DAD Zugriff:
Der Konfigurationseintrag und das Testprogramm sind hier zu finden.
Friedhold
Eingestellt von
Friedhold Matz
um
11:33
0
Kommentare
Labels: Oracle Maps, Oracle PL/SQL
Donnerstag, 29. November 2007
Mein Vortrag zur 20. DOAG Tagung : "Oracle Maps in der Praxis"
Nach einer Pause möchte ich meine Beiträge in meinem Blog wieder forcieren: Eine Applikationsmigration und die Vorbereitung meines DOAG-Vortrages inkl. Life-Demos haben mich stark beschäftigt. Der Vortrag war dann auch am 22. Nov. sehr gut besucht.
Letztendlich bin ich ganz zufrieden, da die Interaktions-, Analyse- und Präsentationsfähigkeit von Oracle Maps nachgewiesen werden konnte. Für die Interaktion mit den Sachdaten verwende ich eine Foms 6i Fachschalenapplikation, geschaffen zur Interaktion mit Bentley Microstation DGN - Files. Diese Fachschale ist eine 'On Top' - Applikation, d.h. sie liegt stets über der Kartenapplikation.
Folgende Interaktions-Funktionen wurden realisiert:
- Lokalisieren von 1 .. n Flächen von der Fachschale zu Oracle Maps, markierte Darstellung inkl. Hervorhebung der aktiven Fläche
- auswählen von Flächen in Oracle Maps (clickable Polygons) und Übernahme in die Fachschale durch Re-Query
Mit Oracle Maps konnte ich folgende Funktionen erfüllen:
- User Defined Windows auf der Basis von displayInfoWindow und IFRAME für :
o Informations-Klick (rechte Maustaste) durch dynamisches HTML erstellt in PL/SQL Webtool package
o setzen von 'Points of Interest' und Informationserfassung
o 'Nested Maps' zur Detaildarstellung der Klickposition der Mastermap
- Darstellung von 'Points of Interrest' und 'Layers of Interest'
- Geometrische Abfragen mit einem Rechteck, Kreis und Polygon und Sachdatenbestimmung
o nach 'Points of Interest'
o nach Flächen
- Marquee - Zoom
Diese Funktionen wurden in der Oracle Maps Legende unter 4 Modi implementiert:
- View mode
- Select mode
- Query mode
- Zoom mode .
Die Funktionen wurden ausschliesslich mit PL/SQL und Javascript realisiert und die ca 170 Codezeilen sprechen ausserdem für einen sehr guten "Code-Wirkungsgrad".
Besten Dank nochmals an Bernhard Fischer-Wasels und Carsten Czarski von Oracle für die Unterstützung in der Vorbereitungsphase und bei der Durchführung des Vortrages.
Einfach prima, was man mit Oracle Maps realisieren kann.
In Folge möchte ich über einige Lösungsdetails berichten.
Friedhold
Eingestellt von
Friedhold Matz
um
14:32
0
Kommentare
Labels: Oracle Forms, Oracle Maps
Gute Nachrichten für Forms auf der 20. DOAG - Tagung
Die 20. DOAG Tagung vom 21. - 22. November in Nürnberg stand dieses Jahr eindeutig im Zeichen der SOA - Technologien.
So konnte ich mir als passionierter Forms-Fan den Vortrag von Grant Ronald, Group Product Manager in Oracle's Tools Division, verantwortlich für Oracle Forms, JDeveloper and ADF, anhören und daraus mitnehmen, dass die Forms-Integration und Interaktion mit anderen Technolgien über die Middletier per SOA passieren soll. Dabei erfolgt die Interaktion durch Calling & Consuming von Forms heraus. Dass nun die Forms-Logik in Richtung Service-Orientierung refactored werden muss, liegt völlig nahe, zumal Oracle sich deutlich den serverbasierten (3-tier) Architekturen : APEX, J2EE, PHP und neuerdings Ruby on Rails stellt und unterstützt.
Die letztendlich als Webbrowser-Seiten dem Nutzer angebotenen Applikationen zeichnen sich durch gute Bedienbarkeit aus. Die oben genannten Middletier-Technologien wenden hierfür ausnahmslos XHTML, CSS & AJAX und Javascript an, so dass nun in Oracle Forms 11g für die Interaktion mit Javascript ein Javascript-Event-Trigger integriert ist.
Analog zur AJAX-Technologie, bei der man Informationsregionen in Webseiten per XHR asynchron auffrischen kann, ist es nun mit Oracle Forms 11g auch möglich, auf asynchrone Nachrichten an der AQ zu warten.
Das ganze Szenarion ist somit komplett: AJAX - getriebene XHTML - Applikationsseiten mit integrierten und interagierenden, stark transaktionalen Forms 11g -Modulen inkl. partieller asynchroner Events an AQ's .. Als PL/SQL-Programmierer kann man sich dies auch recht gut auf der Basis von APEX vorstellen.
Von Sun ist zu hören, dass an 'schlanken' JRE's gearbeitet wird (Java 7), auch in Hinblick auf Applets - sozusagen auch eine Renaissance der Applets bevorsteht.
Alles gute Nachrichten für uns Forms - Enthusiasten.
Friedhold
Eingestellt von
Friedhold Matz
um
13:10
0
Kommentare
Labels: Oracle Forms, SUN WebStart
Sonntag, 16. September 2007
Logging in Forms und PL/SQL
Derzeit verwende ich in Forms und Stored PL/SQL einen eigenen Logging-Mechanismus in einer Logger-Table:
Soweit so gut : Wenn ich jedoch mit JAVA anfangen möchte, sollte der JAVA-Logger mit dem PL/SQL-Logger der Client- und Serverseite sinnvollerweise identisch sein.
Hier der JAVA-Logger, wonach ich die PL/SQL-Logger angleichen möchte:
Man stelle sich das Szenarion einmal vor: Javascript -> Forms 11g -> PJC -> DB-PL/SQL ..
Friedhold
Eingestellt von
Friedhold Matz
um
21:16
0
Kommentare
Labels: Oracle Forms, Oracle PL/SQL
Montag, 3. September 2007
Autocomplete Combobox
Mit der AJAX - Technologie wird das Handling auf Webseiten anwenderfreundlicher.
Der nützliche Effekt, möglichst nur sich ändernde dynamische Inhalte zu übertragen,
wird auch ergänzt durch die Anwendung sogenannter Autocomplete Items :
Ich möchte hier nun nachfolgend ein Demo mit einer Autocomplete Combo Box in Forms 6i vorstellen.
In der Lösung wird auf einem Stacked Canvas ein 'List Block' erstellt, der je nach Tasteneingabe in der Combo Box dynamisch gefiltert wird. Häufig findet man auch die Bezeichnung 'Combo Box inkl. Filter' zur treffenden Beschreibung dieser Komponentenfunktion. Mit dem Aktivieren der Combo Box wird der 'List Block' aufgeklappt und dynamisch mit jedem Tastendruck aufgefrischt:
Anwendung
1.) In die jeweilige Form wird aus der cbox.olb die Objectgruppe OG_CBOX per Drag & Copy integriert:
2.) Das Combo Box Item ist auf dem übernommenen C - Canvas platziert und sollte hiermit entsprechend angepasst werden.
3.) Die Position des 'List-Blockes' ist im dafür verwendeten Canvas anzupassen:
4.) Die Initiierung der Autocomplete Combo Box erfolgt im WHEN-NEW-FORM-INSTANCE Trigger:
pkg_CBOX.populate_auto_cbox(
'CBOX',
'select name, name
from europecities
order by 1',
'C.DUMMY');
.
Das hiermit übernommene Item C.DUMMY sollte durch das reale NEXT-ITEM der Combo Box ersetzt werden.
Der Test der Lösung kann folgenden Stufen erfolgen:
- Download
- Scott/Tiger: SQL>@cr_eurocities.sql
- ausführen und testen der Form chk_lboxproto2
- neue Form erstellen, nach 1.) : Übernahme der OG_CBOX
- ausführen und testen der neuen Form .
Viel Spaß,
Friedhold
Eingestellt von
Friedhold Matz
um
22:55
0
Kommentare
Labels: Oracle Forms
Dienstag, 14. August 2007
Ein PL/SQL String-Tokenizer mit mehreren Trennzeichen
Häufig sieht man String-Tokenizer, die nur ein Trennzeichen zwischen den Tokens verarbeiten können. Hiermit nun eine Lösung mit beliebig vielen Trennzeichen: download Package.
Anwendung
SQL> declare
separators varchar2(10) :='-;/,. ''';
string varchar2(100):= 'Black;Blue-Green/Yellow''Green-Blue Black Red.Yellow';
token varchar2(100);
begin
token:=parse_string.strtok(string, separators);
while token is not NULL loop
dbms_output.put_line(token);
token:= parse_string.strtok(NULL, separators);
end loop;
end;
/
Black
Blue
Green
Yellow
Green
Blue
Black
Red
Yellow
PL/SQL procedure successfully completed.
SQL>
.
Friedhold
Eingestellt von
Friedhold Matz
um
21:40
0
Kommentare
Labels: Oracle PL/SQL
Sonntag, 12. August 2007
Ausgabe aktiver Locks in einem Formsmodul
Es kommt vor, daß wir in Supportanfragen nach dem Verursacher der Datensatzsperre gefragt werden, da man seine Datenänderungen nicht speichern kann. Hier nun ein Formsmodul (6i) zur Ausgabe der Locks, im unten dargestellten Beispiel unter Scott:
www.free-dev.com/locksall.htm
Voraussetzung
SQL> conn sys/passwd as sysdba
SQL> grant select on v_$locked_object to scott;
Grant succeeded.
SQL> conn scott/tiger
SQL> update emp set sal=4000 where ename='FORD';
1 row updated.
SQL> insert into dept values (50, 'MANAGEMENT', 'Charlston');
1 row created.
.
Ausgabe
Friedhold
Eingestellt von
Friedhold Matz
um
12:34
0
Kommentare
Labels: Oracle Forms
Sonntag, 5. August 2007
Erstellung von Excel.XLS - Dateien aus Forms 6i ohne OLE
Unlängst hatte ich folgenden Blog entdeckt: http://sanjeev-oracle-world.blogspot.com/ und die darin vorgestellte serverseitige Lösung getestet. Nach kleineren Tests (Umlaute) habe ich dann eine Clientversion für Oracle Forms 6i angepasst: http://www.free-dev.com/create_xls4emp.htm
Das Demo läuft auf Scott und erstellt EXCEL 2002+ XLS-Files als XML.
Die Sreenshots und der Sourcecode sind nachfolgend zu finden:
DECLARE
l_res VARCHAR2(250);
BEGIN
--
-- Ablauf zur EXCEL-Erstellung
--
-- Erstellen des Files
l_res:=pkg_genexlxml.create_excel('C:\TEMP', 'emp.xls') ;
if l_res<>'OK' then
prc_show_error(l_res);
raise form_trigger_failure;
end if;
..
-- Erstellen des Worksheets
pkg_genexlxml.create_worksheet( 'sheet1');
..
-- Erstellen der Styles
l_res:=pkg_genexlxml.create_style( 'sgs1' , 'Courier', 'red', 16, TRUE , p_backcolor => 'LightGray', P_underline => 'Single' );
if l_res<>'OK' then
prc_show_error(l_res);
raise form_trigger_failure;
end if;
..
-- Definieren der Zeilenhöhe, falls speziell
pkg_genexlxml.set_row_height ( 1, 20 ,'sheet1' );
..
-- Definieren der Spaltenbreiten
pkg_genexlxml.set_column_width( 1, 50, 'sheet1' );
..
-- Schreiben der Header-Spalten
l_res:=pkg_genexlxml.write_cell_char( l_r,1, 'sheet1', 'EMPNO' ,'sgs1' );
if l_res<>'OK' then
prc_show_error(l_res);
raise form_trigger_failure;
end if;
..
-- Schreiben der Daten in die einzelnen Spalten
l_res:=pkg_genexlxml.write_cell_num ( l_r, 1, 'sheet1' , :EMP.EMPNO, 'sgs3' );
if l_res<>'OK' then
prc_show_error(l_res);
raise form_trigger_failure;
end if;
..
EXCEPTION WHEN OTHERS THEN
NULL;
END;
.
Besten Dank an Sanjeev Sapre.
Friedhold
Eingestellt von
Friedhold Matz
um
20:44
0
Kommentare
Labels: Oracle Forms
Montag, 28. Mai 2007
Start my blog.
- Oracle Designer
- Oracle Forms
- Oracle Reports
- Oracle PL/SQL
- Oracle Datenbank
- Oracle Maps
Eingestellt von
Friedhold Matz
um
00:04
1 Kommentare
Labels: Allgemeines