2016-08-09 10 views
0

Ich habe eine Datenbanktabelle mit nur einer Spalte, invoiceNumber. Dies wird in einem Crystal Report angezeigt, um die eindeutige Nummer des Berichts anzuzeigen (da es sich um eine Rechnung handelt).Inkrementieren eines Datenbankwerts nach dem Drucken eines Berichts

Im Moment wird für alle Berichte bei der Anzeige in vb.net die Nummer 1 angezeigt, da der Wert in der Datenbankspalte angegeben ist.

Was ich wissen möchte, ist, wie kann ich die Nummer nach und erst nach dem Drucken des Berichts erhöhen (wenn sie den Druckauftrag abbrechen, z. B. nicht erhöht).

Ich weiß, das ist in der Regel einfach, es würde SQL nach dem Druckcode auf der Schaltfläche drücken, jedoch in dem Projekt verwende ich eine CrystalReportViewer, so dass Drucken nicht auf einen Klick der Schaltfläche erfolgt, und ich don ' t Denken Sie, dass der Druck in einer CrystalReportViewer separat programmiert werden kann?

Also wie und wo kodiere ich den Wert in der Datenbanktabelle um 1 zu erhöhen, nachdem der Bericht gedruckt hat? Ist das überhaupt möglich?

+0

Sie müssen Druckerstaus und Kaffeespuren in Betracht ziehen. Es könnte besser sein, eine Überschreibung zu programmieren. Dann können Sie den Berichtsstart erhöhen ... Es sei denn, Sie erwarten viele Vorkommnisse, bei denen ein Bericht angezeigt und nicht gedruckt wird. In diesem Fall möchten Sie möglicherweise eine Bestätigungsschaltfläche drücken, nachdem der Bericht angezeigt/geschlossen wurde. –

+0

@JoeC Ich überlege, es bei der Einführung des Berichts in Ehrlichkeit zu erhöhen. Ich könnte dann ein Meldungsfeld haben, in dem ich gefragt werde, ob sie ohne Drucken gehen wollen. Aber wie würde ich das funktionieren lassen? Ich müsste irgendwie herausfinden, ob es gedruckt wurde oder nicht ... Wie sollte das gemacht werden? – David

+0

Verwenden Sie den Windows Forms Report Viewer? https://msdn.microsoft.com/en-us/library/ms227057(v=vs.80).aspx –

Antwort

0

Sie können eine Fahne benutzen, die auf Bestätigung gesetzt wird nach dem Druck erfolgreich ist.

In einer anderen Funktion können Sie prüfen, ob ein Flag gesetzt ist und das Flag entsprechend erhöhen.

+0

Wie meinst du das? Ich bin nicht vertraut mit Flags – David

+0

eine beliebige boolesche Variable, um einen Wert als 1 für gedruckt und 0 für nicht gedruckt –

+0

Und das würde erklärt werden und wo? – David

1

Ich würde auch vorschlagen, eine Bestätigungsschaltfläche für den Benutzer zu verwenden, um zu bestätigen, dass sie OK gedruckt haben. Kein anderer Weg, um sicher zu sein, es kam aus dem Drucker ohne Staus, Flecken, gefaltetes Papier etc etc

Pseudocode

EventHandlerWhichTriggersReportCreation 

    Call code to initiate and load CrystalReportViewer 
    Display dialog/prompt asking user if all printed OK 
    If all OK, increment counter 
+0

Das Problem dabei ist, dass der Code in die Subroutine gehen müsste, in der der Druck verarbeitet wird, aber es gibt keinen Code dafür, da alles mit einem 'CrystalReportViewer' gemacht wird. – David

+0

Gibt es wörtlich Kein Ereignis, das ausgelöst wird oder Code, um den Bericht oder eine Form_Load-Funktion oder irgendetwas auszuführen ?. Ich habe oben einen Pseudocode hinzugefügt. –

Verwandte Themen