Joomla 5 Notice

We are pleased to announce that as of January 29, 2024, all of our Joomla extensions are compatible with Joomla 5.

For all who are still updateing from Joomla 3 to Joomla 4: Joomla 4 Migration instructions are available here:

There is now a separate Documentation for Visforms for Joomla 4 and for Visforms for Joomla 5!

Forum

Visforms Subscription user can ask questions in our forum. Please log in with the relevant user first.
Everybody can access the forum for reading.

Please only ask 1 question per topic.

Erstellung eindeutige ID

More
1 year 11 months ago #8112 by Jörg Herrmann
Erstellung eindeutige ID was created by 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...

More
1 year 11 months ago - 1 year 11 months ago #8113 by Administrator IV
Replied by Administrator IV on topic 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

:idea: I recommend you the new and up-to-date documentation for Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/en/docs/
Most of this also applies retrospectively to Joomla 3.
Please only ask 1 question per topic :-).

:idea: Ich empfehle Dir die neue und aktuelle Dokumentation für Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/docs/
Das meiste gilt rückwirkend auch für Joomla 3.
Bitte immer nur 1 Frage pro Thema stellen :-).
Last edit: 1 year 11 months ago by Administrator IV.
The following user(s) said Thank You: MaliRaj

More
1 year 11 months ago #8117 by Jörg Herrmann
Replied by Jörg Herrmann on topic Erstellung eindeutige ID
Perfekt. Funktioniert genau so, wie ich es mir vorgestellt habe. 


Herzlichen Dank Ingmar

More
1 year 11 months ago #8123 by prffrost
Replied by prffrost on topic Erstellung eindeutige ID
aber direktes Speichen in die DB funktioniert nicht ... oder

More
1 year 11 months ago #8129 by Jörg Herrmann
Replied by Jörg Herrmann on topic 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



 

Moderators: Administrator AVAdministrator IV
Powered by Kunena Forum