Date: prev next · Thread: first prev next last
2012 Archives by date, by thread · List index


Hallo!

Da kenne ich mich nicht aus, irgendwer anders??

PS: Ihn ins CC nehmen ;)

Am 14.07.2012 18:05, schrieb Webbygale:
Bug-Report


Problem: Datenbank: Macro-Loop bricht bei Datensatz 41 ab

Schritte, wie das Problem reproduziert werden kann:

1. Tabellen erstellen und mit einander in Beziehung setzen

Table_1
Table_1.Table_1_ID as Integer (Primärschlüssel)
Table_1.YesNo as Ja/Nein [Boolean]

Table_MN
Table_MN.Table_1_ID as Integer (Primärschlüssel)
Table_MN.Table_2_ID as Integer (Primärschlüssel)
(mit mehr als 41 Datensätzen)

Table_2
Table_2.Table_2_ID as Integer (Primärschlüssel)
Table_2.Color as Text

2. Abfrage "Query_MN" erstellen
SQL
SELECT "Table_1"."Table_1_ID", "Table_1"."YesNo", "Table_MN"."Table_1_ID" AS "Table_1_ID_MN", "Table_MN"."Table_2_ID" AS "Table_2_ID_MN", "Table_2"."Table_2_ID", "Table_2"."Color" FROM "Table_MN", "Table_1", "Table_2" WHERE "Table_MN"."Table_1_ID" = "Table_1"."Table_1_ID" AND "Table_MN"."Table_2_ID" = "Table_2"."Table_2_ID"

3. Formular erstellen
Formular mit Namen: "Form"
mit Datenquelle: "Query_MN"
Datenfeld: Table_1.Table_1_ID
Datenfeld: Table_1.YesNo
Start-Button-des-Macro

Macro:
############Beginn Macro

REM  *****  BASIC  *****

' ====== Save ======
Function Save ()
    Dim oDoc as Object
    Dim dispatcher as Object

    oDoc = ThisComponent.Drawpage.Forms
    oDoc   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    dispatcher.executeDispatch(oDoc, ".uno:RecSave", "", 0, Array())

End Function




' ====== All Table_1.YesNo to No ======
Sub YesNo_Checkbox_No

   Dim oDoc as Object
   Dim oForm as Object
   Dim oCheckbox as Object
   oDoc = ThisComponent.Drawpage.Forms
   oForm = oDoc.getByName("Form")
   oCheckbox = oForm.getByName("YesNo")


   oForm.First                         ' go to first record

' -- Begin Loop --
   Do

     if     oCheckbox.state = 1 then   ' if Checkbox = no
            oCheckbox.state = 0        ' Checkbox = yes
            Save ()                    ' save record
     elseif oCheckbox.state = 2 then   ' if Checkbox = nothing
            oCheckbox.state = 0        ' Checkbox = yes
            Save ()                    ' save record
     end if

     oForm.Next()                      ' next record

   Loop Until oForm.isLast
' -- End Loop --

   oForm.Reload                          ' oForm.Reload
   MsgBox "complete"                     ' MsgBox, to know the end

End Sub




' ====== All Table_1.YesNo to Yes ======
Sub YesNo_Checkbox_Yes

   Dim oDoc as Object
   Dim oForm as Object
   Dim oCheckbox as Object
   oDoc = ThisComponent.Drawpage.Forms
   oForm = oDoc.getByName("Form")
   oCheckbox = oForm.getByName("YesNo")


   oForm.First                         ' go to first record

' -- Begin Loop --
   Do

     if     oCheckbox.state = 0 then   ' if Checkbox = no
            oCheckbox.state = 1        ' Checkbox = yes
            Save ()                    ' save record
     elseif oCheckbox.state = 2 then   ' if Checkbox = nothing
            oCheckbox.state = 1        ' Checkbox = yes
            Save ()                    ' save record
     end if

     oForm.Next()                      ' next record

   Loop Until oForm.isLast
' -- End Loop --

   oForm.Reload                          ' oForm.Reload
   MsgBox "complete"                     ' MsgBox, to know the end

End Sub


############End Macro

4. Macro aufrufen: "Sub YesNo_Checkbox_Yes", bzw. "Sub YesNo_Checkbox_No"


Erwartetes Verhalten: Wie in "Frm_Query_1" Macro ändert ALLE Datensätze der Form (mit Ausnahme des letzten Datensatzes, was an der Art der Schleife liegt). Dies funktioniert mit diesem Macro auch sehr gut, wenn man als Datensatzgrundlage des Formulars die Abfrage "Query_1" oder die "Tablle_1" direkt nimmt.

Beobachtetes Verhalten: "Frm_Query_MN" mit Datengrundlage "Query_MN" Macro bricht bei Datensatz 41 ab, LibreOffice danach sehr instabil. Häufige komplette Abstürze des gesamten Programmes, ohne genaue Fehlermeldung. Manchmal war danach die gesamte Datenbankdatei nicht mehr lesbar. Der Fehler passiert immer bei Datensatz 41, bzw. 42. Bei MN-Abfragen mit wenigen Datensätzen funktioniert das Macro ebenfalls.

Meine genaue LibreOffice-Version: LibreOffice LibreOffice 3.5.5.3
Build-ID: 7122e39-92ed229-498d286-15e43b4-d70da21

Mein Betriebssystem: Windows 7 Home Premium, Service Pack 1, 64-bit, Deutsch

Ich bin einverstanden, dass ich per E-Mail zu weiteren Details des Problem befragt werde


Gruß,
Webbygale




--
Florian Reisinger


--
Informationen zum Abmelden: E-Mail an discuss+help@de.libreoffice.org
Probleme? http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: http://listarchives.libreoffice.org/de/discuss/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.