Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Sclot
Thema: Suche Linq-Version von SQL-Query mit SUM() um Datensätze zu zählen
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <MySQL> / Linq2Mysql (dbLinq2007)

Ich habe folgenden SQL-Query:


SELECT 
    s.zustaendiger_mitarbeiter_id AS id, 
    Concat(ma.vorname,ma.nachname)AS name,
    SUM(s.primaer_id!=0) AS gesamt,
    SUM(s.gelesen=1) AS gelesen, 
    SUM(s.gelesen=0) AS ungelesen 
FROM 
    supportfaelle AS s, 
    mitarbeiter AS ma
WHERE 
    s.zustaendiger_mitarbeiter_id = ma.primaer_id
GROUP BY 
    s.zustaendiger_mitarbeiter_id

Das funktioniert so recht gut.
Erstellt dann eine Tabelle mit einer übersicht wie diese:

|id |name |gesamt|gelesen|ungelesen|
+---+-----+------+-------+---------+
|1  |mi1  |215   |0      |215      |
|2  |mi2  |84    |3      |81       |
|3  |mi3  |138   |0      |138      |
|4  |mi4  |109   |0      |109      |
|5  |mi6  |179   |0      |179      |
|6  |mi6  |66    |0      |66       |

Nur... wie macht man sowas tolles jetz in Linq? :-/

Thema: BackgroundWorker mit Invoke Blockiert GUI
Am im Forum: GUI: Windows-Forms

Ja, das tut er.

Was bringt mir diese Erkenntnis jetzt?

Thema: BackgroundWorker mit Invoke Blockiert GUI
Am im Forum: GUI: Windows-Forms

Das ist... hm...
Dann müsste ich also das was der Thread wirklich macht, alles im DoWork() machen.
Aber dann bekomm ich diesen Speicherzugriffsfehler da.

Äzend :-(

Thema: BackgroundWorker mit Invoke Blockiert GUI
Am im Forum: GUI: Windows-Forms

Ich habe jetzt ein Programm, welches mit Emails als EML Dateien aus David Tobit Exportiert.

Der Export funktioniert über die API als eingebundene DLL Funktion:


[DllImport("dvapi32.dll", CallingConvention = CallingConvention.StdCall, EntryPoint = "DVEmlFromMailItem")]
public extern static long DVEmlFromMailItem(MailItem oMailItem, StringBuilder Path);

Diese Methode ist in einer Klasse "Tobitfunktionen" untergebracht.
Ebenfalls darin steckt eine methode, welche ein Archiv Rekursiv durchläuft und dann für die Mails, die gefunden wurden einen Export mit oben genannter Funktion macht.
Nach jeder Mail wird ein Event aufgerufen, welches mir Meldungen an die GUI zurück gibt (Welche Mail da gerade exportiert wurde).

Auf meiner Form hab ich einen BackgroundWorker.
Dieser bgw ruft im DoWork() die Rekursive Methode aus der Tobitfunktionen auf.

So..
Wenn ich das direkt so mache, bekomme ich beim Export einen Fehler:
Zitat
Fehler: Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.

So...
kurz nachgedacht (vermutlich zu kurz) und heraus kam:
Ich erzeuge mein Objekt der Tobitfunktionen Klasse in der GUI, versuche aber mit dem DoWork() den bgw darauf zuzugreifen.
Da der DoWork() rein technisch wohl ein eigener Thread ist, könnte man hier ein Delegaten bauen und dann die eigentliche Methode aus der Klasse Invoken.

Also hab ich das umgebaut:


		# region Das hier gehört alles zum DoWork()
		// Hier wird ein Delegat definiert.
		// Den Delegaten brauchen wir, weil wir aus einen fremden Thread (BGW) auf ein Objekt zugreifen wollen, welches im GUI-Thread erzeugt wurde.
		delegate void tobitfnk_eMail2eml(string Pfad);
		
		// Eine Methode, die im GUI-Thread ausgeführt wird, soll über den Delegaten aufgerufen (Invoked) werden.
		private void eMail2eml(string Pfad)
		{
			tobitfnk.worker = backgroundWorker1;
			tobitfnk.eMail2eml(Pfad);
		}

		//#####################################################
		// !!! Achtung !!! DAS GANZE DoWork() ist ein eigener Thread!!!
		void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
		{
			// In diesem Thread wollen wir die eMail2eml Methode aus dem GUI-Thread über den tobitfnk_eMail2eml Delegaten Invoken
			Invoke(new tobitfnk_eMail2eml(eMail2eml), new object[] { e.Argument.ToString() });
		}
		//#####################################################
		#endregion 


Und was passiert nun?
Ja... Der Export funktioniert. Emails werden auch angelegt - alles toll.
ABER - die GUI Blockiert jetzt komplett.
Aber nicht dieses typische "keine Rückmeldung" mehr, sondern einfach nur stumpfes blockieren, kein verschieben, kein klicken, nixx geht.
Aber ich sehe mein Änderndes Label, das über den Event aus der Rekursiven Funktion geändert wird.

So...
Weiter geforscht...
Ich melde meinen Fortschritt aus der Rekursiven Funktion wie oben geschrieben über Events, welche dann die Labels meiner Form setzen.
Dachte damit könnte es vielleicht zu tun haben.
Jetzt hat der BackgroundWorker an sich schon einen Event "ReportProgress" welchem man auch schön ein Objekt als Userstate Parameter übergeben kann.
Also Alle Events raus gebaut und die Meldung über das ReportProgress gemacht.
Ja.. nun blockiert die GUI noch mehr, weil ich nicht mal mehr eine Veränderung im label sehe, das geändert werden sollte.

Irgenwie übersteigt das jetzt alles meinen Horizont.

Kann mich da mal jmd aufklären warum das so ist?

Thema: Suche Tool zur Verwaltung von SQL Statements (in einer Datenbank)
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Gehts vielelicht etwas genauer?
Um welche Datenbank geht es?
Was wollt ihr am Ende damit erreichen?

Thema: Nhibernate: Liste von Objekten in DataGridView sortieren
Am im Forum: Rund um die Programmierung

Ui...
Da geht man seinen Azubi mal was erklären und dann so viele Antworten :-)

Gut, Dann arbeite ich mich da mal durch und Berichte...

Danke!


Edit:

Ich hab dort http://code.google.com/p/modelshredder/ auch ein lustiges Projekt gefunden, welches eine ExtensionMethod zur verfügung stellt um aus einer List<> eine DataTable zu machen, welche man dann im DGV auch sortieren kann :-)

Thema: Nhibernate: Liste von Objekten in DataGridView sortieren
Am im Forum: Rund um die Programmierung

Naja.. Wenn ICH das mache, dann wird das nicht grad das Performance-Technische Wunderwerk werden ;-)

Und ja, nach meinem Minimalen Wissensstand gibt NHibernate das mit der .List() Methode so vor.

Thema: Nhibernate: Liste von Objekten in DataGridView sortieren
Am im Forum: Rund um die Programmierung

Guten Morgen,
Ich bin immer noch dabei mit NHibernate rum zu spielen.
Jetzt ist mir folgendes aufgefallen:

Wenn ich eine Liste von Objekten aus der DB hole...


System.Collections.IList bsp = _Session.CreateCriteria(typeof(tA.DBModels.SYSTEM_PLUS)).List();

Dann liegen sie in einer ArrayList vor.
Diese kann ich als DataSource an ein DataGridView zuweisen.
Leider kann ich die Spalten in dem DGV nicht sortieren (Über klick im Header).

Bei Google findet man einige Menschen die auch solch ein Probleme haben, aber nie wirklich eine Lösung dafür.
Letzendlich scheint so ein GDV echt nur Sinnvoll mit DataTables umgehen zu können.

Ich brauche eine Visuelle Darstellung meiner Objekte in einer Liste mit Sortierungs-Möglichkeit.

Irgendjemand eine Idee wie man das anstellen könnte?

Thema: NHibernate Objekt an List&Label übergeben
Am im Forum: Rund um die Programmierung

Guten Abend :)

Ich habe mich die letzten tage etwas in nHibernate eingelsen.
Habe es jetzt auch schon so weit das ich ein Objekt mit Verschachtelten Unterobjekten (z.b. Rechnung mit Positionsdaten) lasen und speichern kann.

Jetzt würde ich dieses Objekt gern nehmen und an List&Label (14) übergeben.
Bis jetzt habe ich nur DataSet´s übergeben, wollte mir jetzt aber nicht die mühe machen und das Objekt in ein DataSet umschreiben.

Wenn ich das Objekt selbst übergebe, mekcern L&L, das es kein IEnumerable enthält.
Ja.. Schade....

Hat das schon mal jmd gemacht und hätte eine Idee für mich, wie ich das anpacken kann?

Danke!

Thema: Zentrales Dataset - Zugriff von überall - Wie mögllich?
Am im Forum: Datentechnologien

Mhm...
Man könnte das dataset auch als klasse im code zur laufzeit erzeugen und aus dieser klasse ein singleton machen.
Dies könnte man dann auch von jeder anderen stelle aufrufen.

Ein anderer weg, kommt drauf an wie oft man dieses dataset braucht, wäre es mit writexml zu speichern und mit readxml an der stelle wieder einzulesen an der man es dann wieder benötigt.

Thema: Methoden von abgeleiteter Klasse aufrufen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Kann ich mir den typ der Form im Tag der form weg speichern und dann in der Schleife wieder casten?

ist das Frickelig? :-/

Thema: Methoden von abgeleiteter Klasse aufrufen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo :)

Ich habe in einer Anwendung mehrere Forms.
Diese Forms leiten alle von einer Klasse NormForm ab.

NormForm leitet von Form ab.
In der Normform sind Methoden definiert wie z.b.:
- datenladen()
- datenspeichern()

Die Forms, welche von der NormForm ableiten, können z.B. sein:
- AdressForm:NormForm
- AuftragsForm:NormForm
- RechnungsForm:NormForm

Diese Forms liegen in einem Panel auf einer "Hauptform", ist einfach nur eine weitere Form über welche die methoden der "unterforms" aufgerufen werden sollen.
Jetzt kommt das Problem an der Sache.

Wenn ich die Unterforms in einer Schleife durch gehe:
foreach(Normform form in this.Controls)

und in dieser schleife dann die methode aufrufe:


foreach(NormForm form in this.Controls)
{
  // irgendwie rausfinden, welche meine aktive form ist
  // und dann die Methode der Form aufrufen
  form.datenspeichern();
}

Dann wird die Methode aufgerufen, die in der NormForm programmiert ist.
Ok, da durch, dass ich diese Form jetzt auf NormForm gecastet habe, denke ich kann ich da nur die Methode in der NormForm aufrufen.
Aber... wie kann ich jetzt die spezifisch in den einzelnen Forms Programmierten Methoden aufrufen, wenn ich den genauen Typ in der Schleife nicht kenne?

Thema: MySQL Zugriff von mehreren Programmen über gemeinsame DLL
Am im Forum: Datentechnologien

Passiert der zugriff über LAN oder Internet (verbindungsprobleme)?
Machst du übermäßig viele Abfragen (Problem mit gleichzeitig offenen Connections) ?

Hast du schön Using-Blöcke und try/catch verwendet?
Man sieht leider nichts von deinem Code für den zugriff :-/

Thema: .Net Micro Framework mit VS2010
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Viel kann man damit nicht machen...
Entweder er programmiert ne Stoppuhr für seine Swatch-Uhr...
oder er hackt nen digitalen Bilderrahmen ;-)

Thema: Problem durch Obfuscator: Die gefundene Manifestdefinition der Assembly...
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Ja - den Grund, dass ich ausschließen wollte das es eben daran liegt das zu viel obfuskiert wird ;-)

Aber ich kann auch generell keine Events, Methoden, Eigenschaften obfuskieren, weil die exe, die auf die public events/methoden/eigenschaften zugreift diese sonst nicht finden würde.

Also..
Ich schau mal eben nach...

ich hab jetzt eingestellt:

virtualfunctions="true"
obfuscatetypes="false"
obfuscateevents="false"
obfuscatemethods="false"
obfuscateproperties="false"
obfuscatefields="false"
unicodenormalization="true"
flattennamespaces="false"
stringencryption="true"
controlflowobfuscation="true"
iliterations="5"
emitinvalidopcodes="enhanced"
suppressildasm="true"


Gibt es eigentlich irgendwo eine Doku, was diese ganzen hübschen Schalter alle machen?
Ich hab mir damals nur den NAnt Task runter geladen - und ich glaube mich erinnern zu können, dass es dazu keine Doku gab außer ein Beispiel, wie man es einbindet.

Thema: Problem durch Obfuscator: Die gefundene Manifestdefinition der Assembly...
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

hm.. auf so eine Idee muss man erstmal kommen...
Ich teste mal :-)


hahahahahaha...
Wie geil is das denn wieder?
ja, das wars dann wohl...
Ich weiss auch nicht warum ich da nicht drauf komme.
Zu viel Sonne... Dringender Urlaub nötig...

Aber.. DANKE! :-)

Thema: Problem durch Obfuscator: Die gefundene Manifestdefinition der Assembly...
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Babel Free als NANT-Task

Keine Signierung

Der Task sieht bei mir so aus:


	<target name="Babel_Obfuscator_Free">
		<babel inputfile="C:\Projekte\Exporter\DLL\bin\Debug\ExporterDLL.dll"
					 outputfile="C:\Projekte\Exporter\DLL\bin\Debug\ExporterDLL_babbel.dll"
					 virtualfunctions="false"
					 obfuscatetypes="false"
					 obfuscateevents="false"
					 obfuscatemethods="false"
					 obfuscateproperties="false"
					 obfuscatefields="false"
					 unicodenormalization="true"
					 flattennamespaces="false"
					 stringencryption="true"
					 controlflowobfuscation="true"
					 >		
					 <!-- 
					 iliterations="5"
					 emitinvalidopcodes="enhanced"
					 suppressildasm="true"
					 -->
			<rulesfiles refid="rules" />		
		</babel>
		
	</target>

Wird dann danach mit einem Move-Task zum alten Datei-Namen umbenannt.

Thema: Problem durch Obfuscator: Die gefundene Manifestdefinition der Assembly...
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Wenn er wegen der öffentlichen methoden meckern würde, dann denke ich, würd eine andere Fehlermeldung kommen wie z.B.: "Der Typ BlahBlubb konnte nicht gefunden werden".

Oder?

Thema: .Net Micro Framework mit VS2010
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

.NET Micro Framework Roadmap

^^ mit dem 4.1 soll es wohl möglich sein

Thema: Sehe keine Controls für .NET Compact Framework
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hm...
Was siehst du denn in deiner IDE?
Mach doch mal nen Screenshot :-)

Hast du die richtige Projektvorlage ausgewählt?

Thema: Problem durch Obfuscator: Die gefundene Manifestdefinition der Assembly...
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Ein WinForm Projekt benutzt ein weiteres Projekt als Klassenbibliothek.
Das DLL-Projekt ist als verweis in dem WinForm Projekt hinzugefügt.

Die Build-Ausgabe aus dem projekt wird anschlißend Obfusciert (Gibts da ein Deutsches wort für?)

Habe ich nun Winform.exe und Obfuscierte DLL in einem verzeichnis und versuche die exe aufzurufen, kommt die Fehlermeldeung:

Zitat
System.IO.FileLoadException: Die Datei oder Assembly "ExporterDLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" oder eine Abhängigkeit davon wurde nicht gefunden. Die gefundene Manifestdefinition der Assembly stimmt nicht mit dem Assemblyverweis überein. (Ausnahme von HRESULT: 0x80131040)
Dateiname: "ExporterDLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
bei Exporter.Form1.Form1_Load(Object sender, EventArgs e)

Das würde jetzt bedeuten, das ich mein Winfom Projekt immer gegen die Obfucierte DLL kompilieren müsste um dieses Problem nicht zu bekommen.

Das ist aber nicht grad sehr benuterfreundlich :-/

Irgendwelche Ideen?

Thema: AnkhSVN in Visual Studio 2010 Express Edition
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

auf http://blog.programmerslog.com/?p=4 ist beschreiben wie man eine SVN-Toolbar in das VS Express rein zaubern kann.

Ob das noch mit dem VS2010 funktioniert, weiss ich allerdings nicht.

Thema: Suche Tool für API Documentation von eigenem Projekt
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Ich hab mit mal mit hilfe von http://frickelblog.de/?p=168 und http://frickelblog.de/?p=175 eine mini doku geschrieben.
List die XML Datei aus die das VS erstellt und dann kannst du mit der DataTable alles machen :-)

Thema: Datenbank exklusiv innerhalb eines Programm nutzen
Am im Forum: Datentechnologien

SQLite kann auch Blobs... ;)

Ich hab nie mit Firebird gearbeitet - aber wenn ich wie wahl zwischen SQl Compact und SQLite hätte, würd ich SQLite benutzen wollen.

Thema: Unterschied Visual Studio 2005 Vollversion zu VS2010Express
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

MSI Pakete kannst du übrigens auch mit Wix (http://wix.sourceforge.net) erstellen.
Ist der Microsoft Installer, den MS auch selbst benutzt.

Die einarbeitung dauert etwas - aber wenn man es mal verstanden hat, dann kann man ziemlich viele tolle sachen damit machen :-)

Thema: Frage zum überschreiben von Methoden
Am im Forum: Rund um die Programmierung

Öhm...
Dann muss ich für jede Spezialprogrammierung, welche von der Standard-Programmierung abweicht so ein eigenes Decoration-Ding basteln?

...oder mir grundlegend Gedanken über meine Architektur machen?

Thema: Frage zum überschreiben von Methoden
Am im Forum: Rund um die Programmierung

Was ich machen möchte ist.... ich möchte das, was der Button in der abgeleiteten Klasse macht überschreiben.

Das machen wir hier jeden Tag und gehört zur ganz normalen vorgehensweise dazu.
Manchmal hat man eben den Fall, dass man nicht das möchte, was der Button normalerweise macht, sondern etwas anderes.

Dann müsste ich erst wie oben beschreiben diesen Button noch mal ableiten und in diesem Abgeleiteten Button die Methode überschreiben, die es betrifft.

Sprich... ich hab jetzt einen Abgeleiteten Button BasisButton:


class BasisButton:Button {}

In dem ist irgednwo eine Methode "lock()" definiert, die einen bool entgegen nimmt, und dann entscheidet ob enabled=true oder false, je nach übergeben bool.
Die eigene lock() methode deshalb, weil es diese auch in einer Textbox gibt.
Dort möchte man aber z.b. kein Enabled=true/false haben, sondern ein Readonly, weil sich die textbox anders verhält.

Möchte ich jetzt also für einen Bestimmten Button nicht, das dieser die standard-Programmierung ausführt, weil dieser z.b. IMMER enabled sein soll, muss ich diesen Button noch mal ableiten:


class SpezialButton:BasisButton
{
    public override void lock(bool sperren)
    {
        // Auskommentiert, weil soll immer Enabled sein
        //base.lock(sperren);
    }
}

Und diesen Button müsste ich dann auf meiner Form benutzen.


Ich würde mich wirklich sehr gern von allem loslösen - aber dazu brauch ich ein wenig geistige Hilfe, wie man es "normal" machen würde :-)

Wo sind meine lieben Ex-VFP´ler hin? ;-)

Thema: Frage zum überschreiben von Methoden
Am im Forum: Rund um die Programmierung

So...
Wieder einmal eine Frage, welche sich durch den Umstieg von VFP auf C# ergibt.

Diesmal geht es um das Überschreiben von Methoden.

Ich habe z.B. eine Buttonklasse "BasisButton".
In dieser Klasse gibt es eine Methode lock().
Diese Methode wird aufgerufen wenn sich deiser Button auf einer Form befindet und dann z.B. beim Ändern durch eine schleife aufgerufen wird,,welche alle Bottons durch geht, die die lock()-Methode haben.

Jetzt soll EIN bestimmter Button aber nicht die Standard-Programmierung aus dieser Klasse machen, sondern etwas anderes, z.b. genau das entgegengesetzte.

Der Objektorientierte ansatz wäre jetzt vermutlich folgender:


class SpezialButton 
{
    public override void lock(bool sperren)
    {
        base.lock(!sperren);
    }
}

Ich muss mit also einen neuen knopf Ableiten, in welchen ich die Methode so überschreibe, wie ich sie brauche.
Wenn ich das jetzt für 5 Bottons, bei 3 verschiedenen Methoden habe, bedeutet das, das ich locker mal bis zu 9 abgeleitete Buttons haben kann, weil alle was anderes machen.


In VFP war dies anders.
Da konnte man einfach in den Eigenschaften auf den Reiter "Events/Methoden" gehen und die Spezielle Methode dieses speziellen Buttons umschreiben.

So einen Reiter "Events" gibt es im Eigenschaften Fenster zwar immer noch, aber dort sind keine Methoden gelistet, nur Events.

Bedeutet dies jetzt, das mein BasisButton zwingend einen Event braucht, damit ich diesen dort umschreiben kann, wo ich das umgeschriebene Event brauche?

Thema: Rekursiv Methode in Controls aufrufen - Problem mit Obfuscator
Am im Forum: GUI: Windows-Forms

OKay - das mit dem interface funktioniert :-)

Jetzt stellt sich mir noch mal ne andere frage (ich bekomm jetzt bestimmt wieder ärger weil ich dafür keinen neuen thread auf mache).

Ist es Performace- und Ressourcen-Technisch sinnvoller alle Controls in einer schleife durch zu gehen, oder sollte man versuchen in den controls ein event zu registrieren, so dass die Controls von sich aus ihren Zustand ändern können ohne das ich sie in einer Schleife durchgehen muss?

Thema: Rekursiv Methode in Controls aufrufen - Problem mit Obfuscator
Am im Forum: GUI: Windows-Forms

Gute frage..
Dann müsste ich das enabled abfangen und umschreiben, so das in dem enabled dann geprüft wird ob das Control enabled sein soll oder nicht und es dann letztendlich setzen.

Hm.. müsste rein theoretisch funktionieren.

Trotzdem stellt sich mir die Frage noch, wie man eine Methode in seinen ganzen Controls aufrufen kann :-)