freie Abrage

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

s_m_peters
Beiträge: 3
Registriert: Mo, 28.05.2007 19:40
Wohnort: Luckenbach

freie Abrage

Beitrag 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 :wink: .

Vielen Dank,

Sarah
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Beitrag 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:

Code: Alles auswählen

select * from Buch where Autor = :Autor
"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
s_m_peters
Beiträge: 3
Registriert: Mo, 28.05.2007 19:40
Wohnort: Luckenbach

Nicht so ganz

Beitrag 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. :(
berndkli
*****
Beiträge: 289
Registriert: Di, 12.04.2005 22:05

Beitrag 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
paunami
Beiträge: 2
Registriert: Di, 29.05.2007 09:21

Hallo Sarah,

Beitrag 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
oseebass
*
Beiträge: 12
Registriert: Mi, 30.05.2007 13:42

doppelter thread?

Beitrag von oseebass »

ist das nicht das gleiche wie deine andere frage unter:

viewtopic.php?t=12480 ?
sarotti
****
Beiträge: 105
Registriert: So, 12.03.2006 17:40
Wohnort: Nähe Krefeld

Re: freie Abrage

Beitrag 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
Antworten