Parameterabfrage auf Datenbank liefert Fehlermeldung

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Benny_87
Beiträge: 4
Registriert: Fr, 29.01.2016 13:50

Parameterabfrage auf Datenbank liefert Fehlermeldung

Beitrag von Benny_87 »

Hallo zusammen,

ich bin in Sachen OOBase noch recht grün hinter den Ohren und bin nun auf ein Problem gestoßen.
Auch langes Suchen auf Google hat mich einer Lösung nicht näher gebracht.

Es geht darum, dass ich eine Kundendatenbank für unser kleines Unternehmen programmieren möchte.
In diese Datenbank werden die Daten potentieller Kunden eingepflegt und zusätzlich mit Kategorien, Mitarbeiterkürzeln und Wiedervorlagedaten versehen.
Die Datenbank habe ich auf unserem Server per MYPHPAdmin angelegt und dann via JDBC mit der OO-Datenbank verknüft.
Ich kann mittlerweile Datensätze mittels eines Formulars einpflegen und auch abrufen.

Das Problem der aktuellen OO-Version 4.1.2 (Tabellen und Abfrage können nicht erstellt und bearbeitet werden) habe ich umgangen, indem ich wieder 4.1.1 installiert habe.

Die Tabellen sind in utf8_bin angelegt. Die Textfelder sind als varchar formatiert.
Der Java-Treiber ist der aktuellste von ORACLE (Treiberklasse: com.mysql.jdbc.Driver) Version 1.8.0_45

Nun aber zum eigentlichen Problem.
Ich möchte eine Parameterabfrage erstellen um in der Datenbank wie oben erwähnt nach Mitarbeiterkürzeln, Kategorien etc. filtern zu können.
Wenn ich aber im SQL Code nach dem Parameter :qkuerzel filtere, kann ich zwar einen "Suchbegriff eingeben, nach Bestätigung erhalte ich aber folgende Fehlermeldung:
SELECT `id` AS `Kunden ID`, `kuerzel` AS `Mitarbeiter`, `firma` AS `Firmenname`, `kategorie` AS `Kategorie`, `ansprechpartner` AS `AP`, `status` AS `Status`, `wiedervorlage` AS `Wiedervorlage` FROM `d020****`.`Kundendaten` AS `Kundendaten` WHERE 'kuerzel' = :qkuerzel
->

"SQL-Status: S1009

Parameter index out of range (1 > number of parameters, which is 0).

Gebe ich aber als Suchoption einen Wert ein, der in der Tabelle vorhanden ist funktioniert die Abfrage.
SELECT `id` AS `Kunden ID`, `kuerzel` AS `Mitarbeiter`, `firma` AS `Firmenname`, `kategorie` AS `Kategorie`, `ansprechpartner` AS `AP`, `status` AS `Status`, `wiedervorlage` AS `Wiedervorlage` FROM `d020****`.`Kundendaten` AS `Kundendaten` WHERE 'kuerzel' = 'MS'
Kann mir jemand helfen?
RobertG
********
Beiträge: 2034
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Parameterabfrage auf Datenbank liefert Fehlermeldung

Beitrag von RobertG »

Hallo Benny_87,

ich habe mir das einmal angeschaut, allerdings mit LibreOffice. Ich nehme einmal an, dass es sich bei dem Code nicht um eine einfache Kopie handelt, weil dort 'kuerzel' einfach in Hochkommata steht.

Bei mir (mit LO 5.1.0.3, OpenSUSE 42.1 Leap, 64bit rpm Linux) funktioniert die Parameterabfrage zusammen mit einer JDBC-Verbindung oder auch einer direkten Verbindung zur MariaDB einwandfrei.

Gruß

Robert
Benny_87
Beiträge: 4
Registriert: Fr, 29.01.2016 13:50

Re: Parameterabfrage auf Datenbank liefert Fehlermeldung

Beitrag von Benny_87 »

@RobertG,

das mit den Hochkomata hat mich auch gewundert. In dieser Form hat mir OO den SQL-Code aber aus der Entwurfsansicht heraus erstellt.
Die WHERE-Funktion habe ich händisch geschrieben.
Auch nach abändern der Hochkomata in Anführungszeichen wird mir die Fehlermeldung geliefert.

So sieht der Entwurfsmodus aus:

Bild

Und so, der dazugehörige SQL-Code, der leider nicht funktioniert.

Bild

Wie gesagt, suche ich nicht nach :qkuerzel, sondern direkt nach einem vorhandenen Kürzel, z.B. 'MS', dann funktioniert die Abfrage und liefert auch die richtigen Ergebinsse.

Hat sonst noch jemand eine Idee, was das Problem sein könnte?
Ich komme nun nämlich allein echt nicht weiter.

Grüße
Benny
tobiman26
***
Beiträge: 63
Registriert: Mi, 20.01.2016 15:17
Kontaktdaten:

Re: Parameterabfrage auf Datenbank liefert Fehlermeldung

Beitrag von tobiman26 »

Guck dir mal die Parameter abfrage bei mir an
Kunden_q_Abfrage
vielleicht hilft dir das
Dateianhänge
Datenbank.odb
(82.95 KiB) 136-mal heruntergeladen
Mfg Tobias 8)

Windows 7 64bit + AOO 4.1.2 + LO 5.0.0.0
OpenSUSE 42.1 32 bit + LO 5.0.2.2
Benny_87
Beiträge: 4
Registriert: Fr, 29.01.2016 13:50

Re: Parameterabfrage auf Datenbank liefert Fehlermeldung

Beitrag von Benny_87 »

@ tobiman26
Vielen Dank erstmal für die Datei, sind ein paar echt gute Tricks drin, die ich sicher nutzen werde.

Leider wird mein Problem damit nicht gelöst.
Wenn ich die ganz oben genannte Abfrage in einer HSQL-Datenbank abfrage funktioniert das ganze. Nur wenn die Datenbank auf meinem Server liegt nicht. :(
RobertG
********
Beiträge: 2034
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Parameterabfrage auf Datenbank liefert Fehlermeldung

Beitrag von RobertG »

Hallo *,

ich habe das jetzt auch einmal mit AOO 4.1.2 und OpenSUSE 42.1 64bit ausgetestet. Die Parameterabfrage führt auch dort mit der MariaDB und dem jdbc-Treiber zum Erfolg.
Die Angaben zum jdbc-Treiber verstehe ich allerdings so nicht. Den Treiber gibt es meines Wissen nicht bei ORACLE. Ich habe hier die Version mysql-connector-java-5.1.33-bin.jar als zusätzliches Archiv angegeben.

Gruß

Robert
Benny_87
Beiträge: 4
Registriert: Fr, 29.01.2016 13:50

Re: Parameterabfrage auf Datenbank liefert Fehlermeldung

Beitrag von Benny_87 »

@ HeutigerGast

Ich habe deinen Tip einmal ausprobiert.
Hast du mal probiert:

Code: Alles auswählen
...where Kundendaten.kuerzel = qkuerzel
? Und vielleicht bei allen Spaltenbezeichnungen in der Abfrage auch den Tabellennamen dazu?
Leider führt das zu einem SQL-Error.

@RobertG

Ich habe mir jetzt auch einmal die ältere Treiberversion,
ch habe hier die Version mysql-connector-java-5.1.33-bin.jar
heruntergeladen und diese eingebunden. Leider ohne Erfolg.
Was meinst du mit "Den Treiber gibts es meines Wissens bei ORACLE nicht."?

Ich weiss jetzt echt nicht mehr weiter.... :?
RobertG
********
Beiträge: 2034
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Parameterabfrage auf Datenbank liefert Fehlermeldung

Beitrag von RobertG »

Hallo Benny_87,

die von Dir genutzte AOO-Version kann ich hier nicht testen. Ich könnte Dir jetzt nur noch raten, es einmal mit LO zu versuchen. Hier dann die Version 4.4.7.2. So etwas müsste auch parallel installierbar sein. Dort gibt es dann auch einen direkten Treiber dabei.

Ansonsten müsstest Du einmal eine komplette MySQL-Testdatenbank bereitstellen (Export über PHPMyAdmin, *.odb-Dateio dazu). Du kannst mir die auch gerne per privater Mail schicken.

Gruß

Robert
Antworten