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.