+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

LL_ERR_BAD_JOBHANDLE


(Guest) #1

Hallo,

ich Teste gerade die Trail-Version von List & Label 16, und stosse auf folgendes Problem:

Per Button rufe ich die Berichtvorschau auf. Wenn ich nun die Berichtvorschau wieder schliesse und erneut auf den Button klicke, erhalte ich folgende Fehlermeldung:

LL_ERR_BAD_JOBHANDLE. Exception wurde nicht behandelt.

Hier mal der wohl relevante Code:

Public Class FRM_...

    Dim LL As New ListLabel()

'...

Private Sub btn_Footer_Print_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Footer_Print.Click
        Dim _sqlStr As New String(lbl_Sql.Text)
        Dim dataSrc As Object = fct_LL_CreateDataset_DSKB(_sqlStr)

        'Ereignishandler für die Zuweisung von zusätzlichen Variablen hinzufügen
        AddHandler LL.AutoDefineNewPage, AddressOf AutoDefineNewPage

        LL.DataSource = New ObjectDataProvider(dataSrc)   '<-- Hier kommt ERST BEIM ZWEITEN AUFRUF die Fehlermeldung
        LL.AutoProjectType = LlProject.List
        ' Designer aufrufen
        'LL.Design()
        ' Drucken 
        LL.Print(LlProject.List, "ReportTemplates\DSKB.lst", False, LlPrintMode.Preview)

        LL.Dispose()
End Sub

'...

Sub AutoDefineNewPage(ByVal sender As Object, ByVal e As AutoDefineNewPageEventArgs)
        ' Zusätzliche Mandanten-Variablen anmelden
        LL.Variables.Add(....) 
        LL.Variables.Add(....)
        LL.Variables.Add(....)
        LL.Variables.Add(....)
End Sub

Public Function fct_LL_CreateDataset_DSKB(ByVal _sql As String) As DataSet

        Dim _conDB As SQLiteConnection = New SQLiteConnection(My.Settings._constr)
        Dim _ds As DataSet = New DataSet()
        Dim _da As SQLiteDataAdapter = New SQLiteDataAdapter(_sql, _conDB)

        _da.Fill(_ds, "DSKB")

        Return (_ds)

End Function

End Class

Ich arbeite mit Visual Studio 2010 Pro. Projekteinstellungen: VB .Net Framework 3.5

Wie gesagt beim ERSTEN Aufruf funktioniert alles einwandfrei!!

Ich hoffe Ihr könnt hier Licht ins Dunkel bringen.

Danke schonmal vorab !!

Gruss
Marc

PS: Da ich noch nicht soooo lange Programmiere, habe ich im Tutorial oder der KB nichts gefunden, was mich weitergebracht hätte. :frowning:


(Guest) #2

Das ist relativ einfach: Es wird für die Klasse ja eine List & Label Instanz (Dim LL As New ListLabel()) erstellt. Sobald nun aber auf den Button geklickt wird, wird .Print() aufgerufen und dann gleich im Anschluß .Dispose(). Und das .Dispose() bewirkt, dass die List & Label Instanz (LL) entsprechend freigegeben wird. Daher ist dann auch der zweite Aufruf dieser Funktion “invalid”, da mit einem bereits freigegebenen Objekt versucht wird zu arbeiten. Wenn List & Label dynamisch verwendet werden soll, dann muss man darauf achten, dass die Instanzierung sowie dessen Freigabe entsprechend “synchron” stattfindet.


(Guest) #3

Hallo Oliver,

vielen Dank für Deine schnelle Antwort!!

Das leuchtet ein. :slight_smile:

Ich hab den Wald vor lauter Bäumen nicht gesehen!

Kaum macht man´s richtig… schon funktioniert´s.

DANKE!!

Gruss
Marc