Archiv des Intrexx Live! Forums

Hier sehen Sie die Foreneinträge aus dem Intrexx Live! Forum. Bis November 2016 war es das Forum für alle Fragen rund um die Software Intrexx von United Planet.
Seit November 2016 gibt es ein neues moderiertes Forum, das Intrexx Community Forum. Nutzen Sie bitte unbedingt dieses für aktuelle Fragen, Antworten und Informationen.

Wichtig: Dieses Forum dient als Archiv. Die Einträge beziehen sich oft auf ältere Versionen von Intrexx und entsprechen nicht mehr den aktuellen technischen Gegebenheiten.
Daher sollten alle Inhalte ausschließlich von Experten genutzt werden. Bei unsachgemäßer Anwendung kann es zu zeitaufwändigen Problemen oder Datenverlust kommen.
Übersicht > Intrexx Professional: Programming > Velocity Sript um Button auszublenden gesucht!

Velocity Sript um Button auszublenden gesucht!

Hallo Forum, habe ein Problem und suche eine Lösung!


Beschreibe den Vorgang mal, ich soll eine Parkplatz Buchungslösung für 2 Parkplätze erstellen.
Verwende dafür die Resourcenplannung

Diese sollen für einen Benutzer nur 3x pro Monat buchbar sein, kein
Serientermin möglich und werden am Ende des Monats für den jeweiligen
Benutzer abgerechnet.

Am Ende des Monats läuft ein Prozess mit dem ich die schon abgerechneten
Buchungen mit einem Feld (checkcontrol0E1198AD) B_VERRECHNET markiere.



Für die Bedingte Anzeige des Save Buttons muss ich also eine Abfrage der
Datensätze mit dem Vergleich USERID, MONAT=des errecneten Monats des
aktuellen Kalendermonats und des Feldes B_VERRECHNET ist false ausführen.



Für die Eingabe der Buchungen verwende ich nur den Monatskalender und es
sollten nur der aktuelle Monat + nächster Monat auswählbar sein.

Das hier funktioniert irgendwie nicht:
## Verstekcke den Save Button
#set($show_buttoncontrol57509CF9 = false)
## Aktueller Monat
#set($iMonth = $Math.add($DtUtil.now($User.getTimeZone()).getMonth(),1))
## Ermittle Anzahl der Datensätze
#set( $l_statement = $PreparedQuery.prepare($DbConnection, "SELECT COUNT(*) FROM XCAL33FC21D51111 WHERE LUSERIDINSERT = ? AND L_MONAT=?"))
$l_statement.setInt(1, $User.getId())
$l_statement.setInt(2, $iMonth)
#set( $l_recordCount = $l_statement.executeAndGetScalarValue(0))
$l_statement.close()

#if($l_recordCount < 4)
#set($show_buttoncontrol57509CF9 = true)
#end



Hoffe das erklärt mein Problem genauer, hat hier jemand eine Lösung?
20.04.2016 09:36 von JacotR
Hallo,

kenne mich jetzt mit dem Ressourcemodul und seiner Datenstruktur nicht wirklich gut aus.

Aber vielleicht ein Hinweis.

Auf den ersten Blick ist das VTL OK. Ersetze bei deinen Paramtern mal $iMonth durcheinen tatsächlich vorhandenen Intergerwert, z.B. 3

$l_statement.setInt(1, $User.getId())

$l_statement.setInt(2, 3)


So kannst Du dich rantasten ob evtl. ein Parameter nicht richtig gefüllt ist.

Alternativ kanst Du auch den Inhalt der Variablen in die portal.log schreiben zur Analyse, z.B.:

[code]$DEBUG.inspect($User)
$DEBUG.info($DEBUG.inspect($User))
$DEBUG.inspect($User.getLoginName())
$DEBUG.info($DEBUG.inspect($User.getLoginName()))


Evtl. funktioniert das SQl-Statement aufgrund von falschen Parameterinhalten nicht.
[/color]
20.04.2016 10:05 von AndreR
Hier fehlt auf jedenfall noch die Abfrage nach verrechnet. Dazu muss man wissen, dass Boolean-Felder drei Werte haben können, true,false und NULL

#set( $l_statement = $PreparedQuery.prepare($DbConnection, "SELECT COUNT(*) FROM XCAL33FC21D51111 WHERE LUSERIDINSERT = ? AND L_MONAT=? AND (B_VERRECHNET=? OR VARRECHNET IS NULL)"))
$l_statement.setInt(1, $User.getId())
$l_statement.setInt(2, $iMonth)
$l_statement.setBoolean(3, false)


Spannend beim Monat ist, ob hier 1-12 oder 0-11 drin steht.
Die getMonth() Methode liefert 0-11, daher ist es prinuzipiell richtig den Wert um 1 zu erhöhen, aber natürlich nur dann, wenn da wirklich auch 0-11 drinsteht.
Wie wird denn der Wert des Monats in das Feld reingeschrieben?

#set($iMonth = $Math.add($DtUtil.now($User.getTimeZone()).getMonth(),1))

20.04.2016 10:53 von MartinW
Das script funktioniert mit dem aktuellen Benutzer auf alle Datensätze in der Tabelle, dann wird der Button nach 3 Einträgen ausgeblendet.

#set($show_buttoncontrol57509CF9 = false)
## Ermittle Anzahl der Datensätze
#set( $l_statement = $PreparedQuery.prepare($DbConnection, "SELECT COUNT(*) FROM XCAL33FC21D51111 WHERE LUSERIDINSERT = ?"))
$l_statement.setInt(1, $User.getId())
#set( $l_recordCount = $l_statement.executeAndGetScalarValue(0))
$l_statement.close()

#if($l_recordCount < 3)
#set($show_buttoncontrol57509CF9 = true)
#end

Sobald ich diese Zeilen ändere hinzufüge funktioniert es nicht mehr!

#set($show_buttoncontrol57509CF9 = false)
## Aktueller Monat
#set($iMonth = $Math.add($DtUtil.now($User.getTimeZone()).getMonth(),1))
## Ermittle Anzahl der Datensätze
#set( $l_statement = $PreparedQuery.prepare($DbConnection, "SELECT COUNT(*) FROM XCAL33FC21D51111 WHERE LUSERIDINSERT = ? AND L_MONAT=?"))
$l_statement.setInt(1, $User.getId())
$l_statement.setInt(2, $iMonth)
#set( $l_recordCount = $l_statement.executeAndGetScalarValue(0))
$l_statement.close()

#if($l_recordCount < 3)
#set($show_buttoncontrol57509CF9 = true)
20.04.2016 12:58 von JacotR
Aber eigentlich will ich ein Eingabefeld mit dem errechneten Monat des Von Datums für den Vergleich des Feldes L_MONAT verwenden!

Onload der Seite;

function writemonth() {
// Onload entry page set current month
var htmlDateVon = getElement("74522CEC1F349679E1BCE5513BD9797B08F1EA49"); /*Datum Von datetimecontrol*/
var htmlMonth = getElement("F3523D69F4E656AA6AB2BD0CA518C586BB9C1AB6"); /*Monat integercontrol*/

var oDateFrom = getDateObject(htmlDateVon); /*erstellt Javascript DateObjekt */
var oMonth = oDateFrom.getMonth() + 1; /*Liest den Monat des Objekts */
Browser.setValue(htmlMonth,oMonth);

return true;
}
20.04.2016 13:01 von JacotR
Kann es sein, dass man bspw. für den kommenden Monat einen Parkplatz reserviert und abhängig vom Monat den man eingibt - direkt im Browser noch vor dem Speichern - der Button ausgeblendet werden soll?
Das würde nicht mit Velocity gehen sondern müsste rein mit Javascript realisiert werden.


function writemonth() {
// Onload entry page set current month
var htmlDateVon = getElement("74522CEC1F349679E1BCE5513BD9797B08F1EA49"); /*Datum Von datetimecontrol*/
var htmlMonth = getElement("F3523D69F4E656AA6AB2BD0CA518C586BB9C1AB6"); /*Monat integercontrol*/

var oDateFrom = getDateObject(htmlDateVon); /*erstellt Javascript DateObjekt */
var oMonth = oDateFrom.getMonth() + 1; /*Liest den Monat des Objekts */
Browser.setValue(htmlMonth,oMonth);
// Hier muss der Speichern-Button ausgeblendet werden
var htmlSaveButton = getElement(<guid des speichern-buttons>);
if(getMonthCount(oMonth)>3){
$(htmlSaveButton).hide();
}else{
$(htmlSaveButton).show();
}
return true;
}

function getMonthCount(iMonth){
//Hier muss man ermitteln wieviele Buchungen für den Monat bereits existieren
return
}


Ohne Erklärung was genau der Benutzer macht und wie das Portal sich verhalten soll ist es leider sehr schwer eine Lösung zu finden.
Auch mit der Aussage "funktioniert nicht mehr" kann man leider an der Stelle nicht viel anfangen, da syntaktisch alles korrekt ist und auf die Nachfragen von Andre und mir nach dem Inhalt im Monatsfeld leider keine Antwort gegeben wurde.
20.04.2016 13:46 von MartinW
Zurück | Alles über Intrexx | Impressum | Datenschutzerklärung

Über United Planet
© 2019 United Planet GmbH
Schnewlinstraße 2
79098 Freiburg