Joomla! Ankündigung

Wir freuen uns mitteilen zu können, dass seit heute alle unsere großen Joomla Erweiterungen Spambotcheck, Visforms und Visforms Subscription auch für Joomla 4 zur Verfügung stehen. Damit ist die Migration unserer Softwareprodukte für Joomla 4 abgeschlossen.

Anleitungen für die Migration gibt es hier:

Forum

In unserem Forum erhalten Sie Antworten, direkt vom Entwickler. Sie benötigen eine aktive Visforms Subscription oder eine aktive Subscription für das Bootstrap Carousel Modul, wenn Sie in unserem Forum Fragen zur entsprechenden Erweiterung stellen wollen. Bitte melden Sie sich zuerst mit dem entsprechenden Benutzer an.

Lesender Zugriff auf das Forum ist für Jedermann möglich.

Topic-icon Erstellung eindeutige ID

Mehr
2 Monate 1 Woche her #8112 von Jörg Herrmann
Erstellung eindeutige ID wurde erstellt von Jörg Herrmann
Guten Morgen,

ich benötige ein Feld, welches eine Fortlaufende eineindeutige ID generiert. Natürlich könnte ich hierfür die ID des Datensatzes verwenden allerdings startet diese ID mit jedem neuen Formular bei „1“ und ist somit für mich nicht verwendbar.
Es soll also für jedes weitere Formular eine eigene Fortlaufende ID generiert werden können.

Beispiel:
Formular 1:
A12345
A12346
A12347
...

Formular 2:
B12345
B12346
B12347
...

Vorab schon mal herzlichen Dank...

Mehr
2 Monate 1 Woche her - 2 Monate 1 Woche her #8113 von Administrator IV
Administrator IV antwortete auf Erstellung eindeutige ID
Hallo Jörg,

die Lösung kannst du mit Hilfe eines Feldes vom Typ 'Listbox Sql' erhalten.
In dem SQL-Statement kannst du den Start des Zählers, statischen Text sowie die Zählweise selbst individuell festlegen.
Ein Beispiel für den Parameter 'SQL-Select-Statement' auf dem Reiter 'Grundeinstellungen' der Feldkonfiguration eines Feldes vom Typ 'Listbox Sql' wäre etwa:

select concat('A-', (select max(id) + 10000 from jx_visforms_2)) as value, concat('A-', (select max(id) + 10000 from #__visforms_2)) as label

Der Wert im Feld wäre dann bei einer größten Daten-ID (ohne Löschen = Anzahl der Datensätze) von 13 in den Daten zum Formular zum Beispiel: 'A-10013'
Der Wert inkrementiert um 1 für jeden neuen Datensatz.

Folgende Parameter sind in der Feldkonfiguration, Reiter 'Grundeinstellungen' zusätzlich zu setzen:
'Einzige Option vorauswählen' = 'Ja'
'Bei Änderung von nachladen' = mindestens 1 Feld (Listbox, Radio oder Checkbox)
'Bei Vorauswahl verstecken' = 'Ja' oder 'Nein' (bei 'ja' ist das Feld im Formular nicht sichtbar).

Wichtig ist auch noch dieser Parameter in der Feldkonfiguration, Reiter 'Erweitert':
'Eindeutige Werte erzwingen' = 'Ja'.
Falls in der Zwischenzeit ein anderer Benutzer ein gleiches Formular abgeschickt hat, kommt eine Fehlermeldung und das Formular muss einfach unverändert noch ein weiteres Mal abgeschickt werden.
Der aktuelle Wert für das Feld 'Listbox Sql' hat sich dabei aber bereits automatisch geändert/inkrementiert/angepasst.

Noch zwei Hinweise:
Mit einer kommenden Visforms Version wird es möglich sein, den Parameter 'Bei Änderung von nachladen' nicht zu setzen.
Mit einer kommenden Visforms Version wird es möglich sein, Defaultwerte (etwa für Textfelder) ebenfalls über ein SQL-Statement zu setzen.

Gruß, Ingmar

-- Visforms Developer --
Always consult our documentations before asking a question on our forum, the answer is most probably there. :)
Bitte konsultiere immer zuerst unsere Dokumentationen bevor du eine Frage im Forum stellst, die Antwort ist bestimmt da. :)
Enjoy Joomla!
Folgende Benutzer bedankten sich: MaliRaj

Mehr
2 Monate 1 Woche her #8117 von Jörg Herrmann
Jörg Herrmann antwortete auf Erstellung eindeutige ID
Perfekt. Funktioniert genau so, wie ich es mir vorgestellt habe. 


Herzlichen Dank Ingmar

Mehr
2 Monate 1 Woche her #8123 von prffrost
prffrost antwortete auf Erstellung eindeutige ID
aber direktes Speichen in die DB funktioniert nicht ... oder

Mehr
2 Monate 1 Woche her #8129 von Jörg Herrmann
Jörg Herrmann antwortete auf Erstellung eindeutige ID
Hallo prffrost.

Doch, das funktioniert. Ich musste ein paar kleine Anpassungen vornehmen:

select concat('A-', (select max(id) + 10000 from (Tabellenname mit Präfix)visforms_2)) as value, concat('A-', (select max(id) + 10000 from (Tabellenname mit Präfix)visforms_2)) as label

(Tabellenname mit Präfix)visforms_2 gibt an, welches Formular verwendet wird.

Da ich mehrere Formulare verwende musste ich auch in der DB nachschauen, welche Tabelle für welches Formular verwendet wird.
Bei mir sieht das ganze für zwei Formulare so aus:

Formular 1: 
select concat('A', (select max(id) + 10000 from ehuc5_visforms_1)) as value, concat('A', (select max(id) + 10000 from ehuc5_visforms_1)) as label

Formular 2: 
select concat('B', (select max(id) + 10000 from ehuc5_visforms_2)) as value, concat('B', (select max(id) + 10000 from ehuc5_visforms_2)) as label

Beste Grüße

Jörg



 

Moderatoren: Administrator AVAdministrator IV