Seite 1 von 1

(gelöst) Duplikate werden nicht angezeigt

Verfasst: Mi, 04.04.2012 16:04
von Noebian
Hallo, vielleicht kann mir einer weiterhelfen.
Ich habe ein Formular, das sich ganz merkwürdig benimmt. Es soll Personen anzeigen; die Datenquelle ist eine Abfrage.
Merkwürdigerweise wird aber dann, wenn mehrere Personen mit dem gleichen Nachnamen existieren, nur die erste angezeigt.
Das ist in einem Land mit vielen Petersens und Hansens ziemlich schlecht :-)
- in der Abfrage sind die betreffenden Personen enthalten
- wenn ich ein neues Formular mit der gleichen Datenquelle erstelle, werden die Datensätze korrekt angezeigt
ergo muss der Fehler im Formular selbst liegen - ich habe aber keinen Plan, wo ich noch suchen soll...

Re: Duplikate werden nicht angezeigt

Verfasst: Mi, 04.04.2012 16:51
von pmoegenb
Dann lass mal den SQL-Befehl sehen, der dahinter steckt.

Re: Duplikate werden nicht angezeigt

Verfasst: Mi, 04.04.2012 17:11
von Noebian
Du meinst die Abfrage im SQL-Format? Die funktioniert ja wie sie soll.
Oder meinst du den Filter? Ich habe für das Formular verschiedene Sortierungen definiert, zB so

Code: Alles auswählen

Sub nach_Nachname_sortieren

oDoc=ThisComponent
oForm = oDoc.DrawPage.Forms.getByName("MainForm")

	oForm.ApplyFilter = true	
	oForm.Filter = ""
	oForm.order = "Nachname, Rufname"
	oForm.reload

end sub

Re: Duplikate werden nicht angezeigt

Verfasst: Mi, 04.04.2012 17:47
von Noebian
Nochmal anders gefragt: was müsste ich tun, um diesen Effekt (Keine Duplikate bei den Nachnamen) bewusst hervorzurufen? Kann man das irgendwo einstellen?

Re: Duplikate werden nicht angezeigt

Verfasst: Do, 05.04.2012 22:56
von Noebian
Ja, es werden per Makro verschiedene Filter gesetzt - aber die aktuellen Filter werden ja immer auch bei den Formulareigenschaften angezeigt.
Es ist (laut Formulareigenschaften) aktuell kein Filter gesetzt, die Abfrage liefert die richtigen Ergebnisse und das Formular zeigt sich nicht an. Ich komme einfach nicht dahinter...
Übrigens tritt der gleiche Effekt auch auf, wenn ich als Datenquelle eine Tabelle nehme: das Formular filtert die Duplikate aus. Es muss also am Formular liegen.

NACHTRAG
Das Formular beinhaltet Nachnamen, Rufnamen, Alter. Duplikate bei Alter und Rufnamen treten auf - nur nicht beim Nachnamen.

Re: Duplikate werden nicht angezeigt

Verfasst: Do, 05.04.2012 23:39
von F3K Total
Hi,
ohne das ich es geprüft habe, sieht dein Makro komisch aus:

Code: Alles auswählen

   oForm.ApplyFilter = true   
   oForm.Filter = ""
   oForm.order = "Nachname, Rufname"
   oForm.reload[/quote]
würde ich mal ändern in

Code: Alles auswählen

   oForm.Filter = ""
   oForm.order = "Nachname", "Rufname"
   oForm.reload
wobei du auf die Gänsefüßchen um Nachname und Rufname achten solltest.

Gruß R

Re: Duplikate werden nicht angezeigt

Verfasst: Fr, 06.04.2012 00:15
von Noebian
Hi R,
"Nachname, Rufname" funktioniert,
während "Nachname", "Rufname" die Fehlermeldung "Unerwartetes Symbol: ,"
hervor ruft.

Re: Duplikate werden nicht angezeigt

Verfasst: Fr, 06.04.2012 02:17
von DPunch
Servus
F3K Total hat geschrieben:ohne das ich es geprüft habe, sieht dein Makro komisch aus
Nein, .Order ist ein String und kann daher selbstverständlich nicht mehr als Anführungszeichen am Anfang und am Ende verarbeiten.
Gegen die ursprüngliche Schreibweise ist nichts einzuwenden.

Zum Thema:
kannst Du eine Beispieldatei hochladen, in der das Verhalten nachvollziehbar ist?

Re: Duplikate werden nicht angezeigt

Verfasst: Fr, 06.04.2012 07:35
von F3K Total
Hallo DPunch,
da hast Du Recht, ich hatte mit von der Eintragung im Formular irreführen lassen:
S.png
S.png (1.44 KiB) 2644 mal betrachtet
Gruß R

Re: Duplikate werden nicht angezeigt

Verfasst: Sa, 07.04.2012 19:56
von Noebian
HI,
das Formular ist so kontruiert, dass es ein Main-Formular gibt, welches ein Tabellenfeld enthält. Hier werden die Ergebnisse einer Abfrage angezeigt. Dann gibt es mehrere Subformulare, die mit dem Main-Formular verknüpft sind und direkt auf Tabellen zugreifen.
Wie schon gesagt: die Abfrage liefert die gewünschten Ergebnisse, die werden aber vom Tabellenfeld nicht richtig dargestellt. Es kann eigentlich keine Unterschiede im Handling zu den Rufnamen geben, es sind auch keine Makros am Start - außer den Sortierungen, die per Makro vorgenommen werden (dafür gibt es einzelne Buttons). Aber die aktuellen Filter und Sortierungen werden im Eigenschaftsdialog des Feldes ja angezeigt, sind also nachvollziehbar!
Ich habe jetzt mal spaßeshalber ein neues Unterformular eingefügt und als Datenquelle die gleiche Abfrage genommen wie im Main-Formular: siehe da, das dort eingefügte Tabellenfeld zeigt auch die doppelt vorhandenen Nachnamen an.
Ich kann mir die Sache beim besten Willen nicht erklären, vielleicht gibt es einen ganz blöden Grund dafür. Im Moment weiß ich mir nicht anders zu helfen als ein neues Formular zu erstellen. :?

Re: Duplikate werden nicht angezeigt

Verfasst: Sa, 07.04.2012 20:14
von Noebian
Wenn Du meinst, dass das was bringt ohne Daten - danke schön! Ist unterwegs.

Re: Duplikate werden nicht angezeigt

Verfasst: Di, 10.04.2012 20:59
von Noebian
Durch die freundliche Hilfe von Robert hat sich herausgestellt, dass mit dem Formular ein "Group by" Statement verknüpft ist. Dies wurde sichtbar, als ich das isolierte Formular (dh kopiert und in eine neue Datenbank verfrachtet) mit einer Tabelle als Datenquelle verknüpft habe. Dann kam folgende Fehlermeldung: Not in aggregate function or group by clause... in Statement [SELECT * FROM "tbl_personendaten" GROUP by "Nachname" ORDER BY "Nachname"].
Robert hat dann die *.odb-Datei entpackt und am Quelltext geschraubt um die Klausel wieder loszuwerden. Wir haben keinen Weg gefunden, sie über die normale Oberfläche zugänglich zu machen.
Hat jemand eine Erklärung dafür, wie soetwas entstehen und vermieden bzw. behoben werden kann?

Re: Duplikate werden nicht angezeigt

Verfasst: Fr, 13.04.2012 17:49
von Noebian
um die Sache hier abzuschließen: man bekommt die Klausel über ein simples Makro in den Griff - ganz einfach, wenn man es weiß :-)
vermutlich ist sie auf einem ähnlichen Weg auch hinein gekommen.

Code: Alles auswählen

sub test
oDoc = ThisDatabaseDocument.FormDocuments.getByName( "frm_Einladungsliste" ).open 
oForm = oDoc.DrawPage.Forms.GetByIndex(0) 
oForm.Groupby=""
end sub 
herzlichen Dank an alle!