Laden...

Forenbeiträge von MrMilk Ingesamt 75 Beiträge

17.05.2009 - 08:55 Uhr

.NET = managed Code.
Klassisches C++ = unmanaged Code.

Genau dieses verwundert mich, wieso nennt man es dann noch C++? Weil C++ war ja immer unmanaged. Erinnert mich ein bisschen an die quadratur des Kreises.

Viele Grüße
MM

17.05.2009 - 00:35 Uhr

Hallo,

ich weiß dieses ist ein C# Forum und ich weiß auch, dass C++.Net in vielen Augen in kritisches Thema ist. Allerdings erhoffe ich mir von einige Antworten zu bekommen, da ihr in der .Net Szene seit.

Und zwar habe ich früher C++ programmiert und war auch immer sehr zufrieden damit. Durch Umstände war ich dann gezwungen Java zu programmieren und ein bisschen C#, bin darin aber nicht sehr gut.

Inzwischen möchte ich wieder zu C++ zurück, da dieses für mich immer einen besonderen Reiz hatte.

Jetzt wo es C++.Net gibt verstehe ich leider einiges nicht mehr. C++ gab es so etwas wie einen Garbage Collector oder ähnliches nicht. Wie ist das unter C++.Net? Kann ich hier wie gewohnt programmieren oder ist es von C++ Standard sehr weit weg?

Viele Grüße
MM

26.09.2008 - 11:26 Uhr

Danke EncodingClass war das stichwort 🙂

Viele Grüße
MM

26.09.2008 - 08:22 Uhr

hallo,

da habe ich noch eien kleine Frage am Morgen.

In einem DataGrid werden ä,ü, etc. korrekt angezeigt.

Wenn ich jetzt auf den Daten in einem Programm arbeite, steht dort statt dem ä, ü etc. eine andere Formatierung.

Kennt ihr eine Funktion die dieses alles automatisch konvertiert?

Viele Grüße
MM

26.09.2008 - 08:13 Uhr

Hallo und eine guten Morgen.

Ich stehe vor einem kleinen Problem. Mit einem DataGridView lasse ich mir Daten anzeigen.
Allerdings übernimmt der die Zeile nur, wenn ich nicht mehr im "Änderungsmodus bin". Damit meine ich, dass ich einen blinkenden Cursor in der Zelle habe.

Die Methode DataGridView.EndEdit(); hilft mir leider nicht.

Habt ihr sonst noch eine Idee?

Viele Grüße
MM

24.09.2008 - 15:44 Uhr

verwendetes Datenbanksystem: MS SQL 2005

Hallo,

ich bin mir nicht ganz im klaren, wie alte Threads man noch ausgraben soll, deswegen möchte ich hiermit auf diesen Thread : dataGridView: Master/Detail über CombobBox
verweisen

In der Tabelle 'leiht' ist id_Mitarbeiter der Fremdschlüsse(sowie zugleich ein Teilprimärschlüssel).

Das ganze habe ich nun mal bei mir versucht zu implementieren:

//DatenSet aufsetzen
leihtDataTable leihtDataSet = new LeihtTableAdapter();
leihtDataSet = leihtTableAdapter.GetData();

MitarbeiterTableAdapter mitarbeiterTableAdapter = new MitarbeiterTableAdapter();
MitarbeiterDataTable mitarbeiterDataSet;
mitarbeiterDataSet = mitarbeiterTableAdapter.GetData();


//Datenverbindung herstellen
BindingSource.DataSource = leihtDataSet;
dataGridView.DataSource = BindingSource;

//Variablen für die folgenden Anpassungen
DataGridViewComboBoxColumn combo;
int i1;

//registriere das Feld "Sendung_ID" der Tabelle "Musik"            
i1 = leihtDataSet.Columns.IndexOf("id_Mitarbeiter");
//entferne es aus der Liste der Spalten
dataGridView.Columns.Remove("id_Mitarbeiter");

//erzeuge eine neue Spalte mit Querverweis auf Tabelle Sendung
combo = new DataGridViewComboBoxColumn();
combo.DataSource = mitarbeiterDataSet;
combo.ValueMember = "id_Mitarbeiter";
combo.DisplayMember = "Nachname";

combo.HeaderText = "id_Mitarbeiter";
combo.DataPropertyName = "Nachname";


//unterdrücke die DropDown-Bitmap
combo.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;

//füge diese Spalte an der originalen Stelle ein
dataGridView.Columns.Insert(i1, combo);

Leider erhalte ich noch ein paar Probleme:

  • Die alte Spalte wird nicht gelöscht
  • Die neue Spalte enthält keine Werte (wird aber an der passenden Stelle eingesetzt)

Könnt ihr mir hier weiter helfen?

Viele Grüße
MM

24.09.2008 - 15:05 Uhr

Super vielen Dank 🙂

nun klappt es 🙂

Grüße
MM

24.09.2008 - 14:14 Uhr

Hey,

super vielen Dank für die Antwort. Eine kleine Frage habe ich noch.

Ich gehe wie folgt vor:

In der Tabelle Mitarbeiter gucke ich nach jeder Zeile und wenn sich etwas ändert, dann führe auf dem spezialisierten Adapter die Update Funktion aus. In diesem Fall ist es das Löschen.

Nun bekomme ich folgende Exception:

The DELETE statement conflicted with the REFERENCE constraint "FK_leiht_Mitarbeiter". The conflict occurred in database "TestDatenbank", table "dbo.leiht", column 'id_Mitarbeiter'.

Kann ich auch ncoh hier irgendwo einstellen, dass automatisch weiter gelöscht wird?

"Cascade" wurde schon eingestellt.

Viele Grüße
MM

24.09.2008 - 13:26 Uhr

verwendetes Datenbanksystem: MS SQL 2005

Hallo,

ich stehe vor folgendem Problem:

Ich habe eine m:m Beziehung mit dem Namen 'leiht' zwischen den Tabellen 'Mitarbeiter' und 'Auto'.

Nach den Regeln entsteht nun für 'leiht' eine extra Tabelle.

Angenommen es wird nun eine Zeile aus der Tabelle "Mitarbeiter" gelöscht, so sollen auch alle Einträge mit der ID des Mitarbeiters in der Tabelle "leiht" gelöscht werden.

Gibt es für so etwas eine automatische Lösung oder wird das Löschen in der Tabelle "leiht" per Hand(seperat programmierten Befehlen) vorgenommen?

Viele grüße
MM

23.09.2008 - 15:32 Uhr

Hallo,

ich habe alles einmal überschlafen um nicht noch weiteren Unsinn zu posten.

@norman_timo:

Du hast den Nagel fast auf den Kopf getroffen. Am besten probiere ich es einmal ein so zu beschreiben.

Ich habe die Tabelle Auto mit den Merkmalen ID_Auto, Farbe,... und eben auch dem Merkmal 'Marke'.

Die Marke ist immer aus der Menge {"VW","BMW","Audi"}.

Jetzt soll beim anklicken einer Zelle (Welche zu der Spalte Marke) gehört, eine Aufklappliste erscheinen, wo ich immer nur zwischen diesen dreien wählen kann.

Wieso das ganze? In der Praxis wurde sich bei den Werten immer vertippt und ich möcht dieses so unterbinden.

Muss ich dafür nun auch eine extra Tabelle anlegen?
Bzw. gibt es eine Lösung ohne das neue anlegen?

Viele Grüße
MM

22.09.2008 - 16:34 Uhr

Entschuldigung, da habe ich mich sehr sehr schlecht ausgedrückt.

*bekomme_einen_roten_Kopf*

Ich möchte in jeder Zelle innerhalb der bestimmten Spalten eine "Art" ComboBox haben.

viele Grüße
MM

22.09.2008 - 16:31 Uhr

Wieso immer ComboBox? Ich arbeite auf einem Datagridview.

22.09.2008 - 16:27 Uhr

Wenn ich das in eine select abfrage lege, dann habe ich die Drop Down Liste nicht beim einfügen neuer daten.

22.09.2008 - 16:23 Uhr

Hallo norman_timo,

die dritte Normalform ist mir bekannt. Sie vermeidet transitive Abhängigkeiten. Allerdings hat die Spalte nichts mit Fremdschlüsseln oder ID's in irgendeiner weise zu tun.

Ich möchte einfach nur, das ich in der Tabelle zwischen den Werten "jung", "mittel" und "alt" auswählen kann.

Dieses sind statische Werte die auch nie geändert werden.

Viele Grüße
MM

22.09.2008 - 16:16 Uhr

Warum würdest man sowas tun sollen?

Ich hole aus eienr Datenbank eine Tabelle per Dataset. Nun soll der Benutzer aber auch die Möglichkeit haben, neue Datensätze zu ändern bzw. neue anzulegen. In der Spalte XYZ soll es nun so sein, dass nur Werte aus der Menge A mit den Elementen B,C und D möglich sein soll.

Um nun Anaomalien zu vermeiden, habe ich mir überlegt, dass der Benutzer 'im DataGridView' welches über dein 'DataSet' gefüllt wird, von Anfang an nur die Werte B, C und D zur auswahl haben soll.

Leider verstehe ich jetzt deinen Ansatz nicht, kannst du ihn mir genauer erläutern?

Viele Grüße
MM

22.09.2008 - 16:08 Uhr

Hallo norman_timo,

leider meine ich es genau anderes herum. In meinem Dataset möchte ich einer Spalte eine bestimmte auszwahl zuweisen.

Kannst du mir auch hier weiter helfen?

Viele Grüße
MM

22.09.2008 - 15:40 Uhr

verwendetes Datenbanksystem: MS SQL 2005

Hallo zusammen,

über den DataSet Designer greife ich auf eine Tabelle der Datenbank zu.

In einer Spalte möchte ich nun eine Combobox mit den Werten "gut", "schlecht" und "mittel" haben. Könnte ihr mir da weiter helfen, wie ich es schaffe, dass diese immer in der der aktiven Zelle ist?

Viele Grüße
MM

12.09.2008 - 16:43 Uhr

Hey,
vielen Dank an euch beide 🙂
Klappt nun.

Viele Grüße
MM

12.09.2008 - 16:16 Uhr

hallo,

ich möchte gerne die Spaltennamen von einem DataSet in ein Datagridview stecken.

Leider konnte ich dazu noch keine passende Eigschaft finden.

Könnt ihr mir sagen ob es dazu eine gibt oder besser per Schleife alles übertragen?

Viele Grüße
MM

12.09.2008 - 09:29 Uhr

Das klingt sehr interessant 🙂
Kannst du mir sagen wie man so etwas anstellt? Wäre echt super oder kennst du eine Referenz dazu?
[Nutze das VS 2005 Standard Edtion]

Viele Grüße
MM

12.09.2008 - 08:47 Uhr

Hallo,

ich habe mir nun einmal Kapitel 29 durchgelesen. Eigentlich beschreibt es genau das was ich meine, allerdings wird hier teilweise sehr hard kodiert und ich möchte nicht für jede Tabelle eine neue Methode schreiben.

Kennt jemand von euch hierzu ein Referenzprojekt wo das anderes gelöst wird?

Viele Grüße
MM

10.09.2008 - 15:44 Uhr

Hey,

so langsam klappt alles.
Vielen Dank für deine ausdauernde Hilfe.
Eine letzte Frage habe ich aber noch.

Wenn ich das Element in einen Bereich ziehe wo es nicht hin darf, macht Windows automatisch einen Kreis mit einem Strich durch.

Kannst du mir sagen, wie ich diese Curser Eigenschaft manuell setzten kann bzw. das gleiche verhalten (Normaler/Verbotener Zeiger...)?

Dass soll es dann aber nun endlich gewesen sein 🙂

Danke nochmals und viele Grüße
MM

10.09.2008 - 14:54 Uhr

Also ich habe das ganze gerade mal in die NodeMouseHover eingesetzt und da passiert leider nichts 😦

Viele Grüße
MM

10.09.2008 - 14:49 Uhr

Hey JAck30lena,

das klappt 🙂 Zwar ohne Verzögerung aber es klappt 🙂

Ich habe das mit dem NodeMouseHover nochmal ausprobiert, dass klappt bei mir nur, wenn die Maus gedrückt ist 😦

Da du schon einmal im Thema bist, kannst du mir sagen, wie man das los lassen an bestimmten stellen verbieten kann?

Viele Grüße
MM

10.09.2008 - 13:18 Uhr

NodeMouseHover

Leider löst das nicht bei gedrückter maustaste aus 😦

Hatte ich auch schon ausprobiert...

Viele Grüße
MM

10.09.2008 - 12:42 Uhr

und mit den drag&drop-events kommst du nciht weiter?

dann würde ich deine Frage mit ja beantworte.

Vielleicht sethe ich im Moment aber auch total auf dem Schlauch....

Viele Grüße
MM

10.09.2008 - 12:36 Uhr

Also verschieben etc klappt schon alles. habe mich an einem codeProject Projekt orientiert.

Mein Problem ist noch, wenn ich ein Element per am verschieben bin, öffnet sich der Ordener nicht.

Oft kenne ich es so, dass man mit dem dem Element was man gerade am verschieben ist, über einem Knoten (welcher noch weitere Konten unter sich hat) einfach ein paar Sekunden wartet und dann öffnet dieser sich.

Und das möchte ich auch haben.
Und mein Problem ist, dass ich nicht weiß wie ich das mit der Zeit mache... Weil ohne x Sekunden auf dem Knoten zu warten ist doof, da man ruck zuck bei einer Mausbewegung Teilbäume geöffnet hat, die man gar nicht offen haben wollte...

Versteht ihr grob was ich meine?

Viele Grüße
MM

10.09.2008 - 12:24 Uhr

Genau 🙂 Das habe ich auch schon so weit alles geschafft mit der Hilfe von diversen Seiten.

Allerdings bekomme ich dieses: "Knoten klappe auf, wenn Maus 3 Sekunden darüber ist" nicht hin...

Srry, ich dachte das wäre von der Art alles das gleiche, sonst hätte ich das sofort geschrieben...

Viele Grüße
MM

10.09.2008 - 12:17 Uhr

Willst du etwas draggen, und dann soll der Treenode aufmachen, damit du da hinein-Dreaggen kannst?

Kannst du mir sagen, welche Events ich da abfangen muss? Bin jetzt verwirrt wegen dem StartControl 😦

Viele Grüße
MM

10.09.2008 - 10:55 Uhr

mmmh,

HoverHoverNode Klappt leider nur bei nicht gedrückter Maustaste, kennt ihr auch ein Event, dass bei gedrückter Maustaste so arbeitet?

Viele Grüße
MM

10.09.2008 - 10:15 Uhr

Hey,

alles klar, vielen Dank für die Antwort.
Aber muss ich die Timerklasse dafür ableiten oder gibt es da schon einpaar Sachen die vorgefertigt sind?

Viele Grüße
tim

10.09.2008 - 10:04 Uhr

Hallo,

dieses mal habe ich eine kleine Frage zu Timern und Events.

Und zwar möchte ich, dass wenn ich die Maus x Sekunden über einem TreeViewNode lasse, dass dann in einem TreeView der aktuelle Node aufgeklappt wird.

Mein Problem ist, dass ich nicht weiß, wie ich heraus bekomme, ob nun die x Sekunden vorbei sind...

Meine erste Idee war ein Sleep, aber dieses legt alles schlafen, als nicht so gut.

Dann dachte ich mir, man könnte es mit einem Thread lösen der sich den aktuellen konten merkt und nach x Sekunden nachschaut, ob die Maus noch über dem gleichen ist...

Ist dieses so gut gelöst oder geht man da anders vor?

Bin über jede Hilfe dankbar.

Viele Grüße
MM

09.09.2008 - 17:30 Uhr

Hey,

vielen Dank 🙂

Viele Grüße
MM

09.09.2008 - 16:10 Uhr

Hallo,

ich möchte in einem TreeView einige TreeNodes mit einem Icon versehen.

Dazu habe ich folgendes angestellt:

////Icon Laden
myImageList = new ImageList();
myImageList.Images.Add(myProject.Resources.smilie);
treeViewQuery.ImageList = myImageList;

.
.
.

tmptreenode = new TreeNode(node.Name);
if (checked)
{
       tmptreenode.ImageIndex = 0;
}
else
{
       tmptreenode.ImageIndex = -1;
}

Kann mir jemand von euch sagen, wieso alle Nodes ein Icon bekommen?

Viele Grüße
MM

09.09.2008 - 13:42 Uhr

Ähm, nun ja. ... roter_Kopf
Ich sage schon einmal vielen Dank - kannte diese Eigenschaft so bewusst nicht.

Viele Dank nochmals.
MM

09.09.2008 - 13:32 Uhr

Mmmh, so :

Cursor.Position

leider noch das gleiche Problem.

Startet meistenes oben links und geht dann immer weiter nach rechts unten.... (je mehr Fenster geöffnet werden)

Viele Grüße
MM

09.09.2008 - 13:27 Uhr

Hallo,

ich möchte bei einem Rechtsklick ein Menü simulieren, also habe ich mir gedacht nehme ich eine Form und setzte die Koordinaten auf die Mausposition.

Der Konstruktor

public RightContext(Point newLocation)
{
    this.Location = newLocation;         
    InitializeComponent();
}

Und der Aufruf:

RightContext context = new RightContext( new Point(Control.MousePosition.X, Control.MousePosition.Y));
context.Show();

Kann mir jemand von euch sagen, was ich falsch mache? Mein Problem ist, dass das Fenster irgendwo landet und beim Debuggen konnte ich es mir auch nicht so wirklich erklären...

Bin über jede Hilfe dankbar.

Viele Grüße
MM

09.09.2008 - 12:37 Uhr

Mmmh,

iregendwie ist das alles doch ein wenig doof 😦

In diesem Sinne aber noch einmal Danke an alle!

Viele Grüße
MM

08.09.2008 - 14:40 Uhr

Mmmh,

gibt es da auch etwas, was etwas "sauberer" ist?

viele grüße
MM

08.09.2008 - 14:02 Uhr

verwendetes Datenbanksystem: <MS SQL Server 2005>

Hallo,

ich möchte einen kleine Wizard bauen, in den man eine SQL Abfrage angibt.

Leider ist es schnell passiert, dass man einen Tabellennamen falsch schreibt oder ähnliches...

Könnt ihr mir sagen, ob es die Möglichkeit gibt, zu testen ob der SQL Ausdruck legitim zu der Datenbank ist?

Viele Grüße
MM

08.09.2008 - 10:21 Uhr

Hey herbivore,

vielen Dank.
Klappt 🙂

Grüße MM

08.09.2008 - 09:27 Uhr

Hallo,

kann mir jemand von euch sagen, ob es die Möglichkeit gibt,
ein Fenster nicht zu zuerstören, wenn der Benutzer oben rechts
das X drückt?

Man Traum wäre, dass es nur unsichtbar wird.

Bin über jeden Tipp dankbar.

Viele Grüße
Tim

05.09.2008 - 09:05 Uhr

Guten Morgen,

inzwischen bin ich der Verzweifelung nahe.

Per SQL hole ich aus einer Datenbank Daten haben sie mit einer BindingSource an ein DataGridView gebunden und kann auch ganz einfach Abfragen anzeigen und auch Veränderungen wieder hochladen.

Soweit alles keine Probleme.

Aber nun würde ich mir gerne vor dem zurück schreiben die daten anzeigen lassen und überall wo ich suche, sehe ich etwas wie "Ruf einfach EndEdit auf".

Könnt ihr mir sagen wie das genau klappen soll?

Ein bisschen Quellcode habe ich auch mitgebracht:

Die Tabelle laden

//Tabelle leeren
dataGridView.DataSource = null;
dataGridView.Rows.Clear();

sqlDataAdapter = new SqlDataAdapter(sqlCommandText, sqlConnection);
sqlCommandBuilder = new SqlCommandBuilder(sqlDataAdapter);

dataSet = new DataSet();

sqlDataAdapter.Fill(dataSet);

bindingSource.DataSource = dataSet.Tables[0];
dataGridView.DataSource = bindingSource;

//Fenster anzeigen
Show();

Und so lade ich hoch:

//Markierungen anzeigen
bindingSource.EndEdit();          
            
if((MessageBox.Show("Sollen diese Änderungen so übernommen werden?","Änderungshinweis",MessageBoxButtons.YesNo,MessageBoxIcon.Question)== DialogResult.Yes))
{
       //Änderungen in die Datenbank schreiben
       sqlDataAdapter.Update(dataSet);                        
}

Über jeden Tipp bin ich sehr dankbar.

Viele Grüße
MM

03.09.2008 - 14:23 Uhr

Mmmmh

Bei sealed bekomme ich immer:

MyMethod() cannot be sealed because it is not an override

Eigentlich habe ich eine A, welche von Form abgeleitet ist und B ist von A abgeleitet.

Form <- A <- B

Die Funktion soll sich nur in A befinden, ist auch nciht in Form vorhanden.
Muss ich dann noch etwas beachten?

Viele Grüße
MM

03.09.2008 - 14:05 Uhr

Hallo,

eigentlich ist mir diese Frage unangenehm, aber trotzdem möchte ich sie stellen.

Was für ein Schlüsselwort muss ich nutzen, damit sich eine Methode nicht weiter vererbt?
Bei Java war es final....

Viele Grüße
MM

03.09.2008 - 12:25 Uhr

Hey,

erst einmal danke für die Antworte. Allerdings habe ich noch eine Rückfrage.

In diesen Fällen bekommst Du eine Fehlermeldung bei dem Update-Kommando.

Das hat ja mit dem SqlCommandBuilder nichts direkt zu tun.

Mmmh, ich daschte immer der SqlCommandBuilder wäre so etwas wie ein Logger, man gibt ihm am Anfang ein DatenGrid und dann formt er jede Änderung (welcher Art auch immer) in einen SQL Befehl um.

Zum Schluss sage ich dann so etwas wie: Führe alle Befehle aus, die der SqlBuilder erstellt hat aus.

Sehe ich das so richtig?

Viele Grüße
MM

03.09.2008 - 11:14 Uhr

verwendetes Datenbanksystem: MS SQL Server 2005

Hallo,

und nochmals habe ich eine Frage zum SqlCommandBuilder.

Und zwar stehe ich vor folgendem Problem.

Momentan lade ich mir eine Tabelle etc. in ein DataGridView, logge die Dateien durch einen SqlcommandBuilder mit und lade sie wieder hoch.

Aber was würde zum Beispiel passieren, wenn jemand in der Zwischenzeit den Datensatz gelöscht hat und ich möchte ein Update auf diesem Datensatz ausführen?

Oder ich lege einen neuen Datensatz an, allerdings ist die Id schon vergeben(was ich nicht weiß), da jemand in der Zwischenzeit ebenfalls etwas hinzugefügt hat. Sprich anlegen doch nicht möglich.

Bestimmt gibt es hier noch viele andere Fälle...

Was kann ich hier tun?

Viele Grüße
MM

Mir fällt ein, gibt es da so etwas wie in Excel, wenn man ein verteiltes Dokument hat? Dort werden dann alle Änderungen angezeigt.

03.09.2008 - 07:58 Uhr

Hallo,

hat sich schon geklärt. Hatte in der Datenbank etwas nicht korrekt gelöst.

Aber vielleicht könnt ihr mir sagen, ob ich danach noch ein Close() auf der sqlConnection ausführen muss.

Bin mir da nicht ganz sicher, da eigentlich ja nichts mit open() geöffnet wurde.

Viele Grüße
MM

03.09.2008 - 07:39 Uhr

verwendetes Datenbanksystem: MS SQL 2005

Hallo zusammen,

ich möchte eine SQL Tabelle in ein DatenGridView ausgeben, und die Änderungen anschließend übernehmen.

Leider klappt dieses bei mir noch nicht so ganz. Die Anfrage(sqlCommandText) lautet: select * from auto

Ich bekomme immer folgenden Fehler:

Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information.

Jetzt ist mir leider unklar, wie ich die Anfrage korrekt gestalten muss.

Könnt ihr mir da weiterhelfen?

Achso, und dieses ist der Quellcode 😉

//0
SqlConnection sqlConnection = new SqlConnection("Data Source=xxx;Initial Catalog=xxx;User ID=xxx;password=xxx;");

//1
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommandText, sqlConnection);

//3           
SqlCommandBuilder sqlCommandBuilder = new SqlCommandBuilder(sqlDataAdapter);

//4
DataSet dataSet = new DataSet();

//Daten anzeigen
sqlDataAdapter.Fill(dataSet);
currentDataGridView.DataSource = dataSet.Tables[0];

//Daten verändern
currentDataGridView[1, 1].Value = "hello";

//Daten rückschreiben
sqlDataAdapter.Update(dataSet);

Viele Grüße
MM

02.09.2008 - 14:16 Uhr

Danke 🙂

Viele Grüße
MM