Keine Rückmeldung nach Makro-Bearbeitung

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

FabianS
*
Beiträge: 10
Registriert: Do, 22.03.2012 08:02

Keine Rückmeldung nach Makro-Bearbeitung

Beitrag von FabianS »

Hallo zusammen,

ich habe ein Base-Problem, das leider nicht zuverlässig reproduzierbar auftritt und zu dessen Herkunft ich leider keine Idee habe.
Wenn es auftritt, äußert es sich auf folgende Weise:

- Ich öffne zunächst mein Datenbank-Dokument (HSQL-DB).
- Daraufhin starte ich ein Formular, welches sich auch wie gewohnt öffnet.
- Ich klicke nun auf einen Button im Formular, der ein Makro auslöst.
(In diesem OOO-Basic-Makro wird ein SQL-Befehl ausgeführt, der die Tabelle manipuliert, deren Inhalt im Formular dargestellt wird. Es wird dabei der Inhalt einer gesamten Spalte geändert.)
---> Als Ergebnis friert das Formular ein und in der Kopf-Leiste des Fensters kommt die Info "Keine Rückmeldung". Es bleibt dann nur noch das Beenden von OpenOffice.

Ist der Fehler einmal aufgetreten, lässt er sich beim nächsten Öffnen verhindern, indem ich einmal eine Tabelle des Dokuments öffne und schließe. Daraufhin funktioniert alles wie gewünscht.
Auch das Makro selbst bereitet dann keine Probleme.

Ich weiß, meine Beschreibung ist schwammig, aber ich habe wirklich keinen Schimmer, wonach ich zu suchen habe.
Hat jemand dennoch eine Idee? Ich bin für jede Anregung dankbar.
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Keine Rückmeldung nach Makro-Bearbeitung

Beitrag von F3K Total »

Hi,
ohne Kenntnis des Makro Codes wird es schwierig Dir zu helfen.
Am besten wäre natürlich, du lädst die Datenbank hoch, kann mir aber vorstellen, dass dies ohne Verfremdung der Daten nicht möglich ist.
Gruß R
FabianS
*
Beiträge: 10
Registriert: Do, 22.03.2012 08:02

Re: Keine Rückmeldung nach Makro-Bearbeitung

Beitrag von FabianS »

Hallo,
das ist das verwendete Makro:

Code: Alles auswählen

REM Verbindung zum Server aufbauen
oForm = thiscomponent.drawpage.forms.MainForm
oCon = oform.activeconnection
SQL_Statement = ocon.createStatement()
    
REM SQL-Ausdruecke festlegen
sSQL = "Update ""Elektroartikel gesamt"" set ""Vorwahl"" = true" 

REM SQL-Ausdruecke ausfuehren
SQL_Statement.executeupdate(sSQL)
oForm.reload
Dabei nutze ich "Vorwahl" als Filter-Kriterium für das Tabellen-Kontrollfeld in meinem Formular, um nur bestimmte, in der Datenbank aufgeführte Artikel, anzeigen zulassen.
Andere Makros, die ich verwende, habe ich immer nach diesem Strickmuster erstellt und der "Effekt" ist auch bei allen derselbe.
Den Inhalt des Makros hat man mir netter Weise hier im Forum ausgebreitet, ich habe lediglich Bezeichner für meine Zwecke angepasst.
Das Vorgehen funktioniert in einer anderen DB tadellos und auch in dieser arbeitet das Makro in der Regel. Die einzige Ausnahme ist das beschriebene Promblem beim Öffnen.
Die Datenbank selbst kann ich leider nicht öffentlich machen.

Zwischen den beiden Datenbanken gibt es nur zwei mir bewusste Unterschiede:
Bei der gelegentlich nicht funktionierenden DB
- habe ich die Daten aus einem alten MS-Works-Format über ein Calc-Sheet nach Base importiert.
- ist die Datenmenge wesentlich größer: ca. 2700 Einträge bei 32 Spalten unterschiedlichen Typs.
Wenn ich die maximale Anzahl der Zeichen laut den definierten Feldtypen addiere, komme ich auf maximal 772 Zeichen pro Datensatz.

Im anderen Fall haben Eingaben immer nur über ein Formular stattgefunden und das Datenvolumen ist wesentlich geringer.
Verletzt die Tabelle selber vllt. irgendwelche Grenzen? Ich danke jedem, der bis hierhin gekommen ist, für die Mühe des Lesens :)

MfG
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Keine Rückmeldung nach Makro-Bearbeitung

Beitrag von F3K Total »

Hi,
nur ein Versuch, füge zwei Zeilen hinzu:

Code: Alles auswählen

    REM Verbindung zum Server aufbauen
    ocontroller = ThisComponent.currentController
    if not ocontroller.isconnected then ocontroller.connect
    oForm = thiscomponent.drawpage.forms.MainForm
    oCon = oform.activeconnection
    SQL_Statement = ocon.createStatement()
       
    REM SQL-Ausdruecke festlegen
    sSQL = "Update ""Elektroartikel gesamt"" set ""Vorwahl"" = true"

    REM SQL-Ausdruecke ausfuehren
    SQL_Statement.executeupdate(sSQL)
    oForm.reload
Gruß R
FabianS
*
Beiträge: 10
Registriert: Do, 22.03.2012 08:02

Re: Keine Rückmeldung nach Makro-Bearbeitung

Beitrag von FabianS »

Hallo,
ich habe die Zeilen eingefügt, was bei mir leider zu einer Fehler-Meldung führt:
"BASIC-Laufzeitfehler. Eigenschaft oder Methode nicht gefunden: isConnected."

Ich verwende aktuell OO 4.01. Bei Vorgänger-Versionen ist der ursprüngliche Fehler allerdings auch aufgetreten.
Haben mein Fehler und diese Fehler-Meldung vielleicht dieselbe Ursache?

MfG
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Keine Rückmeldung nach Makro-Bearbeitung

Beitrag von F3K Total »

Hi,
so etwas passiert, wenn man es aus dem Kopf schreibt, streiche in der ersten Zeile

Code: Alles auswählen

ThisComponent
setze

Code: Alles auswählen

ThisDatabaseDocument
dann sollte es klappen.
Gruß R
FabianS
*
Beiträge: 10
Registriert: Do, 22.03.2012 08:02

Re: Keine Rückmeldung nach Makro-Bearbeitung

Beitrag von FabianS »

Hallo,
ich habe die Zeile angepasst. Das Makro wird mit der Korrektur dann ohne Fehler-Meldung bearbeitet. Leider taucht aber der ursprüngliche Fehler weiterhin auf. Hast Du oder hat jemand von Euch noch eine Idee? Ist es möglich, dass der Fehler außerhalb vom Makro zu suchen ist? Gibt es irgendein Log, was Auskunft über die Ursache des Programm-Absturzes geben kann?

MfG
Antworten