SQL Abfrage aus Formular erstellen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Pixelletter
*
Beiträge: 12
Registriert: Do, 30.05.2013 13:43

SQL Abfrage aus Formular erstellen

Beitrag von Pixelletter »

Hallo! Ich steh mal wieder vor'm Scheunentor.

Ich möchte ein Formular bauen, mit dem man Ergebnisse aus einer Datenbank suchen und filtern kann. Also eine SQL- Abfrage, die durch Textfelder verändert werden kann, ohne die .odb-datei zu öffnen.

Ich habe mir aus verschiedenen Foren-Beiträgen folgendes zusammen gebastelt (siehe unten). Dieses Makro sollte eigentlich den Text, der in das Textfeld txtLand geschrieben wird (z.B. Spanien, Griechenland, Deutschland), als Kriterium für die Abfrage verwenden. Dann sollten mir die Datensätze mit diesem Kriterium in msgboxen gezeigt werden. (Im nächsten Schritt sollten alle Datensätze mit dem Kriterium in einem Tabellenkontrollfeld gezeigt werden, aber eins nach dem anderen).

Tatsächlich liefert es aber nur ein Ergbnis, wenn ich einen Spalltennamen eingebe. (Also Land, Region usw.) Ich hab auch schon die SQL-Abfrage mit dem Abfragen-Assistent erstellt und eingefügt. Damit konnte das Programm aber garnichts anfangen.

Warum funktioniert der Filter nicht?
Und wie bekomme ich es hin, dass mir der ganze Datensatz angezeigt wird?

Der Code sieht so aus:

Code: Alles auswählen

Sub S_such_Land
        oform = thiscomponent.drawpage.Forms.MainForm
        oconnection = oform.activeconnection
        otxtLand = oform.txtLand
        sLand = otxtLand.text
        SQL_Statement = oconnection.createstatement
        sSQL = "SELECT Land AS ""Land"", Region AS ""Region"", IFF AS ""IFF"" FROM ""Bestand_Videos"" WHERE Land = "+ sLand
        msgbox "Bis hier hin läuft's. sLand= " + sLand
        SQL_Result = SQL_Statement.executequery(sSQL)
        While SQL_Result.next()
        msgbox SQL_Result.getString (1)
        Wend
End Sub
RobertG
********
Beiträge: 2070
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: SQL Abfrage aus Formular erstellen

Beitrag von RobertG »

Hallo Pixelletter,

mich wundert eigentlich, wie Du die Abfrage konstruiert hast. Ich bin immer davon ausgegangen, dass die Feldbezeichnungen in doppelten Anführungsstrichen stehen müssen. Die ganzen AS-Bezeichnungen kannst Du Dir jedenfalls sparen.
Das sieht dann für eine einfache Abfrage so aus:

Code: Alles auswählen

 "SELECT * FROM ""Tabelle1"""
Der Abfragestring ist in doppelten Anführungsstrichen gehalten, Tabellenbezeichnungen und Feldbezeichnungen ebenfalls in Anführungszeichen, die aber durch Anführungszeichen wiederum maskiert werden müssen, damit sie als solche auch in dem String erscheinen.
Die einzelnen Felder klapperst Du mit

Code: Alles auswählen

SQL_Result.getString(1)
SQL_Result.getString(2)
SQL_Result.getString(3)
ab, wenn Du z.B. 3 Felder, formatiert als 'char', hast.

Gruß

Robert
Pixelletter
*
Beiträge: 12
Registriert: Do, 30.05.2013 13:43

Re: SQL Abfrage aus Formular erstellen

Beitrag von Pixelletter »

Ok, dann sollte es eigentlich so aussehen?

Code: Alles auswählen

 sSQL = "SELECT ""Land"", ""Region"", ""IFF"" FROM ""Bestand_Videos"" WHERE ""Land"" = "+ sLand
Funktioniert auch, bleibt das Problem, dass ich eine Fehlermeldung "Collum not found" erhalte, wenn ich für sLand den Inhalt einer Zelle der Spalte Land eingebe.
Irgend etwas stimmt mit dem Filter nicht.
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Re: SQL Abfrage aus Formular erstellen

Beitrag von pmoegenb »

Hast Du wirklich eine Spalte/Feldnamen mit der Bezeichnung IFF ?
Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
RobertG
********
Beiträge: 2070
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: SQL Abfrage aus Formular erstellen

Beitrag von RobertG »

Hallo Pixelletter,

vielleicht

Code: Alles auswählen

sSQL = "SELECT ""Land"", ""Region"", ""IFF"" FROM ""Bestand_Videos"" WHERE ""Land"" = '"+ sLand +"'"
Lediglich Zahlenwerte kommen ohne eine Maskierung mit Hochkommata aus. Warum allerdings "Column not found" kommt, wenn Du einen Inhalt eingibst, kann ich auch nicht sagen. Dazu müsste ich die Tabelle "Bestand_Videos" kennen.

Gruß

Robert
Antworten