Belege Nummerieren und mit Buchstaben versehen
Hallo zusammen, ich bin Neuling und habe praktisch keine Erfahrung mit Datenbanken und Programmieren, auch wenn ich schon einiges aufgebaut habe mit Ninox im letzten Jahr.
Hier mein Frage.
- Ich habe eine neue Tabelle Einnahmen-Ausgaben in der ich Belege erfassen möchte.
- Wenn ich einen neuen Datensatz erfasse, lasse ich mir mit folgender Formel eine neue Beleg-Nr. erstellen. B-0001, B-0002, B-0003 etc. funktioniert wunderbar... Könnte man auch weg lassen von mir aus ;)
'Beleg-Nr.' := "B-" + format(cnt(select 'Einnahmen-Ausgaben'), "0000")
Nun habe ich im Datensatz eine Auswahl für (1) Einnahmen und (2) Ausgaben. Mit denen ich jeweils das B- in der Beleg-Nr. durch ein A- oder E- ersetzen möchte.
Wir krieg ich es hin, dass der Buchstabe ersetzt wird, und die Nr. der jeweiligen Kategorie fortgeführt wird. wie im Bild zB. würde ich hier jetzt Einnahme auswählen und es sollte dann bei der Beleg-Nr. E-0003 stehen.
Ich müsste ja irgendwie mit contains ("E-", Beleg-Nr.) suchen und dann draufzählen...
Hab vieles probiert und nachgeforscht und blick einfach nicht durch :/...
Im Moment siehts so aus und die Buchstaben funktionieren:
if 'Einnahme / Ausgabe' = 1 then
select 'Einnahmen-Ausgaben' where contains("E-", 'Beleg-Nr.');
'Beleg-Nr.' := "E-" + format(cnt(select 'Einnahmen-Ausgaben' where 'Beleg-Nr.'), "0000")
else if 'Einnahme / Ausgabe' = 2 then
select 'Einnahmen-Ausgaben' where contains("A-", 'Beleg-Nr.');
'Beleg-Nr.' := "A-" + format(cnt(select 'Einnahmen-Ausgaben' where 'Beleg-Nr.'), "0000")
end
Wäre froh um Hilfe dass ich etwas weiter komme... Gibt sicher ne ganz einfache Lösung.
Liebe Grüsse aus der Schweiz
Johannes
11 Antworten
-
Hallo Johannes, ich bin mir nicht sicher aber müßtest du nicht noch +1 mit einsetzen.
if 'Einnahme / Ausgabe' = 1 then select 'Einnahmen-Ausgaben' where contains("E-", 'Beleg-Nr.'); 'Beleg-Nr.' := "E-" + format(cnt(select 'Einnahmen-Ausgaben' where 'Beleg-Nr.')+1, "0000") else if 'Einnahme / Ausgabe' = 2 then select 'Einnahmen-Ausgaben' where contains("A-", 'Beleg-Nr.'); 'Beleg-Nr.' := "A-" + format(cnt(select 'Einnahmen-Ausgaben' where 'Beleg-Nr.')+1, "0000") end
Kannst es ja mal versuchen
-
ein kleiner Hinweis zu dieser Thematik am Rande:
mit cnt() zu arbeiten ist IMHO der falsche Ansatz - löschst Du eine Beleg-Nr. kann es auf dem Weg passieren, dass Nummern zwei mal vergeben werden.
für Einnahmen z.B. so
'Beleg-Nr.' := "E-" + format(max(select 'Einnahmen-Ausgaben'.item(split('Beleg-Nr.',"-"),1))+1,"0000")
-
Hallo Johannes. Schreib mal in den "Trigger nach Änderung" Deines Auswalfelds folgenden Code:
if 'Einnahme / Ausgabe' = 1 then Ort := replacex(Ort, "^.", "E") else Ort := replacex(Ort, "^.", "A") end
-
Hallo Johannes. Bevor Du jetzt manuell weitermachst, teste doch bitte mal noch folgendes. Lege mal das Script für die Rechnungsnummernerstellung still und gib wieder als Trigger im Auswahlfeld folgendes ein. Das sieht zwar etwas schräg aus, legt Dir aber fortlaufend gleich die E- oder A- Nummern an. Mirko
if Auswahl = 1 then 'Beleg-Nr.' := "E-" + format(number(max((select 'Einnahmen / Ausgaben')[extractx('Beleg-Nr.', "^.") = "E"].substr('Beleg-Nr.', 2))) + 1, "0000") else 'Beleg-Nr.' := "A-" + format(number(max((select 'Einnahmen / Ausgaben')[extractx('Beleg-Nr.', "^.") = "A"].substr('Beleg-Nr.', 2))) + 1, "0000") end
Content aside
- Status Answered
- vor 2 JahrenZuletzt aktiv
- 11Antworten
- 117Ansichten
-
4
Folge bereits