Autor |
Beitrag |
dsTny
Hält's aus hier
Beiträge: 7
Windows XP Prof. SP2
C# / C++ VS 2005 Prof. (+ SQL)
|
Verfasst: Mi 26.11.08 15:37
Hallo! Ich bin neu hier und habe eben erst angefangen mit C#. Davor habe ich mit C++ in Windows-Forms-Anwendung, sowie in der Konsole programmiert. Dies habe ich aber auch nicht sehr lange gemacht und meine Kenntnisse würde ich auf "Grundlagen" abstufen.
Das war es zu meiner Person, nun zu meiner Frage. Sie ist etwas spezieller...
Also ich will ein Programm schreiben, welches sich Finance Manager nennt. Es geht bei diesem Programm, wie der Name schon sagt, um die Finanzen, sprich das Geld, und seine Verwaltung. Nebenbei kann man Daueraufträge anlegen, Einnahmen und Ausgaben eingeben, Konten anlegen, mehrere Benutzer registrieren, die Planungen für den nächsten Monat machen, einen Kalender sehen, Notizen / Erinnerungen einspeichern, Einkaufszettel schreiben und Ausdrucken und vieles mehr. Natürlich brauche ich dazu eine Datenbank, die ich verwalten kann. In meiner Ausbildung habe ich mit SQL angefangen, bin da aber noch nicht weit. Deswegen meine Frage: Kann man SQL irgendwie "Offline" schreiben (ich hab in Visual Studio 2005 bis jetzt immer nur gesehen, dass man einen Server angeben muss, sprich online)? Gibt es vielleicht auch weitere Möglichkeiten? In meiner Klasse hat es ein Kollege mit Listviews gemacht, das heißt die Daten dort eingetragen und dann gespeichert. Mein Problem ist aber, dass ich mehrere Fenster benutzen will und deshalb auf eine "zentrale" Datenbank zugreifen müsste, da ich das andere Fenster, wo vermeintlich Daten im Listview enthalten ist, schließen will. Ich habe versucht, zwei Fenster parallel laufen zu lassen (mit Show), in dem einen das Hauptprogramm für den User, in dem anderen alle benötigten Listviews für alle Daten. Das Problem: Wenn der Benutzer nun Daten eingibt, werden die nicht im zweiten Fenster (die "Datenbank") übernommen. Sprich, der User registriert sich immer wieder, kann sich aber nie einloggen, weil ja nichts gespeichert wird.
Zweite Frage, die eng mit der zweiten Frage verbunden ist: Bei der Registrierung muss man persönliche Daten, sowie das Passwort eingeben. Wenn ich es in einer Textdatei speichern würde, würde ich dem Anwender keinen Schutz vor Datensicherung bieten, wenn jemand die TXT öffnet. Er sieht dann das Passwort. Es wäre also schön, wenn es eine Methode zum speichern gäbe und gleichzeitig eine 32 Bit oder gar 64 Bit (nun gut, eine "gute" Verschlüsselung reicht auch, muss ja nicht gleich ins Extreme gehen  ) stattfinden würde. Natürlich würde ich gerne wissen, wie man de- und entkodiert
Ich hoffe, jeder versteht mein Text, ansonsten werde ich zu Hause gerne mal Screens hochladen mit Erläuterungen. Danke für die Antwort im voraus.
Gruß.
P.S. Natürlich könnte ich es mir bestimmt leichter machen, nur will ich ja einiges dazu lernen ;) Moderiert von Kha: Topic aus IO, XML und Registry verschoben am Mi 26.11.2008 um 18:09
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Mi 26.11.08 16:30
@Christian
Bitte verschieben; wahrscheinlich ist ADO.NET besser als WinForms.
Hallo und
dsTny hat folgendes geschrieben : | Deswegen meine Frage: Kann man SQL irgendwie "Offline" schreiben (ich hab in Visual Studio 2005 bis jetzt immer nur gesehen, dass man einen Server angeben muss, sprich online)? Gibt es vielleicht auch weitere Möglichkeiten? |
Jede mögliche Datenbank kann statt auf einem Server auch lokal installiert und benutzt werden; und die "üblichen" DBMS gibt es auch als embedded-Variante, die ohne weitere Installation aus einer (oder einigen wenigen) DLL besteht und direkt genutzt werden kann. Beispiele: Firebird, MySql, MS-SQL Server Compact.
Grundlegende Arbeitsweise von ADO.NET: Es wird getrennt zwischen den Daten auf der Festplatte (der Datenbank) und den Daten im Arbeitsspeicher ( DataSet, DataTable). Für den Datenaustausch gibt es DbConnection und DbDataAdapter. Es werden immer nur die Daten geholt, die aktuell benötigt werden, aber nicht z.B. alle Kunden.
Für die Bearbeitung in Formularen können alle möglichen Controls über DataBinding genutzt werden. Speziell gibt es auch DataGrid (veraltet) und DataGridView.
dsTny hat folgendes geschrieben : | Das Problem: Wenn der Benutzer nun Daten eingibt, werden die nicht im zweiten Fenster (die "Datenbank") übernommen. Sprich, der User registriert sich immer wieder, kann sich aber nie einloggen, weil ja nichts gespeichert wird. |
Dazu kann das DataSet in eine eigene Klasse eingebaut werden, alle beteiligten Forms greifen direkt per DataBinding oder (besser) per BindingSource darauf zu.
dsTny hat folgendes geschrieben : | Zweite Frage, die eng mit der zweiten Frage verbunden ist: Bei der Registrierung muss man persönliche Daten, sowie das Passwort eingeben. Wenn ich es in einer Textdatei speichern würde, würde ich dem Anwender keinen Schutz vor Datensicherung bieten, wenn jemand die TXT öffnet. |
Für solche Speicherungen kann z.B. die app.config verwendet werden (wie Du schreibst, natürlich verschlüsselt).
dsTny hat folgendes geschrieben : | Er sieht dann das Passwort. Es wäre also schön, wenn es eine Methode zum speichern gäbe und gleichzeitig eine 32 Bit oder gar 64 Bit (nun gut, eine "gute" Verschlüsselung reicht auch, muss ja nicht gleich ins Extreme gehen ) stattfinden würde. Natürlich würde ich gerne wissen, wie man de- und entkodiert  |
Siehe die Klassen im System.Security.Cryptography-Namespace
Allgemeine Einführung ist z.B. zu finden im OpenBook Visual C#, zur DB-Anbindung Kap. 25 ff.
Sehr viel nützliche Informationen findet man in der SDK-Doku/MSDN, vor allem durch den hervorragenden Index bietet das Blättern viele Hinweise, was und wie mit NET möglich ist.
Zum Anbinden der verschiedenen Datenbanken siehe ConnectionStrings.
Viel Erfolg! Jürgen
|
|
dsTny 
Hält's aus hier
Beiträge: 7
Windows XP Prof. SP2
C# / C++ VS 2005 Prof. (+ SQL)
|
Verfasst: So 30.11.08 17:24
Hallo und danke erstmal
Ich werde es demnächst bei mehr Zeit ausprobieren. Nur noch eine kleine Frage: Wenn ich das (finale) Programm auf den PC eines Freundes installieren würde, bräuchte er denn Visual Studio oder ein anderes Programm? Er hat VS nämlich nicht und es soll bei ihm trotzdem funktionieren
Danke schonmal!
Gruß
|
|
jaenicke
      
Beiträge: 19313
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 30.11.08 17:55
dsTny hat folgendes geschrieben : | Nur noch eine kleine Frage: Wenn ich das (finale) Programm auf den PC eines Freundes installieren würde, bräuchte er denn Visual Studio oder ein anderes Programm? Er hat VS nämlich nicht und es soll bei ihm trotzdem funktionieren  |
JüTho hat folgendes geschrieben : | Jede mögliche Datenbank kann statt auf einem Server auch lokal installiert und benutzt werden; und die "üblichen" DBMS gibt es auch als embedded-Variante, die ohne weitere Installation aus einer (oder einigen wenigen) DLL besteht und direkt genutzt werden kann. Beispiele: Firebird, MySql, MS-SQL Server Compact. |
Bei einigen Datenbanksystemen muss man diese durchaus mit einem Programm, das sie benutzt, installieren. Wenn du aber eines der genannten eingebetteten Systeme nimmst, dann muss da nichts installiert werden. Normalerweise müssen aber DLLs mitgeliefert werden, wie bereits gesagt wurde.
Es gibt auch Möglichkeiten ohne DLL, aber diese sind soweit ich sie kenne nicht so umfangreich und nicht besonders komfortabel.
In keinem Fall muss jedenfalls VS oder so installiert werden, es geht wenn, dann nur um das Datenbanksystem, und das kommt wie gesagt meistens mit einigen DLLs im Verzeichnis deiner Exe aus. (ohne Installation)
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: So 30.11.08 19:04
Aber um es klar zu sagen: Das NET Framework muss in der passenden Version installiert sein bzw. werden (nicht das SDK, aber die Runtime). Jürgen
|
|
dsTny 
Hält's aus hier
Beiträge: 7
Windows XP Prof. SP2
C# / C++ VS 2005 Prof. (+ SQL)
|
Verfasst: So 30.11.08 19:20
Okay, vielen Dank 
|
|
dsTny 
Hält's aus hier
Beiträge: 7
Windows XP Prof. SP2
C# / C++ VS 2005 Prof. (+ SQL)
|
Verfasst: Mi 07.01.09 11:32
Hallo und frohes Neues,
nach langer Zeit konnte ich endlich einiges rumprobieren. Ich komme aber überhaupt nicht klar ... ich hab MSDN schon nachgeschaut, gegooglet, den Link von JüTho bin ich durchgegangen und sogar das Buch "Programmieren mit C#" von Jesse Liberty durchgeschaut. Ich finde, dass alles zu komplex geschrieben ist und ich weiß einfach nicht, wie ich anfangen soll.. leider habe ich solch ein Thema aber nicht gefunden. Es geht mir primär erstmal ums "zentrale" Abspeichern von Daten in eine Datenbank.
Im Buch steht zum Beispiel, dass es zwei Methoden gibt: Eine programmtechnische und eine mit den in der Toolbox vorhanden Tools. Welche ist besser bzw. welche benutzt ihr?
Könnt ihr mir bitte mal eine genaue Anleitung geben, wie ich anzufangen habe anhand eines simplen Beispiels? Hinzufügen des Servers, Datenbank anlegen, usw.? Ich bin hier echt langsam am verzweifeln..
JüTho hat folgendes geschrieben : | Grundlegende Arbeitsweise von ADO.NET: Es wird getrennt zwischen den Daten auf der Festplatte (der Datenbank) und den Daten im Arbeitsspeicher (DataSet, DataTable). Für den Datenaustausch gibt es DbConnection und DbDataAdapter. Es werden immer nur die Daten geholt, die aktuell benötigt werden, aber nicht z.B. alle Kunden. |
In der Toolbox sehe ich bei mir kein DbDataAdapter, ergo soll ich es programmtechnisch erledigen?!
JüTho hat folgendes geschrieben : | Für die Bearbeitung in Formularen können alle möglichen Controls über DataBinding genutzt werden. Speziell gibt es auch DataGrid (veraltet) und DataGridView. |
Hab ich versucht, bin aber kein Stückchen weitergekommen... er speichert nichts, egal, ob ich DataGridView genommen habe oder DataBinding...
JüTho hat folgendes geschrieben : | Dazu kann das DataSet in eine eigene Klasse eingebaut werden, alle beteiligten Forms greifen direkt per DataBinding oder (besser) per BindingSource darauf zu. |
Wie meinst du das? Programmiertechnisch zum Server verbinden? Wie sollen sie alle darauf zugreifen? Es darf aber nicht im Programm angezeigt werden oder gar sichtbar sein, sonst brauche ich ja nichts verschlüsseln
JüTho hat folgendes geschrieben : | Für solche Speicherungen kann z.B. die app.config verwendet werden (wie Du schreibst, natürlich verschlüsselt). |
Die app.config habe ich gefunden, auch wenn ich noch nicht herausgefunden habe, was ich damit mache
JüTho hat folgendes geschrieben : | Siehe die Klassen im System.Security.Cryptography-Namespace |
Kann man sowas auch beim Speichern benutzen oder "nur" bei der Eingabe?
JüTho hat folgendes geschrieben : | Allgemeine Einführung ist z.B. zu finden im OpenBook Visual C#, zur DB-Anbindung Kap. 25 ff.
Sehr viel nützliche Informationen findet man in der SDK-Doku/MSDN, vor allem durch den hervorragenden Index bietet das Blättern viele Hinweise, was und wie mit NET möglich ist.
Zum Anbinden der verschiedenen Datenbanken siehe [url=www.connectionstring...ectionStrings[/url]. |
Wie gesagt, komme einfach nicht weiter, obwohl ich das alles gemacht habe =/ Wäre also echt grandios nett, wenn da jemand ein how-to für absolute Anfänger machen würde. Wie gesagt, ich möchte Local die Daten abspeichern, dann muss ich ja wohl irgendwie erstmal irgendwo im Programm einen Server erstellen und eine Datenbank anlegen, oder? Aber wie? Wie gehts dann weiter? Gibt es irgendwo ein einfaches Programmbeispiel oder könnt ihr eines schreiben?
Vielen Dank für Antworten im Voraus und sorry, dass ich es so ausführlich brauche...
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Mi 07.01.09 12:08
Ebenfalls noch Frohes Neues Jahr,
tut mir leid, aber auf die Frage "Wie soll ich anfangen" kann ich wirklich nur antworten: So wie es im OpenBook Visual C# vorgemacht wird. Für konkrete Fragen helfe ich dann gerne wieder; aber zunächst musst Du anfangen: NET installieren, DB-Programm installieren, DbProvider installieren, IDE installieren.
dsTny hat folgendes geschrieben : | Es geht mir primär erstmal ums "zentrale" Abspeichern von Daten in eine Datenbank. |
Das ist wirklich unpraktisch. Im OpenBook ist das Kap.25 ff., kommt also sehr spät. Bis Du soweit bist, solltest Du wirklich erst viele Grundlagen erarbeiten.
dsTny hat folgendes geschrieben : | Im Buch steht zum Beispiel, dass es zwei Methoden gibt: Eine programmtechnische und eine mit den in der Toolbox vorhanden Tools. Welche ist besser bzw. welche benutzt ihr? |
Zum Anfang in der Regel die vorgefertigten (nebenbei zum Sprachgebrauch: Tools sind in der Regel Hilfsprogramme. Die Toolbox ist ein Werkzeugkasten, in dem stehen aber keine Tools, sondern Elemente, die einfach in ein Formular übernommen werden können.), später eher selbst erstellte Klassen.
dsTny hat folgendes geschrieben : | In der Toolbox sehe ich bei mir kein DbDataAdapter, ergo soll ich es programmtechnisch erledigen?! |
Klassen, deren Namen mit Db anfangen, sind Basisklassen. Im konkreten Fall muss immer eine der davon abgeleiteten Klassen verwendet werden, wie sie zum jeweiligen DbProvider gehören: beim MS-SQL Server die Sql-Klassen, bei Firebird die Fb-Klassen, bei MySql die MySql-Klassen usw. Damit ich nicht immer den letzten Satz schreiben musse, spreche ich einheitlich von Db-Klassen.
dsTny hat folgendes geschrieben : | Hab ich versucht, bin aber kein Stückchen weitergekommen... er speichert nichts, egal, ob ich DataGridView genommen habe oder DataBinding... |
Gespeichert wird auch nichts, was sich auf die GUI bezieht. Wegen der Trennung der Schichten muss gespeichert werden, was sich in DataSet/DataTable befindet; dazu wird (zumindest in allen einfachen Fällen und am Anfang) DbDataAdapter.Update() benutzt. Das wird manchmal automatisch aufgerufen (z.B. durch den TableAdapter von Visual Studio), meistens aber manuell durch einen Button-Click.
Zu Deinen weiteren Fragen (DataSet als eigene Klasse, app.config, Verschlüsselung) verkneife ich mir zunächst jede weitere Antwort. Du willst offensichtlich zuviel auf einmal, und das am Anfang und am besten alles sofort gleichzeitig. Das kann nicht funktionieren.
dsTny hat folgendes geschrieben : | Wäre also echt grandios nett, wenn da jemand ein how-to für absolute Anfänger machen würde. |
Ich kenne dieses Datenbanken How-To. Das ist eine Kurzfassung als Einleitung, aber für absolute Anfänger? Ich kann mir nicht vorstellen, dass so etwas wirklich sinnvoll wäre.
Wie gesagt: Gehe stückweise vor in der Reihenfolge, wie es das OpenBook vorsieht. Du darfst selbstverständlich bei jedem Schritt bereits Dein Ziel vor Augen haben und einzelne Sachen daran anpassen. Ein Autofahrer fängt normalerweise auch mit einem Pkw an und nicht gleichzeitig mit Bus und Lkw.
Trotzdem viel Erfolg! Jürgen
|
|
dsTny 
Hält's aus hier
Beiträge: 7
Windows XP Prof. SP2
C# / C++ VS 2005 Prof. (+ SQL)
|
Verfasst: Mi 21.01.09 10:04
Hallo,
nach langer Abstinenz mal wieder was von mir. Erstmal danke für deine Antwort und die Einschätzung!
JüTho hat folgendes geschrieben : | Das ist wirklich unpraktisch. Im OpenBook ist das Kap.25 ff., kommt also sehr spät. Bis Du soweit bist, solltest Du wirklich erst viele Grundlagen erarbeiten. |
Mit "primär" meinte ich nicht, dass ich es als erstes lernen will, sondern dass das Programm, welches ich schreiben will, es als erstes "können" soll. Ich will mich nicht immer neu registrieren müssen und ausserdem kann ich dann alles so programmieren, dass auch sofort der SQL-Server "angesprochen" wird. Ich kann bestimmt nicht alles programmieren und bin meiner Einschätzung nach auf dem Niveau "Grundlagen kennen", aber ein bisschen was kann ich doch
Vielleicht wurde meine eigentliche Frage, weshalb ich den Thread hier eröffnet habe, nicht so ganz verstanden, also versuch ich es mal anders...
JüTho hat folgendes geschrieben : | tut mir leid, aber auf die Frage "Wie soll ich anfangen" kann ich wirklich nur antworten: So wie es im OpenBook Visual C# vorgemacht wird. Für konkrete Fragen helfe ich dann gerne wieder; aber zunächst musst Du anfangen: NET installieren, DB-Programm installieren, DbProvider installieren, IDE installieren. |
Genau das war meine Frage! Alle Bücher fangen gleich mit SQL Abfragen oder vielleicht noch relationale Datenbank an, maximal ein Kapitel gibt es über die verschiedenen Server, aber keiner sagt, was genau beachtet werden muss, z.B. beim Installieren...
Also ich habe jetzt den SQL-Server Express installiert. Nun gibt es zwei Möglichkeiten: Ich kann über Visual Studio unter "Server-Explorer" einen Server erstellen und ich kann vom installierten Express aus einen Server erstellen... welchen soll ich denn jetzt nehmen? Was nehmt ihr? Warum? Beides ist "SQL-Server Express", also doch eigentlich kein Unterschied, oder?
Bei beiden Servern (ich nenn das jetzt einfach mal so), hab ich versucht den Server mit dem Servernamen "localhost" (ohne ""), oder . (Punkt), oder local zu starten. Funktioniert aber alles nicht. Gebe ich meinen Netzwerknamen an (bei mir z.B. "Fabi-Lappi"), funktioniert alles tadellos und ich kann den Server starten und benutzen (Abfragen habe ich schon durchgeführt bei einem Programm hier im Praktikum  Dort habe ich über den "Server-Explorer" den Server hinzugefügt..). Da kommt mir die Frage auf, was ist, wenn ich zum Beispiel das Programm fertig programmiert habe, eine Setup-Datei über Visual Studio erstelle und das Programm auf den Rechner meines Freundes installieren will? Er hat natürlich nicht den Netzwerknamen "Fabi-Lappi" und auch nicht SQL-Server Express, also muss ich dann noch einige Sachen bei ihm auf den Rechner installieren/einstellen? Das wäre dann sehr unpraktisch, weil mein bester Freund keine Ahnung von sowas hat und ich nicht zu jedem Freund, der das haben will, hinrennen will und erstmal alles einstellen will.. das soll alles automatisch passieren, wenn es geht (zum Beispiel mit dem erstellten Setup Programm)... deswegen dachte ich, dass dieses Problem mit dem Servernamen "localhost" umgangen wird, aber dann startet der Server aber wie geschrieben nicht und es gibt eine Fehlermeldung (wer sie wissen will, nur bescheid geben, dann mach ich mal einen Screenshot davon heute abend zu Hause). Also was soll ich jetzt machen? Wenn ich nicht weiß, ob das, was ich schon am Anfang programmiere, später wegen meinen eigenen Anforderungen an meinem Programm funktioniert, ist das ja auch schlecht  Deshalb habe ich den Thread eröffnet
In dem Zusammenhang sei gesagt, dass ich beim Praktikumprojekt nicht mit den Elementen im Werkzeugkasten gearbeitet habe, sondern im Programm selber alles geschrieben habe. Vielleicht kann mir jemand das mit den Klassen aber nochmal erklären, weil ich nicht genau weiß, wie das gemeint ist...
Ich hoffe, dass meine Frage(n) verständlich waren. Wenn nicht, melde ich mich nochmal  Ich freu mich jetzt schon über jede Antwort
MfG
P.S. Die anderen Fragen mit Verschlüsselung, ect. kommt später, bzw. ich fudel mich dann da selber rein. Danke erstmal für alle (folgenden) Antworten.
JüTho hat folgendes geschrieben : | Zum Anfang in der Regel die vorgefertigten (nebenbei zum Sprachgebrauch: Tools sind in der Regel Hilfsprogramme. Die Toolbox ist ein Werkzeugkasten, in dem stehen aber keine Tools, sondern Elemente, die einfach in ein Formular übernommen werden können.), später eher selbst erstellte Klassen. |
Danke für die Berichtigung, hab es mir gemerkt 
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Mi 21.01.09 11:37
Hallo,
jetzt muss ich passen, da ich nicht mit MS-SQL arbeite. Das sind Punkte, die sinnvollerweise in der app.config eingestellt werden. Aber wie das beim MS-SQL Server läuft (egal ob in "Vollversion" oder in der Compact-Version) und wie es in einer Installationsroutine gesteuert wird, weiß ich nicht.
Das ist übrigens ein praktisches Problem mit dem Visual Studio-Designer: Er macht alles im Programm, registriert alles (auch den DB-Zugriff) im TableAdapter und der Designer.cs - und der Programmierer darf die Flexibilität nachträglich herstellen.
An dieser Stelle könnten manche Hinweise im Datenbanken How-To helfen.
Gruß Jürgen
|
|
dsTny 
Hält's aus hier
Beiträge: 7
Windows XP Prof. SP2
C# / C++ VS 2005 Prof. (+ SQL)
|
Verfasst: Do 22.01.09 10:58
Hallo,
vielen Dank dennoch für die Antwort!
Also hab es selber rausbekommen mit dem lokalen Server, aber erstmal "nur" im Server-Explorer von Visual Studio. Unter "Verbindung hinzufügen" funktioniert das ganze mit localhost, NICHT unter "Neue SQL-Serverdatenbank erstellen..."! Ich denke, dass dann die Verbindung automatisch mitinstalliert wird, wenn ich das fertige Programm bei Freunden installiere, ohne das ich da noch was installieren/konfigurieren muss?!?
Jetzt noch ein Problem: Ich muss ein Pfad zum speichern der lokalen Verbindung (der .mdf Datei) angeben. Ich möchte den User fragen, wohin er sie speichern will... dann geht das Erstellen der Verbindung nur, wenn ich es in der Laufzeit im Programm mache, oder? Oder hat jemand eine andere Idee?
|
|
|