OO Base Umstieg von MySQL Win zu MySQL Linux Debian

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Reginald
****
Beiträge: 114
Registriert: Fr, 23.07.2010 23:58

OO Base Umstieg von MySQL Win zu MySQL Linux Debian

Beitrag von Reginald »

Hallo zusammen,
ich bin schon mächtig stolz auf mich. Nicht nur, dass meine OO Base Datenbank wächst,

nein, jetzt habe ich auch Webreports in php fürs Intranet erstellt. Youtube liefert gute

Tutorials für das php-Programmieren.

Der nächste Schritt war - oder soll sein - der Umzug von einem Windows "Server" auf eine

Linux-Kiste. Habe mich also in Debian eingearbeitet - ja, auch hier meine ersten Schritte

:-) - und nach vielen Stunden lief auch das.

Jetzt habe ich das Problem, dass beim Ausführen eines Makros, das eine SQL-Suche

erstellt, es eine Fehlermeldung gibt, wenn ich die Datenbank auf dem Linux-Server

verwende. Auf Windows hatte ich MySQL 5.1 oder so und auf Linux ebenso. Ansonsten klappt

alles, d. h. meiner OO Base Datenbank ist es völlig schnuppe, wo meine Daten liegen -

Windows - Linux - sogar FreeNAS ...

Hier die Fehlermeldung:

BASIC runtime error.
An exception occured
Type: com.sun.star.sdbc.SQLException
Message: Function sequence error..

Code: Alles auswählen

Sub FilterAnyNameFeldInMaskeSofort
   'Es soll ein Feld abgefragt werden und diese Abfrage als Filter auf 3 Namensfelder 

(Vorname, Nachname, Geburtsname) angewendet werden.
   'Das ganze soll SOFORT bei der Eingabe passiern, also keinerlei Button Drücken mehr 

...
   'Dafür wird dieses Makro einfach als Change-Ereignis hinter das Feld gelegt.
   oDoc = thiscomponent
   oForm = oDoc.Drawpage.Forms(0)
   sFilter = oForm.getByName("NameFilterInputSofort").text
   oForm.Filter = "LOWER(""FirstName"") LIKE LOWER('%" & sFilter & "%') OR 

LOWER(""LastName"") LIKE LOWER('%" & sFilter & "%')  OR LOWER(""MaidenName"") LIKE 

LOWER('%" & sFilter & "%')"
   oForm.applyFilter = True
   oForm.reload
   If oForm.isAfterLast Then
      MsgBox("No record sets found for " & Chr(13) & sFilter,48,"")
   End If
End Sub
Der Cursor springt im Code auf "If oForm.isAfterLast Then" bei der Fehlermeldung. Ich

habe also den Eindruck, dass die Selection gar nicht wirklich ausgeführt wird, wenn ich

Linux-MySQL nehme.

Muß ich vielleicht einen anderen ODBC-Treiber verwenden? - Bisher stelle ich einfach den

Servernahmen dort um ...

Grüße

Reginald
Axel Richter
****
Beiträge: 159
Registriert: So, 17.10.2010 16:54

Re: OO Base Umstieg von MySQL Win zu MySQL Linux Debian

Beitrag von Axel Richter »

Hallo,
Reginald hat geschrieben:

Code: Alles auswählen

   oForm.Filter = "LOWER(""FirstName"") LIKE LOWER('%" & sFilter & "%') OR

LOWER(""LastName"") LIKE LOWER('%" & sFilter & "%')  OR LOWER(""MaidenName"") LIKE

LOWER('%" & sFilter & "%')"
Das steht aber nicht wirklich so in Deinem Quellcode? In Starbasic und auch VBA kann man Strings nicht so, mit Zeilenumbrüchen, notieren.
Reginald hat geschrieben:BASIC runtime error.
An exception occured
Type: com.sun.star.sdbc.SQLException
Message: Function sequence error..

Der Cursor springt im Code auf "If oForm.isAfterLast Then" bei der Fehlermeldung.
Das passiert, wenn oForm.reload fehlgeschlagen ist. Dann hat oForm kein Recordset, welches .isAfterLast liefern könnte. Wenn oForm zunächst geladen werden konnte, und davon gehe ich Mal aus, dann kann das eigentlich nur daran liegen, dass in Deinem Filter ein Feldname vorkommt, den es in der Datenquelle für das Formular gar nicht gibt oder dass in sFilter was drin steht, was Deinen Filter SQL-syntaktisch falsch werden lässt.

Setze Mal in Deinen Code eine entsprechende Prüfung mit ein:

Code: Alles auswählen

...   
   oForm.applyFilter = True
   oForm.reload
   if oForm.isLoaded then
    If oForm.isAfterLast Then
      MsgBox("No record sets found for " & Chr(13) & sFilter,48,"")
    End If
   else
      MsgBox("Form not loaded with filter: " & Chr(13) & oForm.Filter,48,"")
      oForm.Filter = ""
      oForm.applyFilter = True
      oForm.load
   endif
...
viele Grüße

Axel
Antworten