gibt es irgendwelche Beschränkungen, Voraussetzungen, etc. die du uns mitteilen solltest? Z.B. es muss auf einem Server in eurer Firma laufen, kann in der Cloud sein, Clients sind alle WinForms od. nicht, Datenbank muss SQL Server sein od. nicht. Usw. denn danach richten sich auch die möglichen Empfehlungen / Tipps.
Die Datenbank sollte vorzugsweise eine MS SQL DB sein. Azure Cloud ginge auch ... Im Prinzip wäre eine Webanwendung sicher sinnvoller ... ansonsten wird es ein Rollout einer lokalen Installation der Clients. Ich bin da noch in der Findungsphase.
Na klar habe ich nach "workflow engines" schon gegoogelt, allerdings möchte ich nicht erst alle ausprobieren, wenn hier evtl. jemand sagen kann, welchen er nicht empfehlen kann oder wo z.B. viele Code Snippets existieren und das ganze relativ einfach intuitiv zu erlernen ist. :-)
Hallo zusammen,
ich möchte einen simplen Workflow erstellen. Hintergrund ist das Bearbeiten eines Artikels über mehrere Abteilungen.
Beispiel:
1. Abeteilung 1
2. Abteilung 2 UND 3 UND 4
3. Abteilung 5 wenn 2 UND 3 fertig
4. Abteilung 6 wenn 4 UND 5 fertig
usw...
Jede nachgelagerte Abteilung benötigt X Datensätze der Vorabteilungen, welche mitgeliefert werden müssen, damit die Abteilung arbeiten kann.
Das Ganze soll dann mit einer Reminder-Funktion (Email) ausgestattet werden und eine Statusübersicht jedes Artikels in Tabellarischer Form soll erstellt werden.
I.d.R. arbeite ich mit Windows Forms.
Gibt es Frameworks / Klasse, die soetwas unterstützen oder muss ich alles "zu Fuß" erstellen?
Hat jemand Erfahrung damit?
Yeah, it works. Soweit hab ich ihn zum leben erweckt und mir wird jetzt im FontDialog auch die Option zur Farbauswahl geboten. (war etwas frickelig mit dem Editornamen, da er wohl voll qualifiziert sein muss, deshalb hab ich diesen via
Nun folgt gleich die nächste Hürde ... nachdem ich die Schriftfarbe ausgewählt habe, wie lese ich sie aus?
Ich habe ja im ganzen Objekt meiner o.g. Klasse keine derartige Eigenschaft.
ich habe in einer Form ein PropertyGrid in einer Form untergebracht, welches ich auszugsweise wir folgt fülle:
class AttributesForPropertyGrid
{
[Browsable(true)]
[ReadOnly(false)]
[Description("Konfiguration des Headers")]
[Category("Header")]
[DisplayName("HeaderFont")]
public Font HeaderFont { get; set; } = SystemFonts.DefaultFont;
}
Nun meine Frage dazu:
Wie bekomme ich in dem im PropertyGrid aufpoppenden FontDialog die "ShowColor" Eigenschaft aktiviert, damit ich dort die Schriftfarbe wählen kann?
Um auszuwählen, welche Eigenschaften (persönlichen Daten) in das Objekt "Person" übernommen werden sollen und welche nicht, bevor die Person serialisiert wird.
Im Prinzip bräuchte ich sowas wie eine CheckedTextBox.
(Die Person wird hinterher (teilweise) serialisiert, die Textboxen vorher per BindingSource und BindingNavigator aus einer DB gefüllt.) Im Prinzip könnte ich auch alle CheckBoxen mit einer Methode abfragen, habe aber dann das Namenproblem mit den Textboxen. Und so 20 if-thens übereinander möchte ich vermeiden. Ein Schluss von der CheckBox auf die Textbox gelingt mir nicht. Deren Namen zu vergleichen ist ja auch nicht wirklich schick, oder?
ich habe auf einer Form viele Checkboxes, von denen jeweils das CheckedChanged-Event behandelt wird.
Das Problem ist, dass beim Form_Load natürlich nur die Events gefeuert werden, wo sich der Checked-Status beim initialisieren ändert.
Ich möchte allerdings gerne jedes Event einmal feuern, d.h. jede Methode einmal durchlaufen (und natürlich das jeweilige sender-objekt mitliefern)
Muss / kann ich die anzusprechenden Methodennamen dynamisch erzeugen? Wenn ja, wie? Oder hat jemand eine Alternative, für jede CheckBox der Form das dazugehörige Event auszulösen?
Aber ich drücke mich mal vorsichtig aus, dass der ganze Code hier "suboptimal" ist. Er verletzt zig Prinzipien und Empfehlungen; und darüber hinaus untestbar.
Die Aussage ist völlig okay, da weiß ich, dass ich noch was zu tun habe. Mit dem Testen habe ich mich eh zu wenig beschäftigt. ;)
Zitat von Abt
Persönlich weiß ich auch nicht, ob das Grundkonstrukt mit der Verbindungsverwaltung und der DataTable so überhaupt funktionieren kann. Das weiß jemand vielleicht besser, der noch DataTables verwendet (ich seit Jahren nicht mehr).
ich lese eine SQLite DB Tabelle mit "SELECT * ..." in eine DataTable, welche ich per Databinding incl. BindingNavigator an Textboxen binde.
Wenn ich nun mit folgender Methode die DataTable zurückspeichern möchte, verdoppelt sich die DB Tabelle, d.h. es wird nicht geupdatet sondern insertet. Ich weiß nur nicht, warum?
Hat jemand eine Idee?
public static int SaveDataTable(DataTable DT)
{
int rowsUpdated = 0;
try
{
using (SQLiteConnection cnn = new SQLiteConnection(_ConnectionString))
{
using (SQLiteCommand myCommand = cnn.CreateCommand())
{
myCommand.CommandText = string.Format("SELECT * FROM {0}", DT.TableName);
using (SQLiteDataAdapter myDataAdapter = new SQLiteDataAdapter(myCommand))
{
using (SQLiteCommandBuilder builder = new SQLiteCommandBuilder(myDataAdapter))
{
cnn.Open();
rowsUpdated = myDataAdapter.Update(DT);
}
}
}
}
return rowsUpdated;
}
catch (Exception Ex)
{
MessageBox.Show(Ex.Message);
return rowsUpdated;
}
}
Edit: Ich habe festgestellt, dass, wenn ich DT.AcceptChanges() vorher ausführe, obiges nicht passiert. Allerdings werden dann auch keine Changes gespeichert. D.h. wieder kein Update.
Hallo zusammen,
ich starte eine Forms Anwendung wie folgt um erst mal ohne Fenster zu starten. Erst wenn gewisse Bedingungen vorherrschen, soll die Anwendung sichtbar werden, wenn nicht, mit einer Meldung geschlossen werden.
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
using(FormMain formMain = new FormMain())
Application.Run();
Das Problem ist, dass ich die Anwendung aus der formMain heraus nicht geschlossen bekomme.
Selbst wenn im Konstruktor als erstes
Application.Exit();
steht, läuft die Anwendung weiter.
Was mache ich verkehrt?
Ich habe festgestellt, dass ich mit
ich befülle ein Word Dokument mit diversen Daten aus einer DB. Soweit so gut. Aufgrund der Abschnittswechsel in dem doch recht umfangreichen Dokument, kommt es vor, dass:
1. Ab und zu eine Seite hochkant gedruckt wird, statt im Querformat, obwohl dieser Abschnitt als Querformat festgelegt ist.
2. Ab und zu eine Seite von 50 eine falsche Seitennummerierung hat (z.B. Seite 1 von 50, obwohl es eigentlich Seite 28 ist)
Das Verhalten dieser Dokumente war schon vor der Automatisierung so und tritt nur sporadisch auf.
Meine Frage:
Lässt sich 1. oder 2. irgendwie per C# prüfen?
Bei 2. habe ich z.N. das Problem, dass ich zwar PAGE oder NUMPAGES als Felder finde, aber eben nur einmal pro Abschnitt. D.h. das seitenweise prüfen gelingt mir hier nicht.
ich connecte einen MS SQL Server. Bislang habe ich das immer "zu Fuß" gemacht, habe nun einmal das bequeme Databinding automatisch generieren lassen indem ich die Verbindung auf die Form gezogen habe.
Nun möchte ich aber ein gescheites Excepion handling haben, d.h. ein schickes Fenster was mir sagt, wenn die DB nicht erreichbar ist.
Was ist hier nun best Practice? Im Auto-Code herum zu schreiben? Eine "partial Class" dran zu hängen? Bislang habe ich Auto-Code immer in Ruhe gelassen. Danke für die Infos.
Hi, nein, das war mir so nicht bewusst. Genau genommen muss es auch kein Add-In sein, sondern könnte auch eine eigenständige Anwendung werden.
Ich schau mir das OpenXML mal an.
ich bin dabei ein VSTO Add in zu erstellen, wo in dieversen auf dotx-Vorlagen basierenden Dokumenten Texte eingefügt werden sollen (größtenteils Produktnummern in Tabellen, etc.).
Soweit wäre das kein Problem, die Frage stellt sich hier nach der robustesten Technik. Mir fallen ad hoc drei Möglichkeiten ein:
Textmarken - Wie schon oft beschrieben, wird hier der entsprechende Text in die Textmarke eingefügt
Formularfelder - Ausfüllen von Eingabefeldern
Tags / Platzhalter - Suchen und Ersetzen vorgegebener Tags wie z.B: <#Tag1#>
??
Zu erwähnen ist, dass die Vorlagen Kennwortgeschützt sein werden. Vielleicht fallen Euch auch noch bessere Möglichkeiten ein.
Ich bin neugierig, ob es Erfahrungswerte mit der ein oderen anderen Technik vorherrschen bzw. von welcher Ihr mir direkt abraten würdet.
ich möchte mich im Bereich der Office-Addins etwas ausprobieren, scheitere aber gerade an einem Signatur-Problem (siehe Screenshot).
Das Problem dabei: Ich weiß nicht, wo ich anpacken soll. Die Microsoft-Seiten zum Thema Zertifizierung sind hier allesamt wenig hilfreich.
Ich habe versucht, die ClickOnce-Signatur zu deaktivieren, vergebens, da sie sich immer wieder aktiviert.
Ich habe versucht, das Projekt lokal zu speichern und auszuführen, vergebens. Ich habe versucht, die Liste der Vertrauenswürdigen Speicherorte im Word zu erweitern, vergebens.
Ich möchte auf jeden Fall vermeiden, ein Zertifikat irgendwo erwerben zu müssen.
Ich hab von SharpLibZip auf DotNetZip umgesattelt, irgendwie gefiel mir die lib besser. Mit folgendem Code gelingt mir mein Vorhaben (ich weiß, bei gleichnamigen files wird derzeit nur das erste geändert)
/// <summary>
/// Change Content of a single
/// </summary>
/// <param name="myPath">Path to dedicated zip file</param>
/// <param name="myFile">File to be modified</param>
public void modifyZippedFile(string myPath, string myFile)
{
string fileContent;
string targetFile = "";
using (ZipFile zip = ZipFile.Read(myPath))
{
foreach (ZipEntry entry in zip.Entries)
if (entry.FileName.Contains(myFile))
targetFile = entry.FileName;
ZipEntry e = zip[targetFile];
using (StreamReader sr = new StreamReader(e.OpenReader(), Encoding.Default, true))
{
fileContent = sr.ReadToEnd();
fileContent = modifyContent(fileContent);
zip.RemoveEntry(targetFile);
zip.AddEntry(targetFile, fileContent);
zip.Save();
}
}
}
Die Bahn geht da aktuell einen recht interessanten Ansatz:
Nach dem Ende des Feldversuchs in puncto Gesichtserkennung sollen die Kameras weiterverwendet werden und das System darauf konditioniert werden "Situationen" zu erkennen und diese dann zu melden.
Schaut Euch mal das Projekt INDECT an. Google wird die passenden Treffer ausspucken. Dieses Projekt fand kaum in den Medien statt.
ich würde Dir empfehlen, mal durchzuschauen, was der Annex 11 des EU-GMP bzw. EU-GCP Leitfadens verlangt.
Als Erläuterung auch das Aide Mémoire zum Annex 11 (einfach googeln) damit Du rechtlich auf der sicheren Seite bist. Ein Solches Audit Trail ist ja durchaus mehr als eine graphische Darstellung in einer Textbox.
Im Klartext: Alter Wert, Neuer Wert, Datum der Änderung, Name des Ändernden und Grund der Änderung müssen nicht editier- und löschbar vorgehalten und regelmäßig gereviewt werden.
Ich würde als Basis für den Audit-Trail eine eigene DB-Tabelle (mindestens) mit entsprechenden Berechtigungen vorhalten. Alles Andere führt in dem Bereich früher oder später zu Ärger.
Und da ist schon der (ein) Knackpunkt bei agilen Methoden. Es gibt keine Grundlagen für ein Angebot. Wie soll man sich an einem Ausschreibungsverfahren beteiligen, wenn schon in der Natur der Sache liegt, dass man den Aufwand gar nicht abschätzen kann?
Wenn der Kunde in einem Lastenheft beschreiben kann, was er haben will, kann man auch den Aufwand abschätzen.
Ein Pflichtenheft für ein Angebot beinhaltet doch keine Spezifikation bis in jede Funktion hinein, sondern eine mehr oder weniger grobe Beantwortung der Lasten á la "lösen wir mit unserem Standardmodul xyz" oder "kundenspezifisches Modul".
Wenn das nicht geht, ist das Lastenheft nicht genau genug.
Der Knackpunkt, der m.E. häufiger anzutreffen ist, ist, dass der Kunde nicht genau weiß, was er will. Ein "schaut ja ganz gut aus, aber eigentlich will ich das ganz anders..." sprengt das Projekt häufiger (zumindest ist das meine Erfahrung). Und in diesem Fall ist man mit agilen Methoden viel wendiger.
Oder man bekommt Erfahrung im Change Management. ;)
Nachdem ich den passenden html-Workshop installiert und das Tool zum laufen bekommen habe, bin ich eigentlich zufrieden mit sharpDox.
Ich fänd es schade, wenn Du das Projekt einstellen würdest. docFX habe ich mir nicht angeschaut. Ich mag Tools, die Intuitiv zu bedienen sind, zumindest was ein erstes schnelles Ergebnis betrifft. Trifft das auf docFX zu? Die Doku lässt auf gegenteiliges schließen, das kann aber auch an mir liegen. ;)
Von meiner Seite aus nochmal großes Lob an Dein Projekt
im VS kann ich bekanntermaßen das Zielframework meiner Anwendung auswählen.
Inwiefern ist denn aber z.B. ein gewähltes Zielframework kompatibel zu künftigen Frameworks?
Konkret: Ich wähle 4.0 aus ... voraussichtlich bis zu welcher Version kann ich die Anwendung (Hier: Klassische WinForms Anwendung) verwenden ohne eine extra Runtime installieren zu müssen?
Ist das irgendwo dokumentiert oder anders aus den Versionsbezeichnungen ableitbar?
Hieraus abgeleitete Frage: Ist es strategisch schlau, möglichst das neueste Zielframework auszuwählen um möglichst lange Kompatibilität zu erhoffen oder das passend zu den eingesetzten Komponenten und Klassen niedrigste Framework um mit möglichst vielen Plattformen (die evtl. nicht die neueste Version installiert haben) kompatibel zu sein? Wie verfahrt Ihr hier?
Ich erhalte folgende Fehlermeldung, obwohl der Pfad angegeben wurde und der THML Workshop installiert ist:
Fehler
Could not find the chm compiler. Please set the correct path in the chm settings.
Die Dokumentation konnte nicht erstellt werden.
SharpDox.Build.SDBuildException: Es gab ein Problem mit den Vorraussetzungen eines oder mehrere Exportern. Siehe Bauausgabe für weitere Informationen.
bei SharpDox.Build.Context.Step.ExtendedCheckConfigStep.RunStep(SDProject sdProject)
das BAFA (Bundesamt für Wirtschaft und Ausfuhrkontrolle) sollte Dir den genauen Anforderungskatalog geben können. Da jede Ausfuhr dieser Güter (Klasse D) genehmigt werden muss, werden die Beamten auch genaue Anforderungsprofile haben.
Falls eine Art "Güte-Lizenz" benötigt wird, würde mich interessieren, welcher Art diese Lizenz / Gütestempel sein muss und wer ihn vergibt.
Es ware nett, wenn Du hierzu noch was posten könntest, nachdem Du das in Erfahrung gebracht hast.
bis wann brauchst Du den so ein Werkzeug? Ich arbeite im Moment an exakt so einem Werkzeug, die Fertigstellung wird sich aber sicher noch 6 Monate hinziehen.