Weltmeister werden mit GUPTA gemacht

weltmeister-gupta-it-anwendung-notarzt-rettungsdienst-rettungsreifen-md-consulting

Eine Wintersportanlage gab am 29.12.2014 Startschuss in die neue Saison. Die Anlage wird mit einer Team Developer 5.2 Applikation mit SQLBase als Datenhaltungssystem betrieben.
Nun erlebte der Kunden, dass das Programm nach einer Migration auf Version TD 6.2 SP2 fast täglich aus unerfindlichen Gründen blockiert und abstürzt. Der Europacup und eine Woche später der Weltcup mit Fernsehen Live Übertragung standen an. Dies ist nicht nur ärgerlich, sondern eine Katastrophe.

So wurden unsere Techniker gerufen, aufgrund Ihrer vielfältigen Erfahrungen konnten sie bereits vielen Kunden in schwierigen Lagen helfen.

Der Verdacht war, dass das Problem auftritt bei unterschiedlichen Fenstern im Hintergrund.
Aus diesem Grund baute der Kunden in einer Nacht das Programm stark um, mit vollem Risiko, da Tests während des laufenden Betriebes nicht möglich waren.
Fazit: Auf jeden Fall ist der Betrieb das erste Mal problemlos gelaufen.
Weitere Arbeiten wurden durchgeführt: Einen großen Teil der nicht mehr verwendeten Programmteile wurden gelöscht. Das Programm ist dadurch kleiner geworden.
Diese Änderungen hatten zur Folge, dass die Abstürze zwar stark zurückgingen, aber leider immer wieder vorkamen.
Damit waren alle Möglichkeiten der Ferndiagnose durch MD Consulting ausgeschöpft, ein vor Ort Einsatz unausweichlich. Der MD-Techniker machte sich auf den Weg zum Kunden, um vor Ort weitere Untersuchungen durchzuführen:
Abstürze der SQL Base waren auf Netzwerkprobleme zurückzuführen (fehlerhafter Port in Switch)
Analyse der Installation der Datenbank SQL Base:

  • Installation SQL Console und Einweisung des Kunden in SQL Console
  • Reorganisation SQL Base
  • Erstellung Scripte für Unload/Load

Auf einem alten Computer installierte man die Vollversion TD 6.2 SP3. Dies funktionierte auch einwandfrei. Anschließend kopierte man den Sourceprogrammstand auf diese Maschine und erstellte hier die EXE.
Auf dem Client deinstallierte man die bisherige Deploy-Version und ersetzte sie durch die neue Version TD6.2 SP3.
Dies führte endlich zum Erfolg.
Am Freitag 23.01.2015 dann der erste Tag mit Fernsehübertragung. Der Ablauflaufplan einer Fernsehübertragung ist auf die Sekunde geplant. Eine Verzögerung darf hier nicht passieren.
Seit dem 23.01.2015 sind bis jetzt keine Programmabstürze mehr vorgekommen und es konnte der Ablaufplan des Fernsehens eingehalten werden.

Waren auch Sie mal in so einer Situation? Dann gehen auch Sie mit einem MD-Techniker vor Ort auf Fehlersuche, Fehlereingrenzung und Fehlerbehebung begeben.
Für einen ersten Kontakt wenden Sie sich bitte an Maik Vogt, telefonisch unter +49 (0)361-56593-0 oder per E-Mail.
Haben Sie Interesse an weiteren News, dann folgen Sie uns auf Twitter und RSS.


TD Mobile: Arbeiten mit Kombinationsfeldern (Combobox)

combobox-td-mobile-server-client-cloud-device-md-consulting

Seit der Version 1.1.2 des TD Mobile können Comboboxen nicht mehr nur mit Zeichenketten (Strings), sondern auch mit Werten einer UDV (user defined variable) gefüllt werden. Dies alles hat Gupta recht einfach und intuitiv gelöst, so dass man es auch ohne Studium der Dokumentationen leicht umsetzen kann.

Oft möchte man die Combobox(en) nicht nur mit Wertlisten befüllen, sondern auch einen Eintrag vorauswählen. Dies wird über die Wertbindung (Richtung Set) gesteuert. Man muss also nur eine Bindung vom richtigen UDV-Typ anlegen und diese entsprechend füllen. Das ist jedoch einfacher gesagt als getan, wenn man sich dafür entscheidet diese Vorauswahl auf Clientseite zu treffen. Man kann die Bindung mittels des SET-Befehls mit den gewünschten Werten zwar leicht füllen (siehe Ausschnitt 1).


Ausschnitt 1:
Set: CB_CLIENT_VALUE.nId 3
Set: CB_CLIENT_VALUE.sText "DREI"

Anschließend wird man aber feststellen, dass die Combobox dennoch weiter nur den ersten Listeneintrag anzeigt. Hierfür ist ein kleiner Trick mit Hilfe einer JavaScript-Funktion nötig. Es muss zusätzlich „von Hand“ der gewünschte Wert gesetzt und anschließend die Auswahl aktualisiert werden (siehe Ausschnitt 2).


Ausschnitt 2:
$("#cmbClient").val(value);
$("#cmbClient").selectmenu("refresh");

Dann ist der gewünschte Eintrag auch ganz ohne Serveraufruf vorausgewählt.

PS: Selbstverständlich sollte die Vorauswahl auch ohne den beschriebenen Workaround funktionieren, dieser Fehler wird bei Gupta unter der Nummer TDM-901 geführt und in einer der nächsten Versionen behoben.

Wer das alles einmal im Detail nachvollziehen möchte findet hier ein TD Mobile Beispiel, das sowohl die Vorgehensweise am Server als auch am Client demonstriert. Sollten Sie Fragen hierzu haben kontaktieren sie uns bitte, wir helfen Ihnen gern weiter.


Funktionalität des Expanders in TD-Mobile erweitern!

mein-expander-inhalt

Einleitung
In einer TD-Mobile-Anwendung soll ein Listen-Control — eine Liste — mit relativ vielen Einträgen angezeigt werden. Da die angezeigte Liste in den meisten Fällen den gesamten Bildschirm – vermutlich muss der Anwender sogar scrollen – in Anspruch nehmen würde, soll die Liste zunächst hinter einem Expander verborgen werden. Auf diese Art und Weise könnte die Liste zunächst verborgen bleiben und würde erst sichtbar, wenn der Anwender den Expander antippt. Ein Problem bleibt allerdings: standardmäßig wird beim Expander nur das Event Create unterstützt. Es würde bedeuten, dass die Liste beim Seitenaufbau mit umfangreichen Daten erzeugt würde. Das hätte zur Folge, dass der gesamte Seitenaufbau verzögert wird, obwohl der Anwender möglicherweise die Liste gar nicht anschauen will. Es sollte möglich sein, die Liste erst aufzubauen und anzuzeigen, wenn der Anwender den Expander antippt.

Lösungsansatz
Da es sich beim Expander-Control in TD Mobile um das reguläre JQuery Mobile Control handelt, bietet auch das TD-Mobile-Control die Möglichkeit, auf die (JQuery mobile) Ereignisse expand und collapse zu reagieren. Allerdings stellt sich die Frage, ob eine derartige Erweiterung in TD Mobile möglich ist. Die kurze Antwort lautet: es ist möglich. Die genaue Vorgehensweise wird im nächsten Abschnitt erläutert.

Lösung

Das Listen-Control wird über einen (komplexen) Bindungsarray und eine (ebenfalls komplexe) Bindung gefüllt, wobei die Bindungen über den Rückgabewert der entsprechenden Operation mit Werten versorgt werden. Diese Funktionalität bleibt erhalten. Entfernt wird lediglich der Aufruf dieser Operation Invoke beim Create-Ereignis.

Im nächsten Schritt muss der zusätzliche Event-Händler für das expand-Ereignis des Expanders implementiert und die Funktionalität, die beim Eintreten dieses Ereignisses ausgeführt werden soll, hinterlegt werden. Da beim Antippen des Expanders das Listen-Control mit den Daten aus der Datenbank gefüllt werden soll, muss als Aktion die im Quellcode hinterlegte Operation aufgerufen werden. Dieser Job wird durch Verwendung der TD Mobile-API im entsprechenden JavaScript erledigt.


Td.Data.Operation.get('name_der_operation').invoke();

Die Bezeichnung name_der_operation muss beim Nachvollziehen dieses Beispiels noch an die tatsächliche Operation auf der entsprechenden Seite angepasst werden.

Die Hinzufügung des Event-Handlers geschieht zum Zeitpunkt des Seitenaufbaus. Beim Create-Ereignis der Seite wird das JavaScript aufgerufen. Die Ausführung dieses Scripts bewirkt, dass der zusätzliche Event-Handler für das expand-Ereignis und die dann auszuführende Funktionalität zur Seite hinzugefügt wird. Wenn der Anwender jetzt die Seite aufruft, wird die JavaScript-Funktionalität mit dem expand-Ereignis erweitert: die Bindings, die die im Listen-Control zu visualisierenden Daten enthalten, werden durch den Aufruf der Operation mit Daten versorgt und das Listen-Control wird im Expander angezeigt. Die gesamte JavaScript-Funktion hat folgenden Inhalt:


$("#name_des_expander_controls").collapsible ({
expand: function(event, ui) {
Td.Data.Operation.get('name_der_operation').invoke();
}
});

In diesem Beispiel wird der Name des Expander-Controls im Quellcode referenziert. Standardmäßig legt TD Mobile die Controls mit dem Namen exp und einer laufenden Nummerierung an, z.B. exp1.

Der Aufruf dieser Funktion erfolgt beim Seitenaufbau, also beim Create-Ereignis auf der entsprechenden Seite. Hierdurch wird die zusätzliche Expander-Funktionalität der Seite
hinzugefügt.


On Create

Javascript name_der_JavaScript-Funktion

Das Hinzufügen der zusätzlichen Funktionalität für den Expander erfolgt beim Create-Ereignis der Seite.

Fazit
Es ist mit TD Mobile relativ einfach möglich, zusätzliche Funktionalität, die bereits in JQuery Mobile hinterlegt ist, aber nicht an TD Mobile durchgereicht wurde, hinzuzufügen. In diesem Beispiel wurde die Expander-Funktionalität so erweitert, dass auch auf das Ereignis des Antippens des Controls von Programmierer definierte Aktionen ausgeführt werden. In diesem Beispiel wurde der Event-Handler für das Ereignis „expandieren“ des Expanders und die dann auszuführende Operation hinzugefügt.


In 12 Monaten um die ganze (EDV-) Welt!

edv-support-it-computer-hilfe-seminar-prospekt-broschüre-heft-unterlagen-dokument

Am 31. Juli 2013 hat der Kunde eine Lizenz vom Team Developer 6.2 erworben, um eine seit 1993 bestehende Geschäftsanwendung weiterzuentwickeln und an die gesetzlichen Rahmenvorgaben anzupassen. Den Kunden selbst kannten wir bis zu diesem Datum nicht – er wurde daher auch erst mit diesem Datum in unserem System erfasst.

Der Kunde, so wurde kurze Zeit später deutlich, hatte sich allerdings noch nicht über die Konsequenzen der (automatischen) Umwandlung des Quellcodes in UNICODE hinreichend informiert oder sich nicht damit beschäftigt, sodass die Inbetriebnahme der neuen Entwicklungsumgebung zunächst scheiterte. Bei einem telefonischen Kontakt des Vertriebs mit dem Kunden am 14. August 2013 stellte sich heraus, dass es Probleme bei der Übernahme des „alten“ Quellcodes in die neue Entwicklungsumgebung gab, aber wir versicherten dem Kunden noch in diesem Telefonat, dass mit unserer Unterstützung – in der Regel vor Ort oder in einem unserer Büros – dieses Problem innerhalb ein bis zwei Arbeitstagen zu lösen sei.

Tatsächlich, so stellte sich dann heraus, wurde lediglich ein Manntag Begleitung durch einen, insbesondere im Bereich „Migration von Quellcode“, erfahrenen Entwickler von MD Consulting in Anspruch genommen, um den vorhandenen Quellcode in der neuen Entwicklungsumgebung kompilierbar und ablauffähig zu machen. Die Arbeit von MD Consulting war erledigt, es blieben noch einige Restarbeiten zu erledigen, zu denen sich aber der Entwickler des Kunden aber selbst im Stande sah.

Die Nachfrage unseres Vertriebs am 4. Oktober 2013 ergab, dass der Kunde die eintägige Vor-Ort-Unterstützung als „sehr wertvoll“ bewertete und die Einschätzung, dass „die Restarbeiten“ nunmehr alleine gestemmt werden konnten, noch einmal bestätigte.

Im November 2013 machten wir den Kunden auf die Verfügbarkeit von „TD Mobile“, der neuen Entwicklungsumgebung für mobile Geschäftsanwendungen aufmerksam, aber der Kunde sah in diesem Gespräch in dem Bereich, für den er zuständig ist, keinen Bedarf für mobile Anwendungen. Als wir den Kunden im Februar 2014 dennoch auf die Verfügbarkeit von „TD Mobile“ aufmerksam machen wollten, zeigte der Kunden zwar nach wie vor kein Interesse an mobilen Anwendungen, aber er wies daraufhin, dass es Änderungs- und Erweiterungsbedarf an der bestehenden, mit unserer Hilfe auf den Entwicklungsstand 6.2 gehobenen Anwendung gäbe, der sich nicht mehr mit der eigenen Mannschaft realisieren ließ.

Aufgrund der vielen Erfahrungen im Bereich der Übernahme des Quellcodes bestehender Anwendungen in die Wartung und Pflege durch MD Consulting, konnte der Kunde recht schnell überzeugt werden, dass MD Consulting auch für diese geplanten Arbeiten der geeignete Partner sei.
Am 24. Juli 2014, also in etwa ein Jahr nach dem ersten Kontakt, haben der Kunde und MD Consulting die Zusammenarbeit im Bereich „Wartung und Pflege“ einer bestehenden Gupta-Anwendung aufgenommen. In diesem Zeitraum hat der Kunde MD Consulting als verlässlichen Partner bei der Beschaffung der benötigten Lizenzen kennengelernt, sehr schnell danach auch erleben können, dass MD Consulting kompetente und mit der Materie vertraute Entwickler stellen kann, die sehr effektiv dabei helfen können, die neueste Version des Entwicklungswerkzeugs in Betrieb zu nehmen.

Für den Kunden schien es daher nur allzu logisch, sich bei der nächsten Herausforderung in diesem Bereich, wieder an MD Consulting zu wenden, um zu erfahren, dass auch die „Pflege und Wartung“ ihrer sehr spezifischen Geschäftsanwendung übernommen werden konnte.

Die Synergien zwischen dem Vertrieb von Lizenzen (Entwicklungsumgebung, Datenbanken), dem (Individual-) Coaching und der Softwareentwicklungsabteilung von MD Consulting lassen sich nicht eindrucksvoller darstellen.