Laden...

Forenbeiträge von BerndFfm Ingesamt 3.825 Beiträge

03.09.2014 - 16:30 Uhr

Hallo repDon,

einen String in einen anderen einfügen tust Du mit Insert(i, "abc").

String irgendwo in der mitte beliebige stelle in mein Dataset einbinden möchte?

Was willst du genau machen ? Einen String, der in der Datenbank gespeichert ist, um eigene Einträge erweitern ?

Der Code dazu könnte so aussehen :

string name = ds.Tables[0].Rows[0]["name"].ToString();
name = name.Insert(10,"Vor");
ds.Tables[0].Rows[0]["name"] = name;

Grüße Bernd

29.08.2014 - 23:18 Uhr

Wenn Du mit SQL-Befehlen arbeitest solltest Du unbedingt Parameter verwenden, dann wird das Datum auf jeden Fall immer richtig gespeichert.

[Artikelserie] SQL: Parameter von Befehlen

Grüße Bernd

29.08.2014 - 16:12 Uhr

Lösch die Verknüpfung.

In den Eigenschaften der Verknüpfung (Desktop) kann man angeben ob diese überschrieben werden soll wenn schon vorhanden.

Grüße Bernd

29.08.2014 - 13:20 Uhr

Hallo falsecode,

ich hab mal das Lesen von Datensätzen per ADO.NET DataReader getestet, die schnellste Art aus einer Datenbank zu lesen.

Kleine Tabelle, SQL Server 2012, Datenbank liegt auf SSD-Array. Schneller bekomme ich das hier nicht hin.

Ergebnis : 154.942 Datensätze in 17 Sekunden.

Hochgerechnet auf 2,8 Billionen : 3589 Tage 18 Stunden 51 Minuten 31 Sekunden.

Das sind fast 10 Jahre !!!

Ich glaube ein Methodenaufruf ist da dein kleinstes Problem.

Grüße Bernd

28.08.2014 - 16:57 Uhr

Wir möchten Dich gerne zum nächsten Treffen der .NET User Group Frankfurt in Bad Homburg einladen. Nachdem uns Golo Roden bereits in den letzten Jahren immer im September mit einem Vortrag besucht hat, können wir auch in diesem Jahr die Tradition fortsetzen und freuen uns ihn für unser nächstes Treffen wieder als Sprecher begrüßen zu können. Sicher folgt damit auch im September ein weiteres Highlight im User Group Jahr. Wenn Du das nicht verpassen möchtest, dann melde Dich jetzt an, für unser Treffen, am

Donnerstag, 04. September 2014 18:30 - 22:00
Docker - It works on my machine? No: It works everywhere!
Golo Roden (goloroden.de)

Wer kennt das nicht: Auf dem Entwicklungsrechner läuft die Anwendung einwandfrei, auf dem Server läuft sie gar nicht. Warum? Tja, gute Frage. Fakt ist: Jede Anwendung hat Abhängigkeiten. Die Palette reicht von der Konfiguration des Betriebssystems bis zur Integration von Netzwerk- und Webdiensten. Das erschwert nicht nur das Verteilen von Anwendungen auf unterschiedliche Systeme, sondern auch die Fehlersuche. Das Open-Source-Werkzeug Docker verspricht Abhilfe: Es dient als Basis für portable Anwendungscontainer, die sich überall gleichartig ausführen lassen - lokal, auf dem Server oder in der Cloud.
Wir freuen uns, dass uns Golo in gewohnter Manier auch in diesem Jahr wieder im September mit einem Vortrag besuchen wird. Er hat sich dafür wieder ein interessantes und spannendes Thema ausgesucht, welches Ihr nicht verpassen solltet.

Im Anschluss an den Vortrag geht es wie gewohnt zum Networking ins Brauhaus. Dort gibt es bei einem kühlen Getränk und leckeren Speisen die Gelegenheit für vertiefende Gespräche und weiteren Austausch.

Der Beginn für das Meeting ist wie immer um 18:30 Uhr, bitte um 18:15 erscheinen.

Anmeldung ab sofort unter: http://www.dnug-frankfurt.de/Event/tabid/119/ID/88/Default.aspx


Wir möchten Dich außerdem noch einmal auf die diesjährige NRW Conf am 11. & 12. September in Wuppertal hinweisen. Inzwischen sind fast alle Sessions und Speaker online.
Ein Workshop ist bereits ausgebucht - einige Restplätze für die Themen Big Data und Testen sind aber noch verfügbar.
Eine schnelle Anmeldung lohnt sich also: http://www.nrwconf.de/de/Conference/nrwconf/SignUp
Alle Infos: http://www.nrwconf.de


Viele Grüße
Deine .NET User Group Frankfurt

26.08.2014 - 10:59 Uhr

Hallo Luna,

bei Fragen zu Reports gibt es immer wenig Resonanz, sowas macht kein Programmierer gerne 😉

Vielleicht hilft Dir meine Vorgehensweise :

Ich drucke meine Berichte auch mit Reportviewer aus einem Dataset. Ich gestalte das Dataset immer so dass es die druckbaren Daten anzeigt, ohne dass ich Ausdrücke im Reportviewer verwenden muss.

Also z.B. lösche ich die Zeilen vorher die ich nicht drucken will.

Berechnete Spalten füge ich dem Dataset hinzu und berechne sie in C#.

Vielleicht hilft dir das.

Grüße Bernd

23.08.2014 - 10:45 Uhr

Hallo Odin,

sicher dass keine Datei größer 2048 Bytes ist ?

ändere mal die Reihenfolge mit der Du die Verzeichnisse abrufst.

Bricht er immer beim gleichen Verzeichnis ab ?

Kannst Du die Dateien mit ftp.exe abrufen ?

Beim Download von vielen kleinen Dateien kann es sein dass eine Firewall den Traffic unterbricht, weil sie einen Angriff vermutet. In diesem Fall auf den Passive Mode umschalten.

Grüße Bernd

30.07.2014 - 09:26 Uhr

.die werden schnell überfordert sein.

Das musst Du entscheiden.

Probier doch mal : Reportbuilder 3.0 runterladen, dann meine Vorlage laden, dann so starten :

MSReportBuilder.exe Adressen.rdl

Der Anwender kann sich dann die gewünschten Felder ins die Tabelle ziehen. Mit rechtem Mausklick kann man die Eigenschaften des Felder einstellen.
Ein bisschen Schulung ist dabei notwendig, das wird aber wohl bei jeder Lösung so sein.

Vor dem Aufruf im Reportviewer den Report von .rdl nach .rdlc kopieren.

Grüße Bernd

29.07.2014 - 13:17 Uhr

Wenn Du die richtigen Tools zur Verfügung stellst dann kann auch ein Nicht-Programmierer einen Report entwerfen.

Ich würde den Report Builder 3.0 nehmen und eine Report-Vorlagen erstellen, so dass der Anwender sich seine Felder in den Report ziehen kann :

Report Builder / Designer 2.0 RC1 - 3.0 released

Das geht mit Crystal aber ganz genauso. Itextsharp brauchst Du nicht.

Grüße Bernd

29.07.2014 - 12:23 Uhr

Hallo hir,

Du brauchst kein itextsharp um eine PDF zu erzeugen, Crystal kann das auch :

ReportDocument rpt;
string PdfDatei = "...";
...
rpt.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, PdfDatei);

Grüße Bernd

23.07.2014 - 17:07 Uhr

Hallo Guido,

hab mal probiert (Tabelle mit 150.000 Einträgen, MS SQL) :

Tabelle in Dataset laden und die passenden Zeilen einer Connection hinzufügen : 5 Sekunden

Tabelle per DataReader laden und die passenden (80%) Zeilen einer Connection hinzufügen : 2 Sekunden.

Bei 2 Millionen Datensätzen dauert es 50 Sekunden mit dem DataReader.

Die Methode mit dem DataReader braucht auch nur einen Bruchteil an Speicher.


private void Test ()
{
	StartTimer();
	
	DataCollectionStorageProtocol dcsp = new DataCollectionStorageProtocol();
	dcsp.Rows = new List<DataObjectsStorageProtocol>();
	
	foreach (DataObjectsStorageProtocol sp in new DataCollectionStorageProtocol().ReadAllRows())
	{
		if (IsValid(sp)) dcsp.Rows.Add(sp);
	}

	StopTimer();
}

private bool IsValid(DataObjectsStorageProtocol sp)
{
	return sp.adnr > 20000;
}

Hinweis : Arbeitet mit O/R-Mapper. ReadAllRows() liest alle Zeilen der Tabelle per Datareader und gibt sie per yield zurück.
DataObjectsStorageProtocol ist eine Klasse, die die Tabelle der Datenbank darstellt.

Grüße Bernd

23.07.2014 - 10:19 Uhr

Hallo Guido,

zuerst einmal würde ich, wie schon gesagt, die zweite Schleife weglassen und die Zeilen direkt in der ersten Schleife entfernen. Event. musst Du dazu das foreach in ein for umwandeln.

Falls wirklich das dataTable.Select() so langsam ist ersetze es mal durch C# Code.

Was fängst Du mit den Zeilen denn an ? Wie werden sie weiter verarbeitet ?

Ich halte es für wesentlich performanter mit einem DataReader zu arbeiten und die gefunden Zeilen einer Collection hinzuzufügen.

Oder noch besser : Den SQL Server die Arbeit machen lassen.

Grüße Bernd

17.07.2014 - 23:19 Uhr

Hallo Michael,

Man könnte toolStrip und menuStrip disablen, aber dann werden sie ausgegraut.

Ich finde es gut wenn die Menüs während länger laufender Aktionen ausgegraut sind, denn dann weiß der Anwender dass er nicht drauf klicken kann.

Bei Aktionen die länger als 5 Sekunden dauern (können) zeige ich immer noch eine Progressbar und eine Prozentanzeige an.

Grüße Bernd

16.07.2014 - 14:38 Uhr

Hallo subsauber,

verwendetes Datenbanksystem: Microsoft Access

Das ist schonmal nicht optimal, da veraltet.

Nimm lieber SQL Compact oder SQL Express.

Hier eine kurze Einführung : Datenbanken mit ADO.NET

Grüße Bernd

14.07.2014 - 14:39 Uhr

Reportviewer ?

PDF-Ausgabe :



Warning[] warnings;
string[] streamids;
string mimeType;
string encoding;
string extension;
string deviceinfo = "";
byte[] bytes = reportViewer1.LocalReport.Render("PDF", deviceinfo, out mimeType, out encoding, out extension, out streamids, out warnings);
FileStream fs = new FileStream(PdfDatei, FileMode.Create);
fs.Write(bytes, 0, bytes.Length);
fs.Close();

Grüße Bernd

08.07.2014 - 10:56 Uhr

Beim Lesen mit einem DataReader sollte das recht schnell gehen, auch bei mehreren Tausend Zeilen.

unconnected : Es geht hier im eine Desktop-Anwendung, nicht um eine Windows Phone Anwendung.

Meine Anwender wollen auch oft viele Einträge auf einmal sehen, Paging gibt es deshalb bei mir nicht.

Grüße Bernd

06.07.2014 - 22:12 Uhr

In MySQL musst Du Zugriffe über das Netzwerk explizit erlauben. Erstmal sind die verboten.

Ausserdem musst Du einen neuen Benutzer für den Zugriff anlegen.

Hier ist ein Beispiel für MySQL unter Raspian :

Raspbian: MySQL-Datenbanken im Netzwerk freigeben

Grüße Bernd

03.07.2014 - 11:02 Uhr

Wie ein Experte heute morgen erklärte sammelt die NSA wohl die IP-Nummern der User, die sich mit Tor verbunden haben.
Die Kommunikation selbst über Tor, so der Experte, könne die NSA wohl nicht entschlüsseln (geht aber anscheinend doch, wie heise schon gezeigt hat).

Es wird dann die unverschlüsselte Kommunikation dieser User überwacht und es wird nach weiteren Verdachtsmomenten gesucht.

Ich finde es auch übertrieben von "Beweis für NSA-Spionage in Deutschland" zu sprechen, denn den Beweis gibt es schon lange.

Trotzdem finde ich es interessant wie die NSA arbeitet. Ich werde mir den Bericht heute abend auf jeden Fall anschauen. Mit dem Risiko dass er nichts Neues bringt.

Grüße Bernd

03.07.2014 - 09:45 Uhr

Wie heute morgen im Morgenmagazin des ARD/ZDF gezeigt überwacht die NSA "gezielt Personen, die sich mit Verschlüsselung beschäftigen." Insbesondere ging es um Nutzer des Anonymisierungsdienstes Tor.

Das Ganze kommt heute abend um 21:45 Uhr in Panorama :

DasErste 03.07.14 21:45 Uhr Quellcode entschlüsselt: Beweis für NSA-Spionage in Deutschland

Grüße Bernd

03.07.2014 - 00:13 Uhr

Dazu kann man nur sagen "Debugger" !

Damit hättet Du das schnell herausgefunden.

Grüße Bernd

30.06.2014 - 12:55 Uhr

Das Installer-Projekt hat nichts mit WIX zu tun. Es gibt es schon viel länger als WIX, ich denke ab VS 2005.

Das Datenformat ist das Gleiche wie in anderen Projekten in der vdproj-Datei, mit vielen geschweiften Klammern :

...
        "Shortcut"
        {
            "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_F47BDC2810204976BEE8426FECF1A1AE"
            {
            "Name" = "8:Quasar-3 Testversion"
            "Arguments" = "8:Compact Quasar3.sdf DB ."
            "Description" = "8:Quasar-3 die schlaue Lösung für Ihr Unternehmen"
            "ShowCmd" = "3:1"
            "IconIndex" = "3:0"
            "Transitive" = "11:FALSE"
            "Target" = "8:_7BCB9284B067420ABDD1A3201DC64757"
            "Folder" = "8:_230B997ECE374D5594A95E611E64DC88"
            "WorkingFolder" = "8:_2D9915D8B18F478CA77F51FD56EAA23A"
            "Icon" = "8:_9F45FAE19E5242B9816E999310C25B0F"
            "Feature" = "8:"
            }
        }
...

Grüße Bernd

27.06.2014 - 13:16 Uhr

Microsoft hat die finale Version der Installer-Projekte für Visual Studio 2013 vorgestellt :

The Visual Studio Blog - Visual Studio Installer Projects Extension

Damit lassen sich mit wenigen Klicks installierbare MSI-Dateien erstellen. Dabei können viele Voraussetzungen angegeben werden, die bei Bedarf mitinstalliert werden, wie z.B. .NET Framework oder SQL Server.

Es kann angegeben werden ob die fehlenden Komponenten von der Hersteller-Homepage, von der eigenen Homepage oder von der DVD installiert werden sollen.

Ursprünglich hat Microsoft die Installer-Projekte mit dem Visual Studio sterben lassen und auf WIX und Click-Once verwiesen.

Es hab aber viele Proteste (auch von mir) gegen diese Entscheidung und die Einführung der Installer-Projekte für Visual Studio 2012 waren der am häufigsten gewählte Vorschlag. Einige User waren sogar der Meinung es sei ein Fehler dass VS 2012 keine Installer Projekte mehr enthielt.

Grüße Bernd

27.06.2014 - 11:36 Uhr

Wenn ich es richtig vertanden habe wird der Unterroutine die ich damit aufrufe nur die Beschriftung der angklickten Menüpunkte übergeben (sender). Ist dies richtig?

Das ist falsch.

Du kannst jede Eigenschaft des MenuItems abfragen. So kannst Du jedem MenuItem ein 'Tag' mitgeben, das Du abfragst :

if (((MenuItem)sender).Tag.ToString() == "dok") ...

Oder frag .Name oder .Index ab.

if (((MenuItem)sender).Index == 0) ...

Grüße Bernd

27.06.2014 - 11:08 Uhr

12.06.2014 : Microsoft hat die Finale Version des Installer Projekts für Visual Studio 2013 veröffentlicht :

Visual Studio Installer Projects Extension

Gleich mal testen.

Eine Frage dazu in die Runde :

Wenn das Installer-Projekt eine Verknüpfung auf dem Desktop anlegt dann ist diese nicht änderbar. Wenn andere Installer eine Verknüpfung anlegen dann kann ich die immer ändern.

Woran liegt das ? Wie kann ich eine vom Installer-Projekt angelegte Verknüpfung ändern ? Der Anwender muss bei mir den Namen des SQL-Servers als Argument eintragen.

Grüße Bernd

25.06.2014 - 13:38 Uhr

Geht es um die Dokumentation der Änderungen an der Datenbankstruktur oder geht es um Datenbanken bei Kunden, die angepasst werden müssen ?

Ich mache das so dass mein Programm die Datenbankstruktur enthält. Bei Programmstart werden alle Felder angelegt die in der Datenbank fehlen und alle Felder verlängert die zu kurz sind.

SQL-Diff-Skripts, die nicht funktionieren und die regelmäßig eine Rücksicherung der Datenbank erfordern, kann ich meinen Kunden nicht zumuten.

Ich habe da schlechte Erfahrungen mit DotNetNuke wo sowas regelmäßig passiert ist.

Grüße Bernd

25.06.2014 - 13:34 Uhr

Hallo Oli,

statt Application.Restart kannst Du auch Process.Start benutzen und die eigene Anwendung selbst schließen. Dort hast Du die Kontrolle ob Du minimierst startest oder nicht. Nicht-minimiert und nicht im Vordergrund geht glaube ich nicht.

Ich würde dennoch prüfen ob es ohne Restart geht. Packe das Laden des Umfeldes der Umgebung in eine eigene Methode und rufe die auf statt Restart.

Ändert sich die Exe ? Dann starte nur neu wenn es wirklich eine neue Exe gibt. Das funktioniert seit Windows 7 nicht mehr.

Grüße Bernd

24.06.2014 - 11:25 Uhr

Wir möchten Dich gerne zum nächsten Treffen der .NET User Group Frankfurt in Bad Homburg einladen. Nach ca. eineinhalb Jahren ist es uns gelungen Christian Weyer mal wieder mit einem Vortrag für uns zu gewinnen. Wer ihn kennt, der weiß, dass dies sicher ein toller Abend mit hohem Informations- und Unterhaltungswert werden wird. Die Plätze sind begrenzt und daher lohnt sich eine schnelle Anmeldung, wenn Du dabei sein möchtest, am

Mittwoch, 23. Juli 2014 18:30 - 22:00
Weitblick für .NET Entwickler: Moderne Business Anwendungen mit AngularJS – für Desktop, Browser & mobil
Christian Weyer (Blog:Hier)

Mal ehrlich, alle reden darüber: Mobile, Apps, Web-Technologien und die Cloud. Die Welt ist nicht mehr Windows alleine, und Ihr Job als Developer ändert sich. Dabei sind in den letzten Jahren verschiedene Frameworks für die Entwicklung von großen und wartbaren HTML5/JavaScript-Anwendungen an den Start gegangen. Eines der mittlerweile erfolgreichsten und am weitesten verbreiteten ist das von Google-Entwicklern ins Leben gerufene AngularJS. In dieser Session lernen Sie, wie Sie damit Geschäftsanwendungen auf eine Art entwickeln, die dem bekannten MVVM-Modell - bspw. aus WPF und Silverlight - ausgesprochen ähnlich ist. Trennen Sie die Anzeige von der Logik und fühlen Sie sich "gut" mit JavaScript. Christian Weyer zeigt Ihnen wie strukturierte, wartbare und testbare Anwendungen auf der Web-Plattform aussehen können, ob Desktop oder mobil. Und alles eingebettet in eine dazu gehörige Gesamtarchitektur auf Basis von ASP.NET Web API & SignalR.
Wir freuen uns Christian einmal wieder mit einem Vortrag bei uns begrüßen zu können. Wer ihn kennt weiß, dass uns sicher ein spannender und unterhaltsamer Abend bevorsteht.

Im Anschluss an den Vortrag geht es wie üblich zum Networking ins Brauhaus. Dort gibt es bei einem kühlen Getränk und leckeren Speisen die Gelegenheit für vertiefende Gespräche und weiteren Austausch.

Der Beginn für das Meeting ist wie gewohnt um 18:30 Uhr, bitte um 18:15 erscheinen.

Anmeldung ist erforderlich, ab sofort unter: .NET User Group Meeting - Moderne Business Anwendungen mit AngularJS


Wir möchten Dich außerdem noch einmal auf den kommenden SQLSaturday Rheinland hinweisen, der bereits am kommenden Wochenende stattfindet:
In wenigen Tagen ist es soweit und der dritte SQLSaturday in Deutschland öffnet seine Pforten. Die Agenda ist inzwischen veröffentlicht. Eventuell gibt es noch kleinere Verschiebungen bei den Uhrzeiten, Du kannst Dir aber jetzt sicher schon einen guten Überblick über die Themen und Sprecher verschaffen. Vielleicht findest Du auch Themen, die Freunde oder Kollegen von Dir interessieren könnten, dann leite diese Information gerne weiter und weise sie auf diese kostenfreie Veranstaltung hin. In jedem Falle wäre jetzt genau der richtige Zeitpunkt sich anzumelden, falls Du dies noch nicht getan hast.
Viele internationale Experten garantieren höchstes technisches Niveau!
Ebenfalls nicht verpassen:
Zusätzlich zum kostenfreien Konferenztag am Samstag, gibt es diesmal noch einen kostenfreien Big Data Hackathon am Freitag. Weitere Informationen und die Anmeldung finden sich unter https://bigdatarheinland.eventbrite.com


Viele Grüße
Deine .NET User Group Frankfurt

23.06.2014 - 13:48 Uhr

Hallo R4z3,

mit adapter.Update funktioniert das nicht, nimm ExecuteNonQuery um ein SQL-Kommando auszuführen.

Schau hier :

Das .NET Datenbanken How To

Kapitel 6, 8 und 9.

Grüße Bernd

17.06.2014 - 09:51 Uhr

Wenn Du warten willst bis das erste Programm zu Ende ist bevor Du das zweite Programm startest benutze .WaitForExit :

stackoverflow : Wait till a process ends

Schauen welche Checkboxen angehakt sind : Mit foreach die CheckedItems durchgehen, Beispiele findest Du im Link von Coffeebean.

Grüße Bernd

11.06.2014 - 12:35 Uhr

Diese Vorgehensweise finde ich mehr als bedenklich.

Was ist wenn 3 Leute an einer Adresse wohnen und dann einer umzieht ?

Ändert sich dann bei allen 3 die Adresse ?

Die Aufteilung auf 2 Tabellen finde ich unsinnig.

Grüße Bernd

11.06.2014 - 09:02 Uhr

Bei MS SQL hast Du Glück, da kannst Du MultipleActiveResultSets (MARS) im Connectionstring aktivieren. Wie vbprogger schon gesagt hat.

Andere Datenbanken wie MySQL erlauben immer nur einen geöffneten Datareader.

Bei SQL Compact kann man mehrere Datareader benutzen, die müssen aber über die gleiche Connection geöffnet werden.

Verbesserung Deines Codes :

HasRows() kannst Du weglassen, das wird im while schon abgefragt.

Die 2. Connection öffne besser nur einmal. So ganz ohne Gewähr :

using (SqlConnection con01 = new SqlConnection(connectionString))
{
    con01.Open();
    using (SqlCommand cmd = new SqlCommand(sql01, con01))
    {
        using (SqlConnection con02 = new SqlConnection(connectionString))
        {
            con02.Open();
            using (SqlCommand cmd02 = new SqlCommand(sqlCheckBPos, con02))
            {
                SqlDataReader reader01 = cmd.ExecuteReader();
                SqlDataReader reader02 = cmd02.ExecuteReader();
                while (reader01.Read())
                {
                    while (reader02.Read())
                    {
                         ...XXX...
                    }

Grüße Bernd

10.06.2014 - 18:04 Uhr

Mir der Suche hier im Forum findest Du ganz einfach folgende Beiträge :

Icons aus EXE-/DLL-Datei extrahieren

Größtes Icon einer .exe Datei ermitteln

Dort findest Du alle benötigten Informationen.

Grüße Bernd

10.06.2014 - 11:52 Uhr

Man kann auch per Skript / Batchdatei mit Visual Studio eine Release-Version erstellen :

rem Windows 8 x64
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe" C:\Net\....sln /Build Version

Grüße Bernd

30.05.2014 - 23:14 Uhr

Obwohl die Berechnung so einfach ist hat es Microsoft im Datei-Explorer erst nach 20 Jahren hinbekommen, in Windows 8.

Grüße Bernd

30.05.2014 - 12:06 Uhr

Fzelle : Danke für den Hinweis !

Hier gibt es eine aktuelle Preview Version des Installer Projects, das wieder in VS 2013 kommen soll :

blogs.msdn : Visual Studio Installer Projects Extension

Gleich mal installiert (Version 0.9.1.0) ! Mein Kommentar :

**VS 2013 Installer Project 😗*

  • basiert auf Installer Project des VS2010
  • Framework 2.0 bis 4.5 kann geprüft und von einer Website oder von DVD installiert werden. Das Framework 2.0 fehlt zwar in der Liste der "Detected Dependencies" scheint aber trotzdem zu funktionieren wenn man es manuell aktiviert. Das muss ich noch testen (Wo bekommt man einen Rechner ohne Framework 2.0 her ?)
  • SQL Server 2008R2 oder 2012 kann installiert werden falls nicht vorhanden. Als Besonderheit kann SQL Server LocalDB installiert werden (sehr kleine Version vom SQL Server). Ich hoffe das klappt auf 32- und 64-Bit-Rechnern.
  • Mit dem Setup Wizard erstellt man in 5 Minuten ein Setup für seine Anwendung.

Lustig finde ich dass viele Benutzer des VS 2012 und VS 2013 gar nicht bemerkt haben dass Microsoft die Setup-Projekte entfernt hat, sondern es für einen Fehler gehalten haben dass sich alte Setup-Projekte nicht öffnen ließen bzw. sich keine neuen Setup-Projekte anlegen ließen.
Es wurde oft gefragt "Wann der Fehler denn behoben sei".

Grüße Bernd

29.05.2014 - 12:22 Uhr

Für InnoSetup gibt es bei Codeproject auch Anleitungen wie man ein .Net Framework prüfen und ggf. installieren kann.
CodeProject Modular InnoSetup Dependency Installer
CodeProject InnoSetup with .NET installer x86/x64 sample

Gegenüber Setup-Projekt und ClickOnce, wo man nur eine Checkbox anklicken muss und dann, wenn man will, noch eine URL oder einen Pfad angeben kann, wo der Installer das Framework findet, ganz schön umständlich.

Noch ein Hinweis zu den Setup-Programmen :

ClickOnce, Setup-Projekt und InstallShield integrieren sich mehr oder weniger ins Visual Studio.

InnoSetup kommt mit dem Inno Script Studio

WIX kommt erstmal so daher, es gibt aber WixEdit, das eine GUI zur Verfügung stellt.

XCOPY kommt mit dem komfortablen Editor NOTEPAD.EXE, allerdings ohne Intellisense bei der Bearbeitung von Batchdateien.

Grüße Bernd

28.05.2014 - 23:36 Uhr

PS.: Microsoft ist der Meinung dass der Anwender kein Setup-Projekt mehr braucht, weil ja jeder eine Software-Verteilungssoftware einsetzt. Oder gleich in der Cloud arbeitet.
Das sehe ich nicht so.
Auf WIX wurde halt umgestellt, da sich damit leichter automatisiert Setups umsetzen lassen - eben per XML.

Das war die Aussage eine MS-Mitarbeites, der in Deutschland u.a. für Setup-Programme zuständig ist / war.

IIS-Anwendungen sind sicher auch wichtig. Ich brauche sie z.Zt. aber nicht.

Grüße Bernd

28.05.2014 - 22:54 Uhr

Hallo,

für 2 Applikationen benötige ich ein Setup-Programm, um diese per DVD und per Internet-Download zur Verfügung zu stellen.

Meine Anforderungen :
*Ein paar Programmdateien kopieren *Eine Verknüpfung mit Icon anlegen *Auf Framework 2.0 prüfen und dieses ggf. installieren *Auf Framework 3.5 prüfen und dieses ggf. installieren (2. Applikation) *Auf SQL Express prüfen und diesen ggf. installieren

Die ersten beiden Punkte kann jedes Setup-Programm. Doch dann wird es spannend !

Bis VS 2010 habe ich mit einem Setup-Projekt gearbeitet und war eigentlich auch zufrieden damit. Doch das Setup-Projekt gibt es nicht mehr und es muss nach Alternativen geschaut werden.

Hier meine Eindrücke, ich habe jedes Programm aber nur kurz getestet :

VS2010 Setup-Projekt :

  • Es kann auf Framework 2.0 und 3.5 getestet werden. Das Framework kann von DVD oder aus dem Internet geladen werden
  • Es kann auf SQL Express 2005 getestet werden, dieser kann installiert werden. Funktioniert allerdings nicht auf 64-Bit-Betriebssystem
  • Das Setup ist einfach einzurichten
  • Benutzerabfragen "Icon anlegen", "Programm starten" nur umständlich einzubauen
  • Nicht zukunftssicher

ClickOnce :
-Der Dialog den der Benutzer sieht, ist sehr minimalistisch und abschreckend : "Sicherheitswarnung", "Der Herausgeber kann nicht überprüft werden", "Möchsten Sie wirklich installieren ?", Herausgeber : Unbekannter Herausgeber", "Anwendungen stellen eine potentielle Gefahr da, installieren Sie nicht wenn ..."
Ich würde eine solche Software nicht installieren

  • Es kann auf Framework 2.0, 3.5 und auf SQL Server 2008 oder 2012 geprüft werden.
  • Die Oberfläche kann nicht angepasst werden
  • Fehlermeldungen "Es fehlt eine erforderliche Komponente" oft unverständlich

InstallShield Light :

  • Einrichten geht einfach und schnell.
  • Bei 80% der Funktionen kommt die Meldung "Nur in der Vollversion verfügbar, Vollversion jetzt kaufen ?"
  • Es kann nur auf Framework 3.5 geprüft werden, Test auf 2.0 muss man aufwändig programmieren.
  • Es kann nur auf SQL Server 2012 geprüft werden.
  • Teilweise umständlich zu definieren

Windows Installer XML (WIX) :

  • Der offizielle Nachfolger vom Setup Projekt
  • Sehr umfangreiche XML-Konfigurationsdatei
  • Mit WixEdit GUI ganz gut zu bearbeiten
  • Kann auf Framework 2.0 und 3.5 prüfen, aber installieren ?
  • Lange Einarbeitszeit, gegenüber den anderen Programmen

Inno Setup :

  • Eine lange Definitionsdatei. Find ich praktisch
  • Mit der GUI Inno Script Studio gut zu bearbeiten
  • Abfrage auf Framework oder SQL-Server nur per eigener Programmierung machbar

XCOPY :

  • Würde mir eigentlich reichen, per Batchdatei könnte man sogar auf das Framework prüfen. Die Optik ist aber nicht so benutzerfreundlich.

Die Optik finde ich bei allen Programmen ausreichend (ausser XCOPY), der Anwender findet sich schnell zurecht weil sich die Programme mehr oder weniger ähneln. WIX bietet die meisten Anpassungsmöglichkeiten für die Optik.

Favoriten habe ich bisher keinen, so ganz toll finde ich keines.

Wie sind Eure Erfahrungen ?

Grüße Bernd

PS.: Microsoft ist der Meinung dass der Anwender kein Setup-Projekt mehr braucht, weil ja jeder eine Software-Verteilungssoftware einsetzt. Oder gleich in der Cloud arbeitet.
Bei meinen Anwendern ist das aber nicht so, die wollen noch ganz altmodisch mit Setup.exe auf den eigenen Rechner installieren.

27.05.2014 - 12:37 Uhr

Hallo,

Odbc ist eine schleche Idee, das ist langsam und umständlich.

Für ADO.NET gibt es einen guten MySQL-Treiber von MySQL / Oracle.

Hier findest Du ein Beispiel wie Du auf eine Datenbank zugreifst :

Datenbanken mit Dot.NET Kapitel 9

Grüße Bernd

21.05.2014 - 13:45 Uhr

Du kannst auch eine fertige Komponente benutzen :

TX Text Control .NET for Windows Forms

Die Express Version darf kostenlos benutzt werden, auch in eigenen Projekten. Bitte aber dazu die Lizenzbestimmungen noch einmal kontrollieren.

Gegenüber der kostenpflichtigen Version fehlt u.a. :

  • Kopf- und Fusstext bearbeiten
  • PDF-Export
  • Rechtschreibprüfung

Grüße Bernd

16.05.2014 - 09:00 Uhr

Was hältst du denn für besser?

  • Connection zum Server einmal (zentral) öffnen/schließen oder pro Methode?

Lies dazu : [Artikel] Ressourcen schonen - Datenbanken richtig öffnen und schließen

Grüße Bernd

13.05.2014 - 13:44 Uhr

Dies lief bisher mehrere Jahre ohne Probleme

Das wundert mich, meistens geht das schneller in die Hose.

Beim Zugriff auf eine Datei über das Netzwerk kann es immer zu Schäden an der Datei kommen, z.B. durch Abbrüche oder gleichzeitigen Zugriff.

Abhilfe schafft nur eine "echte" Datenbank wie SQL Server Express.

Grüße Bernd

13.05.2014 - 11:18 Uhr

Hallo,

das ist schon in Ordnung so.

Die Expressversion kann nur Datenbanken bis 4 GB verwalten, ändere den Wert auf 4 GB.

In einem Update wurde die Grenze auf 10 GB erhöht, das sollte auch gehen.

Sicher dass Dein Laufwerk mit NTFS formatiert ist ?

Grüße Bernd

13.05.2014 - 08:40 Uhr

Du hast den Eventhandler sicher mehrmals registriert.

Wo führst Du diese Zeile aus ?

btnChargeCheck.Click += new System.EventHandler(btnChargeCheck_Click);

Und vor allem wie oft ?

Man könnte auch so schreiben :

btnChargeCheck.Click -= new System.EventHandler(btnChargeCheck_Click);
btnChargeCheck.Click += new System.EventHandler(btnChargeCheck_Click);

Grüße Bernd

12.05.2014 - 14:05 Uhr

Man könnte ein "Application.DoEvents();" nach der ersten Ändern des Labels einfügen. Aber Vorsicht, das ist eine unsaubere Lösung :

Warum DoEvents Mist ist!

Grüße Bernd

28.04.2014 - 11:45 Uhr

Wir möchten Dich gerne zum nächsten Treffen der .NET User Group Frankfurt einladen. Wenn Du nicht die Gelegenheit hattest die Microsoft Build Konferenz in San Francisco (http://www.buildwindows.com/) zu besuchen und Du auch nicht die Zeit findest, Dir alle Sessions online anzusehen, dann ist dieser kompakte User Group Abend genau das richtige für Dich. Der Microsoft Developer Evangelist Daniel Meixner war vor Ort und besucht uns mit einem Vortrag zu den wichtigsten Neuerungen. Wenn Du das nicht verpassen möchtest, dann melde Dich jetzt an, für unser Treffen, am

Dienstag, 06. Mai 2014 18:30 - 22:00
Neuigkeiten für Windows und Windows Phone App Entwickler
Daniel Meixner (Blog)

Mit dem Release von Windows Phone 8 und Windows 8 setzen die beiden Betriebssysteme zum ersten Mal auf den gleichen Kernel auf. Mit den Updates Windows 8.1 und Windows Phone 8.1 rücken beide Plattformen noch einmal näher zusammen und die „One Microsoft“ Vision wird Realität. Neue Programmiermodelle und neue Universalapps sowie Neuerungen für Apps im Unternehmensumfeld erleichtern die Entwicklung und verschaffen neue Möglichkeiten. In diesem Vortrag zeigt Daniel Meixner basierend auf den News die Anfang April bei der Build Konferenz verkündet wurden, was Ihr zu diesem Thema wissen müsst.
Wir freuen uns, dass Daniel uns so kurz nach der Microsoft Build Konferenz mit allen Neuigkeiten versorgt. Es wird sicher ein sehr interessanter und unterhaltsamer Abend.

Im Anschluss an den Vortrag geht es wie üblich zum Networking ins Brauhaus. Dort gibt es bei einem kühlen Getränk und leckeren Speisen die Gelegenheit für vertiefende Gespräche und weiteren Austausch.

Der Beginn für das Meeting ist wie üblich um 18:30 Uhr, bitte um 18:15 erscheinen.

Anmeldung ab sofort unter: .NET User Group Meeting - Neuigkeiten für Windows und Windows Phone App Entwickler
Viele Grüße
Deine .NET User Group Frankfurt

16.04.2014 - 19:54 Uhr

Probier mal KeyPress.

Grüße Bernd

16.04.2014 - 12:12 Uhr

Fzelle : Müsste es nicht so heissen :


if (currentCustomer != null)
    if (currentCustomer.Adress != null)
        return currentCustomer.Adress.City;
return string.empty;

Die ?-Kurzschreibweise finde ich auch gut.

Am 24. April gibt es eine Online Konferenz zu den Themen auf der build : Auf //build folgt //learn.

Am 06.05. gibt es in Frankfurt bzw. Bad Homburg eine Usergroup Session mit dem Thema 'build 2014'.

Grüße Bernd

Edit : Falsche Klammer weggemacht.

15.04.2014 - 14:02 Uhr

Ich habe schon kritisiert, dass bei Vorträgen oft "var" genommen wird immer mit der Ausrede mal sei zu faul zu tippen, die Vortragenden aber meistens mehr tippen mussten als wenn sie gleich den richtigen Datentyp genommen hätten.

Beispiel :


var lvi1 = new ListViewItem();
ListViewItem lvi2 = new ListViewItem();

Für die zweite Zeile benötige ich weniger Tastendrücke.

Ich benutze kein "var" außer in den zwingenden Fällen die herbivore genannt hat.

Grüße Bernd