• Webseitenerstellung und -hosting
  • .NET Anwendungsentwicklung
  • softwaregesteuerte Prozessoptimierung
  • .NET

    Programmierung

  • WebseitenErstellung

    undHosting

  • softwaregesteuerte

    Prozessoptimierung

  • Konzeption

    und Beratung

solutionS Daily Grind - Blog
%PM, %22. %758 %2013 %17:%Jan

SendAndReceiveReplyFactory

Artikel bewerten
(0 Stimmen)
Neues aus dem Kuriositätenkabinett: Aufruf eines Webservices aus der MS Workflow Foundation mit Hilfe der Send and Receive Aktivitäten. Der WebService verlangt einen Eingabeparameter und liefert auch ein Ergebnis. Der Rückgabeparameter soll per E-Mail verschickt werden. Ich erspare mir ein genaues Turorial für dieses Szenario zu erstellen im Internet findet man das sicher vereinzelt. Hier nur der Knackpunkt: Der Rückgabeparameter wird einer lokalen Variable zugeordnet, diese ist aber immer NOTHING. Der Grund: Der deklarierte Parametername MUSS so heissen wie die Funktion inklusive des String "Result" am Ende. In meinem Beispiel: test: Funktion des Webservices strOutString: lokale Variable testResult: Ergebnis der Funktion "test"
%AM, %13. %445 %2012 %09:%Dez

WPF Databinding Combobox inside Datagrid

Artikel bewerten
(0 Stimmen)
Will man innerhalb eines Datagrid eine Combobox bestücken, die einer anderen Datenquelle besitzt als das Datagrid an sich muss man etwas tüfteln. Ich hab zumindest ein wenig (ne stunde ;-) um gebraucht eine optimale Lösung (und einfache!) zu finden. Im Internet (Google Suche) findet  man zwar Lösungsansätze, jedoch meiner Meinung total überladen, teilweise sogar falsch! tripodS proudly presenting the worldwide first simple unique solution: der Trick liegt darin eine DataGridComboBoxColumn zu benutzen, die Datenquelle (ObservableCollection) in eine Liste umzuwandeln und im XAML die Datenbindung des Parent Control unter Textdatabinding festzulegen. im XAML:




und im Code:

Dim ben = (From b In db.blalblabla where b.blabla = blablabla).ToList
cboBenutzer.ItemsSource = ben

	  
%AM, %06. %521 %2012 %11:%Dez

WPF Datenbindung debuggen

Artikel bewerten
(0 Stimmen)
Leider gibt es im XAML keine Möglichkeit die Datenbindung zur Designzeit zu kontrollieren, auch zur Laufzeit gibt es keine luxuriöse Möglichkeit. Eine Exception wird ebenfalls nicht ausgelöst, meist bleibt der Wert einfach leer. Natürlich gibt es die Möglichkeit sich die Informationen im Ausgabefenster anzuzeigen. Extras-Optionen-Debugging-Ausgabefenster-Datenbinding Eleganter wäre aber doch Werte debuggen zu können. Das ist möglich, allerdings auf den ersten Blick umständlich, aber wenn man dies generell einbaut durchaus praktikabel. Wer schonmal Bilder im Datagrid angezeigt hat ist die Benutzung eines Convertes nichts neues: Als erstes legt mal eine öffentliche Klasse an, die nichts weiter macht als den Übergebenen Wert zurückzuliefern:
 _
Public Class MyValueConverter
Implements IValueConverter

Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.Convert
Return value
End Function

Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack
Return value
End Function
End Class

danach referenziert man diese Klasse als Resource im XAML







und fügt den Converter in der Datenbindung hinzu:


{Binding Path=Rechnungsbetrag,Converter={StaticResource ValueConverterLocal}}


Jetzt kann man in der Convert function der ConverterKlasse seinen Breakpoint setzen und die Werte überprüfen ;-)	  
%PM, %23. %690 %2012 %15:%Nov

WPF Anwendungspfad ermitteln

Artikel bewerten
(0 Stimmen)
Eine globale Settings.xml datei (wie früher) für eine WPF Anwendung global bereitstellen. In dieser wird der Connectionstring zur Datenbank für alle beteiligten Assemblies bereitgestellt. Die Ablage in den App/Web.Config kommt aus diversen Gründen nicht in Frage da die Konfig...
- zur Laufzeit nicht verändert werden kann (Anwendungseinstellungen)
- beim compilieren überschrieben wird
- bei WPF die Config lokal zwischengespeichert wird
also die Datei einmalig erstellen und in der Assembly einfach den Anwedungspfad auslesen.
so etwa?
AppDomain.CurrentDomain.BaseDirectory System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) System.Reflection.Assembly.GetExecutingAssembly().Location Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) System.Reflection.Assembly.GetExecutingAssembly().CodeBase System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess(). MainModule.FileName
leider kriegt man hier nur die lokalen temporären Pfade der Assemblies!
Mit Updatelocation kriegt man den Urpsrungspfad:
System.Deployment.Application.ApplicationDeployment.
CurrentDeployment.UpdateLocation.ToString
Leider scheint Micrsosoft auch Auszubildende auf die Menschheit loszulassen, anders kann ich mir den Rückgabestring nicht zu erklären:
http:\wpfserver\apppath
also häng ich noch folgendes ran:
.Replace("\", "/").Replace("http:/", "http://")
und damit wird dann per linq to xml der Eintrag gelesen
Dim uriXML As Uri = New Uri(strdir & "/Settings.xml")
 Dim konf As XDocument = XDocument.Load(uriXML.ToString)
Connectionsstring = (From ef In konf.Descendants("EF_Connectionstring")).FirstOrDefault.Value 
:
%AM, %02. %517 %2012 %11:%Okt

Simple Passwort Generator

Artikel bewerten
(0 Stimmen)
einfach, funktionell, selbsterklärend

Private Function CreateRandomPassword(ByVal intPasswordLength As Integer) As String
Try
Dim strErlaubtChar As String = "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789!,."
Dim chars As Char() = New Char(intPasswordLength - 1) {}
Dim rd As New Random()

For i As Integer = 0 To intPasswordLength - 1
chars(i) = strErlaubtChar(rd.Next(0, strErlaubtChar.Length))
Next

Return New String(chars)
Catch ex As Exception
Errorlog(ex)
End Try
End Function

	  
%AM, %12. %484 %2012 %10:%Jul

Entity Framework Fehler

Artikel bewerten
(0 Stimmen)
Nachtrag: hier die Fehlermeldung auf Deutsch: Der Wert einer Eigenschaft, die zum Schlüssel eines Objekts gehört, stimmt nicht mit dem entsprechenden Wert der Eigenschaft überein, die im ObjectContext gespeichert ist. The value of a property that is part of an object's key does not match the corresponding property value stored in the ObjectContext. Kein wirklich aussagekräftiger Fehler wenn man die Lösung kennt: EntityFramework verlangt  rigoros PrimaryKeys in jeder Tabelle. (den Fehler könnte man aber auch anders formulieren, zumindest so dass es ein dummer Mensch wie ich versteht). Ich für meinen Teil hab hier jetzt 30 Tabellen in denen ich nicht wirklich einen Primärschlüssel brauche, da es sich um Referenztabellen handelt. Nun gut, ich löse das wie bereits 2 Beiträge weiter unten über einen uniquidentifier der den Standardwert newid() besitzt und trage diese ID als Primärschlüssel in meine Tabellen ein (Fleissarbeit). Aber danach scheint es sauber zu funktionieren. Nachtrag: Ein Scheiss funktioniert, zumindest nicht in Sichten!!! Hierzu gibt es ein Microsoft Ticket leider gibt es keine Fehlerbehebung, lediglich einen Workaround. Das Problem ist, dass EntityFramework alle Felder einer Sicht als EntityKey festlegt, was absoluter Quatsch ist! Dies muss man manuell beheben. Selten so einen Dreck von MS gesehen und glaube nicht, dass das gewollt ist.   Nachtrag: abgesehen davon, dass die Sache an sich ein absolutes Unding ist gibt es eine vermutlich bessere Lösung, ohne das autom. generierte EntityModel (evtl jedesmal) anzupassen. Im View den Feldern die Funktion NULLIF voranstellen, damit anstelle Leerstrings ein NULL übergeben wird, was anscheinend dieses Mysterium verursacht. (Vorsicht ISNULL verursacht natürlich genau das Gegenteil!) http://stackoverflow.com/questions/1013333/entity-framework-and-sql-server-view-question
%PM, %10. %619 %2012 %13:%Jul

SSIS Prozessexitcode -532459699

Artikel bewerten
(0 Stimmen)

Ich glaube das wird ein Microsoft-Bug-Blog. Folgendes Szenario: Microsoft SQL Server Integration Services 2005 Paketausführung als SQL Server Agent Job, Das Paket wurde im SSIS Paketspeicher abgelegt. Im Design-Mode läuft alles prima, als Paket bekomme ich jedoch folgende Meldung, obwohl Success: Returncode DTSER_SUCCESS Prozessexitcode -532459699 Rückgabewert war unbekannt Fehler bei Schritt 1 und wieder hab ich DAS GANZE (!) Internet danach abgesucht...und nichts gefunden, deshalb wird mir die Menschheit immer zu Dank verüflichtet sein wenn ich diese Lösung poste: Folgendes brachte zumindest bei mir den erhofften Erfolg: Bei der Paketcompilierung "Alle Daten mit einem Kennwort verschlüsseln ". Nicht vergessen dieses Kennwort ebenfalls unter den Eigenschaften des Pakets festzulegen, sowie im SQL Server Agent wenn man den Schritt hinzufügt. wie immer: Vodooooooooooooo!!!!

Seite 4 von 8