2 Stimmen

Automatischer Ausdruck von Aufträgen

Ich möchte eine VB.Net-Anwendung erstellen, die eine Datenbank überprüft und dann die neuesten Aufträge ausdruckt, die Datenbank ist mysql und ich brauche es periodisch zu überprüfen und nur neue Aufträge, d.h. nicht drucken diejenigen, die es bereits ausgedruckt hat, zu drucken.

Für jeden Ratschlag wäre ich dankbar.

Kyle

5voto

Michael Eakins Punkte 4139

Ich schlage vor, ein Druckkennzeichen in die Datenbank einzufügen, d. h. ein Druckfeld in die Datenbank einzufügen, in dem standardmäßig eine 0 gespeichert wird, die bedeutet, dass der Eintrag nicht gedruckt wurde, und eine 1, die bedeutet, dass der Eintrag gedruckt wurde.

Ich würde dann eine Anwendung erstellen, die die Datenbanktabelle auf alle Einträge überprüft, bei denen flag = 0 ist.

Diese Einträge sind diejenigen, die gedruckt werden müssen.

Drucken Sie jeden Eintrag aus und setzen Sie sein Kennzeichen in der Datenbank auf 1. Durch das Setzen des Flags auf 1 wird sichergestellt, dass die Einträge bei der nächsten Abfrage der Datenbank ignoriert werden.

0 Stimmen

Das ist die Lösung, die wir gefunden haben, danke. Dieser Thread ist jetzt 6 Monate alt. Trotzdem danke ich Ihnen.

2voto

duffymo Punkte 298898

Ich würde empfehlen, das Problem in Teile zu zerlegen:

  1. "Überprüft eine Datenbank" - Sie müssen eine Verbindung zu einer relationalen Datenbank herstellen. Sie müssen entweder eine ADO.NET- oder eine ODBC-Verbindung zu MySQL einrichten.
  2. Sie sagen nicht, ob die Datenbank auf demselben Rechner wie die Anwendung läuft. Wenn nicht, müssen Sie in der Lage sein, sich über das Netzwerk mit ihr zu verbinden.
  3. Vergewissern Sie sich, dass Sie in MySQL die entsprechenden Berechtigungen ERTEILEN. Benutzen Sie nicht einfach die Admin-Zugangsdaten, um sich anzumelden. Richten Sie eine separate ID für Ihre Anwendung ein.
  4. "druckt dann aus" - Ihre Anwendung muss einen Weg finden, um Informationen über einen Drucker zu erhalten. Sie sagen nicht, ob der Drucker direkt an den Server angeschlossen ist, auf dem der Auftrag ausgeführt wird, oder ob es sich um einen Netzwerkdrucker handelt. Vergewissern Sie sich, dass Ihre Anwendung den Netzwerkdrucker erkennen kann, wenn letzteres der Fall ist.
  5. "die letzten Bestellungen, die Datenbank ist mysql" - versuchen Sie, eine separate Abfrage zu schreiben, um nur die letzten Bestellungen zu erhalten.
  6. Gibt es in Ihrem Schema eine Möglichkeit, zu markieren, welche Aufträge wann gedruckt wurden? Ihre Anwendung sollte einen Datensatz EINFÜGEN, in dem der Zeitstempel vermerkt ist, wann jede Bestellung gedruckt wurde. Sie können diese Tabelle JOINen, um herauszufinden, welches die neuesten, noch nicht gedruckten Bestellungen sind.
  7. "Ihre Anwendung muss ein Cron-Job sein, der nach einem von Ihnen festgelegten Zeitplan ausgeführt wird. Jeden Wochentag, stündlich? Einmal pro Nacht? Sie entscheiden, wann Sie den Cron-Job einrichten.

1voto

Luke Punkte 6025

Sie könnten versuchen, mit LINQ und dbLINQ für die Verbindung mit MySQL. Wenn Sie .NET Framework 3.5 verwenden, können Sie auch die Vorteile von LINQ nutzen, um die Entwicklungszeit zu verkürzen.

Wenn Sie WPF für die Client-Anwendung verwenden, könnten Sie ein FlowDocument verwenden, um die Bestellungsdetails zu gestalten und dann den Druck der Bestellungen zu handhaben. Sobald sie gedruckt sind, können Sie die Datenbank aktualisieren oder Details lokal speichern, um die Bestellung als gedruckt zu markieren. Dies hängt von Ihrem Datenbankschema ab.

0 Stimmen

Ich danke Ihnen für Ihre Antworten. 1. Es ist eine Winforms-Anwendung. 2. Der Drucker wird an denselben Rechner angeschlossen, auf dem die Anwendung läuft. 3. Das Datenbankschema ist innodb. 4. die Datenbank ist remote 5. Ich habe noch nie LINQ verwendet. Eine letzte Frage: Wie würde ich einen Cron in VB.net ausführen? Kyle

0 Stimmen

Sie könnten etwas wie die geplanten Aufgaben in Windows XP verwenden ( support.microsoft.com/kb/308569 ) oder den Taskplaner in Windows Vista / 7. Es sollte einen API-Zugang zu diesen Windows-Tools geben.

0 Stimmen

Danke Luke, das werde ich mir ansehen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X