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
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
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
Schau Dir mal :
Microsoft StreamInsight - Technet
Verarbeiten großer verteilter Datenmengen mit Hadoop | heise Developer
Grüße Bernd
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
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
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
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
.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
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
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
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
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
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
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
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
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
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
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
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
Dazu kann man nur sagen "Debugger" !
Damit hättet Du das schnell herausgefunden.
Grüße Bernd
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
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
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
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
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
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
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
Hallo R4z3,
mit adapter.Update funktioniert das nicht, nimm ExecuteNonQuery um ein SQL-Kommando auszuführen.
Schau hier :
Kapitel 6, 8 und 9.
Grüße Bernd
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
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
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
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
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
Obwohl die Berechnung so einfach ist hat es Microsoft im Datei-Explorer erst nach 20 Jahren hinbekommen, in Windows 8.
Grüße Bernd
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 😗*
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
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
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
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 :
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
InstallShield Light :
Windows Installer XML (WIX) :
Inno Setup :
XCOPY :
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.
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
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. :
Grüße Bernd
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
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
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
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
Man könnte ein "Application.DoEvents();" nach der ersten Ändern des Labels einfügen. Aber Vorsicht, das ist eine unsaubere Lösung :
Grüße Bernd
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
Probier mal KeyPress.
Grüße Bernd
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.
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