String mit Platzhalter in Datenbank speichern

audiator

Grünschnabel
Hallo,

ich habe eine Windows Form (Zahlungsbedingungen anzeigen | hinzufügen | bearbeiten | löschen). Auf dieser Form befindet sich ein DataGridView zur Anzeige der verschiedenen Zahlungsbedingungen aus einer SQLite-DB.
Nun möchte ich in einer Textbox den Text für Rechnungen mit einem oder mehreren Platzhaltern eingeben. Da einige Kunden unterschiedliche Zahlungsbedingungen hinterlegt haben.Ungefähr so:

Zahlungsbedingung: Bei Zahlungen innerhalb von <PLATZHALTER1> Tagen (bis zum: <PLATZHALTER2>) gewähren wir Ihnen <PLATZHALTER3> % Skonto.

Im Rechnungsformular sollen nach Auswahl des Kunden diese Platzhalter mit Daten aus bereits gefüllten Variablen ersetzt werden.

z.B für Kunde 1 hinterlegte Zahlungsbedingung:
14 Tage 3% Skonto
Rechnungsdatum: 10.10.2010

Oben genannter String sollte dann so aussehen:

Zahlungsbedingung: Bei Zahlungen innerhalb von 14 Tagen (bis zum: 24.10.2010) gewähren wir Ihnen 3% Skonto.

Wie kann ich das Umsetzen****

Ich hoffe ich konnte mein Problem einigermaßen verständlich erklären!?

Vielen Dank schonmal für Eure Hilfe!! :)

Gruss
Marco

Visual Studio 2010
vb.net Framework 3.5
SQLite 3
 

Nico Graichen

Erfahrenes Mitglied
Hi und herzlich willkommen auf tutorials.de

Ich versteh dein Problem nicht ganz. Geht es dir um das Ersetzen der Platzhalter durch die eigentlich Daten?
Wenn ja: Hier hilft die String.Replace oder (wenn du die Chance hast, die Templates anzupassen) String.Format weiter.

Wenn nicht bitte ich dich dein Problem mal anders zu beschreiben.
 

audiator

Grünschnabel
Hallo Nico,

ja... es geht mir um das Ersetzen der Platzhalter durch Daten.
String.Replace... *vor die Stirn klatsch* , das ich da nicht selbst drauf gekommen bin!

Gibt es vielleicht noch eine einfachere Lösung?

z.B. den Variablennamen in den String einzubauen?

Also ungefähr so:
In dem Rechnungsformular nach Auswahl des Kunden werden die Variablen im Formular:

_sTage, _sProzent, _ZDatum (=Rechnungsdatum + _sTage)

mit Daten gefüllt.

Ich hatte mir evtl. vorgestellt diese Variablennamen direkt im String für die Zahlungsbedingungen unterzubringen und den String dann so in die DB zu schreiben.

Zahlungsbedingung: Bei Zahlungen innerhalb von _sTage Tagen (bis zum: _ZDatum) gewähren wir Ihnen _sProzent% Skonto.

Und das dann die im String stehenden Variablennamen automatisch (also ohne String.Replace) durch die Daten der Variablen ersetzt werden.

Geht das? und wenn ja... was muss ich bei dem String für die Zahlungsbedingung den ich in die DB speicher beachten?

Gruss
Marco
 

gander

Mitglied
wenn du zum beispioel einen string "String" hast, könntest du eigentlich den string so aufbauen:
String = "Zahlungsbedingung: Bei Zahlungen innerhalb von " & tage & " Tagen (bis zum: " & datumBis & ") gewähren wir Ihnen " & skonto & "% Skonto.
tage, datumBis und skonto sind dann eben auch strings die du mit den Daten aus der Datenbank füllst.
 

audiator

Grünschnabel
Hallo Nico, Hallo Gander,

vielen Dank für Eure Tipps!

Ich hab viel rumprobiert. Es aber letzendlich doch per String.Replace gelöst.

VIELEN DANK FÜR EURE BEMÜHUNGEN!! :)

Gruss
Marco
 

Nico Graichen

Erfahrenes Mitglied
Hi

@audiator
Gerne doch. Markier den Thread bitte noch als erledigt! Danke! :)

@gander
Was du da vor hast ist sehr teuer und speicherlastig. Beim Verketten von zwei Strings werden insgesamt drei Strings im Speicher angelegt. Rechne mal aus, wieviele in deinem Fall im Speicher liegen würden.
Es ist bei Stringverkettung immer besser die vom System gegeben Methode zu nutzen.