Seite 1 von 1
freie Abrage
Verfasst: Mo, 28.05.2007 19:51
von s_m_peters
Hallo zusammen,
ich bin ganz neu in dem Programm und habe eine Abfrage mit den für meine Suche wichtigen Kästchen erstellt. Danach habe ich ein Formular mit einer besseren Ansicht erstellt.
Jetzt ist mein Problem, dass ich nicht einfach etwas eingeben kann und mir die dazu passenden Einträge angezeigt werden. Ich kann keine festgelegten Abfragen gebrauchen, da ich auf einen großen Buchbestand zurückgreifen muss und z.B. wissen muss, wie viele Bücher ich von Goethe da habe.
Wenn ich jetzt für jeden Autor eine neue spezielle Abfrage erstellen muss, brauche ich nachher genauso viele Abfragen wie Tabellen.
Ich hoffe mir kann jemand helfen und ich frage hier nichts total dummes

.
Vielen Dank,
Sarah
Verfasst: Mo, 28.05.2007 21:28
von Barlee
Hallo Sarah,
das bekommst Du mit Abfrageparametern in Griff.
Beispiel:
Du hast eine Tabelle "Buch" mit den Spalten
-Titel,
-Autor,
-Erscheinungsjahr
Nun möchtest Du Dir alle Bücher von Goethe anzeigen lassen. Folgende Abfrage:
"fragt" Dich, nach welchem Autor Du suchen möchtest. In unserem Beispiel gibst Du "Goethe" an und bekommst alle Datensätze zurück, in denen Goethe erfasst ist.
":Autor" ist hierbei der Parameter, der jedesmal beim Ausführen abgefragt wird. Hier bist Du also frei.
Kommst Du damit weiter?
Gruß Barlee
Nicht so ganz
Verfasst: Mo, 28.05.2007 22:01
von s_m_peters
Ich habe bei dieser Tabelle z. B. die Spalten, Autor, Titel, Erscheinungsjahr, Verlag, usw.
Wenn ich nun eine Suche aufrufe möchte ich, dass alle Kästchen erscheinen und ich z. B. Goethe und Suhrkamp eingeben kann, aber ohne diese Suche abspeichern zu müssen.
Ich möchte eine Suche so ähnlich wie z. B. bei Amazon. Leere Kästchen, freie Eingabe. Keine Suche, die man abspeichern muss.
Wie muss ich das eingeben? Bitte helft mir!
Bin so verzweifelt.

Verfasst: Di, 29.05.2007 00:05
von berndkli
Hallo Sarah
Ich möchte eine Suche so ähnlich wie z. B. bei Amazon. Leere Kästchen, freie Eingabe. Keine Suche, die man abspeichern muss.
Das geht - wenn überhaupt - nur mit Programierung. Wenn du nur eine Tabelle hast, benutze doch den Standard Filter direkt in der Tabelle; da kannst du 3 Parameter eingeben und mit "und" oder "oder" verknüpfen.
Gruss Bernd
Hallo Sarah,
Verfasst: Di, 29.05.2007 09:25
von paunami
bin selbst Neu in Ooo, aber eine Idee von mir wäre:
Im Formular selbst gibt es in der Navigationsleiste einen Suchen-Button. Hier Suchparameter eingeben und schon zeigt er Dir der Reihe nach alles an, was er findet.
Tschau
doppelter thread?
Verfasst: Mi, 30.05.2007 16:23
von oseebass
ist das nicht das gleiche wie deine andere frage unter:
viewtopic.php?t=12480 ?
Re: freie Abrage
Verfasst: Sa, 16.06.2007 14:56
von sarotti
Hallo s_m_Peters,
habe vor einiger Zeit genau diese Funktion "freier Formularfilter" gesucht und bin zu folgender Lösung gelangt:
Code: Alles auswählen
Sub Filter_erstellen
DIM FormFilter as string
Dim i%
oDoc = ThisComponent
'//das Formular
oFormSuche = oDoc.DrawPage.Forms(0) '//Index des Formulars (mit getByName kann auch der Name gewählt werden)
'//Die Suchfelder im Formular werden nachfolgend ausgelesen...
oArt = oFormSuche.getByName("TextBox")
sArt= oArt.text '//=Inhalt
oBuchHinw = oFormSuche.getByName("TextBox1")
sBuchHinw = oBuchHinw.text
oAuftragg = oFormSuche.getByName("TextBox2")
sAuftragg = oAuftragg.text
oEmpfaenger = oFormSuche.getByName("TextBox3")
sEmpfaenger = oEmpfaenger.text
oEinteilung= oFormSuche.getByName("TextBox4")
sEinteilung= oEinteilung.currentValue'//current value wegen Listfeld
oMonat=oFormSuche.getByName("Monat")
sMonat=oMonat.currentValue
oJahr=oFormSuche.getByName("Jahr")
sJahr=oJahr.currentValue
oKonto=oFormSuche.getByName("Konto_Auswahl")
sKonto=oKonto.currentValue
DIM x(7)
'// die folgenden Abfragen dienen dazu eine Püfung vorzunehmen, ob die Abfragefelder leer sind
if sArt <> "" then
x(0) = "`Art` LIKE '%" + sArt + "%'"
end if
if sBuchHinw <> "" then
x(1) = "`Buchungshinweis` LIKE '%" + sBuchHinw + "%'"
end if
if sAuftragg <> "" then
x(2)= "`Auftraggeber` LIKE '%" + sAuftragg + "%'"
end if
if sEmpfaenger <> "" then
x(3) = "`Empfänger` LIKE '%"+ sEmpfaenger + "%'"
end if
if sKonto <> "" then
x(4) = "`KTO_Nr` LIKE '%"+ sKonto + "%'"
end if
if sMonat<>"" and sJahr="" then
msgBox "Bitte geben Sie Monat UND Jahr ein",0,"Fehler"
exit sub
end if
if sJahr<> "" then
x(5)= " YEAR(`Datum`) = " + sJahr
end if
if sMonat<>"" and sJahr<>"" then
x(5)= " YEAR(`Datum`) = " + sJahr + " AND MONTH(`Datum`) = "+ sMonat
end if
if sEinteilung <> "" then
x(6) = "`Einteilung` LIKE '"+ sEinteilung + "'"
end if
'//Hier wird ein eventuell bestehender Filter zunächst geleert
FormFilter=""
for i=0 to 6
FormFilter=FormFilter+x(i) '// hier wird der Filter in einer Schleife zusammengestellt
if FormFilter<>"" and x(i+1)<>"" then
if right(FormFilter,3)<> "AND" then
FormFilter=FormFilter+" AND" '// es folgt das Ergänzen der einzelnen Bestandteile des Fiters um " AND"
end if
end if
next
do until right(FormFilter,4) <>" AND" '//sofern am Ende des Filters ein AND steht wird dieses abgeschnitten
FormFilter=left(FormFilter,(len(FormFilter)-4))
loop
oFormSuche.filter = FormFilter
oFormSuche.ApplyFilter=true '//setzen des Filters
oFormSuche.reload()
End Sub
O.K. sieht erst mal schwierig aus....
Gruss
sarotti