Verwendung des Suchen-Dialogs
Allgemeine Beschreibung
Sollen in easyWinArt in einer Menüfunktion nur bestimmte Datensätze angezeigt werden, so kann man hierfür die Schnellsuche oder die erweiterte Suche verwenden, die in der Aktions-Toolbar aufgerufen werden können. Weiterhin wird einer dieser Suchen-Dialoge geöffnet, wenn man einen bestimmten Datensatz auswählen muss, sei es beim direkten Öffnen einer untergeordneten Menüfunktion oder z.B. beim Auswählen und Zuweisen der Adresse für ein Angebot. Natürlich kann dieser Dialog auch im Rahmen des SDK verwendet werden, um einen bestimmten Datensatz oder bestimmte Datensätze zu erhalten. Dabei kann mit oder ohne Auswahl-Dialog gearbeitet werden. Im zweiten Fall erscheint nach dem Suchen-Dialog der Auswahl-Dialog, in dem dann der gewünschte Datensatz ausgewählt werden muss. Als Ergebnis erhält man dann seine GUID usw. Alternativ kann auch ohne Auswahl-Dialog gearbeitet werden, dann erhält man den SQL-Befehl des Suchen-Fensters und kann diesen selbst weiterverwenden, um z.B. ein eigenes Auswahl-Fenster anzuzeigen, in dem beispielsweise ein DataGridView die gefundenen Datensätze anzeigt und gewisse Spalten änderbar sind, mehr als nur eine Zeile ausgewählt werden kann usw. Im Folgenden werden beide Möglichkeiten mit je einem Beispiel erläutert.
Suchen-Dialog ohne Auswahl-Fenster
Der Suchen-Dialog ohne Auswahl-Fenster wird über die Funktion 'SuchenBasisDialog.CreateAndShow' aufgerufen. Über ihre Parameter wird festgelegt, welche Datensätze durchsucht werden. Im folgenden Beispiel sollen die Adressen durchsucht werden, die Suche wird aus den Vorgangs-Belegen heraus geöffnet. Entsprechend wird beim zweiten Parameter das Kürzel der Menüfunktion 'Adressen' und als dritter Parameter die gerade geöffnete Vorgänge-Form übergeben. Im Parameter des vierten Parameters ist eine Prozedur zu übergeben, welche dann den SQL-Befehl des Suchen-Dialogs weiterverarbeitet, z.B. indem eine DataGridView mit dem Ergebnis angezeigt wird. Diese Prozedur, im Beispiel 'BehandlungAuswahlDialog' genannt, muss zwei Parameter haben. Im ersten erhält Sie den SQL-Befehl des Suchen-Dialogs, im zweiten den Namen der Primär-Tabelle der Form, aus der die Suche geöffnet wird, in diesem Fall also 'Vorgänge'. Der im Beispiel letzte Parameter 'SqlWhereNichtAusMenuefunktion' (hier auf 'True' gesetzt) ist wichtig, damit die Suche nicht schon durch den SQL-Befehl ('MenueFunktionenWerteSTR.SqlWhere') der Menüfunktion, aus der der Suchen-Dialog aufgerufen wird, beeinflusst wird. Wenn z.B. die Menüfunktion 'Offene Angebote' geöffnet wird, würde Suche bei 'False' ggf. auf offene Angebote beschränkt werden.
VB.NET SDK-Programmcode
#Region " TriggerFormFramework_NachLoad-Ereignis "
Private Sub TriggerFormFramework_NachLoad(ByVal sender As Object, ByVal e As FormFrameworkEventArgs) Handles Me.NachLoad
'>>> Bei Menüfunktion A D R E S S E
If TypeOf sender Is AdressenFRM Then
Dim adFRM As AdressenFRM
adFRM = CType(sender, AdressenFRM)
'>>> Suchen-Fenster öffnen
Dim dr As DialogResult
dr = SuchenBasisDialog.CreateAndShow(SuchFormStyle.ErweiterteSuche, _
"VOR", _
adFRM, _
New SuchenForm.BehandlungSuchenDelegate(AddressOf GesuchteBelegeVerarbeiten), _
"Überschrift xyz", , , True)
End If
End Sub
#End Region
#Region " Private Sub: GesuchteBelegeVerarbeiten (aber nur bestimmte Angebote) "
Private Sub GesuchteBelegeVerarbeiten(SqlBefehl As String, Tabelle As String)
'>>> Einschränken des SQL-Befehls
SqlBefehl = Fkt.ErweiternWhereKlausel(SqlBefehl, TBL.Vorgang.TBL, TBL.Vorgang.HistorieBIT, "0")
SqlBefehl = Fkt.ErweiternWhereKlausel(SqlBefehl, TBL.Vorgang.TBL, TBL.Vorgang.BelegTypGUID, BT.VkAngebot)
SqlBefehl = Fkt.ErweiternWhereKlausel(SqlBefehl, TBL.Vorgang.TBL & "." & TBL.Vorgang.BelegDatumDT & " > '" & Now().AddMonths(-15) & "'")
'>>> Tabelle mit den Angeboten
Dim tmpDBZ As SQLServerZugriff = Datenbank.DatenDB
Dim angebotsTBL As DataTable = tmpDBZ.BildeDataTableSQL(SqlBefehl, Tabelle)
End Sub
#End Region
Suchen-Dialog mit Auswahl-Fenster
Der Suchen-Dialog mit Auswahl-Fenster kann über die Funktion 'Run' der Klasse 'FcAuswahlDialogMenuefunktion' aufgerufen werden. Die Klasse muss instanziert werden mit gewissen Parametern, welche die Suche klassifizieren. Im unteren Beispiel befindet sich ein eigener Button auf einer beliebigen Menüfunktion und es wird auf Knopfdruck hin nach einer Adresse gesucht unter Verwendung der erweiterte Suche. Durch den Parameter 'WhereAddOnÜbergabe' wird per SQL eingestellt, dass nur Kunden durchsucht werden können. Als Ergebnis erhält man unter anderem die Guid des aus den Suchergebnissen im Auswahl-Fenster ausgewählten Datensatzes vom Klassen-Objekt.
VB.NET SDK-Programmcode
#Region " ButtonAuswahl_Click-Ereignis "
Private Sub ButtonAuswahl_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonAuswahl.Click
Dim vorFRM As VorgangFRM
vorFRM = CType(CType(sender, EwaButton).FindForm, VorgangFRM)
Dim ausgewählteAdresse As Guid
Dim auswahl As New FcAuswahlDialogMenuefunktion("Meine Auswahl", "AD", vorFRM, SuchFormStyle.ErweiterteSuche, True, TBL.Adressen.TBL & "." & TBL.Adressen.KundeBIT & " = 1")
auswahl.Run()
ausgewählteAdresse = C.ToGuidX(auswahl.IdentObjekt)
End Sub
#End Region