Hallo,
ich stand mal vor dem selben Problem. Letztendlich habe ich mir die Daten auch über einen COM-Port geholt. Ich hatte verschieden Scanner von Honeywell, die konnte man in einen "COM-Port-Simulationsmodus" versetzen. Dies geschieht entweder per Software oder speziellen Konfigurationsbarcodes, die man abscannt.
Dann muss man nur noch abschnorcheln und auf die "Trennzeichen" warten und schon hat man seinen Code.
Sobald der Scanner im COM-Port-Modus läuft, kann man ihn natürlich nicht mehr als Tastaturersatz nutzen, sprich ein Einfügen in Excel wäre beispielsweise nicht mehr möglich.
Gruß
Björn
Hallo witte,
dein Tipp hat mich weiter gebracht. Auf die Idee, "anders" herum zu denken, bin ich gar nicht gekommen.
Eine Sache fehlt noch, dennoch bin ich meinem Ziel schon etwas näher gekommen:
var items = context.Revision.GroupBy(rev => rev.TextId).Select(group => group.OrderByDescending(item => item.SaveTime).FirstOrDefault()).Include(rev => rev.Text.Sammlung).ToList();
Und schon habe ich nur die aktuellste Revision am Wickel.
Erstmal vielen Dank dafür, nun scheitere ich allerdings die Sammlung anhand einer Expression zu filtern.
Da ich da jetzt nicht weiter komme, habe ich es nun erstmal so gelöst:
// laden der aktuellsten Revisionen, doch für alle Sammlungen
context.Revision.GroupBy(rev => rev.TextId).Select(group => group.OrderByDescending(item => item.SaveTime).FirstOrDefault()).Load();
var sammlung = context.Sammlungen.Where(myExpression).Include(s => s.Text).FirstOrDefault();
Gleichzeitig habe ich das "virtual" vom Property Revision entfernt (siehe hier).
So habe ich zwar immer noch zwei Abfragen gegen die Datenbank und bei der ersten Abfrage kommen noch zu viele Daten, da ich dort (noch) nicht über die Sammlung filter, allerdings ist die Datenmenge, die ich zurück bekomme schon deutlich geringer.
Ich werde mal bei Gelegenheit über eine Anpassung an meinen Klassen Gedanken machen, die eine einfachere Selektierung ermöglichen. Zum Beispiel könnte man Redundanzen in Kauf nehmen und die Sammlungs Id bei der Revision speichern. Damit könnte ich die Datenmenge noch mal verringern.
Gruß
Björn
verwendetes Datenbanksystem: ef mit sql compact
Hallo,
ich hatte bis jetzt für kleinere Sachen immer EF genutzt und ihn einfach mal laden lassen.
Nun wollte ich da ein paar Sachen optimieren, komme aber nicht weiter.
Folgende DB-Struktur (nicht in echt, gibt aber den Sinn wieder)
Sammlung 1..n -> Text 1..n -> Revision
Nun möchte ich genau eine Sammlung mit allen Texten und der aktuellsten Revision (da es recht viele sein können) laden.
var item = context.Where(item => item.Id = id).Include(s => s.Texte.Select(t => t.Revisionen));
Das funktioniert so weit, es werden aber alle Revisionen mitgeladen. An der Stelle werden sie aber nicht benötigt.
Meine Versuche bisher sahen in etwa so aus:
var item = context.Where(item => item.Id = id).Include(s => s.Texte.Select(t => t.Revisionen.OrderByDescending(rev => rev.SaveTime).First()));
Dies endete aber meist in der Fehlermeldung> Fehlermeldung:
The Include path expression must refer to a navigation property defined on the type. Use dotted paths for reference navigation properties and the Select operator for collection navigation properties. Parametername: path
Hat vielleicht jemand eine Idee, wie ich die "dritte" Ebene gefiltert und sortiert bekomme? Ich kann die richtige Revision auch noch später laden oder meine Datenstruktur anpassen. Ich frage mich einfach nur, ob es geht und wie.
Vielen Dank
Ich schließe eine Verwendung der WebBrowser-Klasse bewusst aus, da die Verbindung durch den Prozess des Internet Explorers(iexplore.exe) hergestellt werden soll und nicht durch meine Anwendung.
Warum denn?
Ich empfehle sonst immer gerne das HtmlAgilityPack
Du solltest dich ein wenig in XSLT einlesen..
z.B. hier:
http://www.w3schools.com/xsl/
Ich hab mir den Reflector jetzt mal angeschaut und das erste, was mir einfällt: Cool - 😄
Vielleicht kaufe ich mir das sogar, muss ich mal schauen.
JetBrains dotPeak als kostenlose Alternative zum Reflector
Das mit dem Buffer ist korrekt. Nur liegt hinter der URL kein Bild! Da wird eine HTML-Seite sein, die auf ein Bild verweist / anzeigt / verlinkt. Mehr können wir dir nicht helfen.
Wie wird die Datei denn überwacht?
Wenn du die Datei "öffnest" kann sie nicht verschoben / umbenannt werden.
Und was sagt uns die Fehlermeldung? Das aus deinem Buffer bzw. MemoryStream kein Bild erstellt werden kann bzw. keins enthält.
ich denke auch nicht, dass es direkt unter
string sourceURL = "http://192.168.8.48/";
kein Bild gibt sondern eher eine Html Seite
@Björn
Was verstehst du nicht? Ich hab mir Punkt 5 durchgelesen bevor ich gepostet hatte 😃
- Problem genau beschreiben - inkl. genauer Fehlermeldung - und konkrete Fragen stellen
Ich sehe keine Fehlermeldung und raten wird hier auch keiner..