Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Datenbankgeschwindigkeiten bei Abfragenaufrufen?

Begonnen von Xoar, März 10, 2016, 07:28:25

⏪ vorheriges - nächstes ⏩

Xoar

Hallo,

ich hab eine Frage bezüglich Abfrageausführungen

Ich habe eine Tabelle (tbl2) die über einen Fremdschlüssel mit einer anderen Tabelle (tbl1) verbunden ist. Im Formular mit einem Registersteuerelement wird eine Seite mit einer Anzeige aufgrund einer Abfrage mit tbl1 und tbl2 angezeigt.  So jetzt die Frage, wird diese direkt bei Formularaufruf ausgeführt, oder erst wenn ich auf die Seite des Registersteuerelements klicke?

Auf anderen Registersteuerelementseiten beziehe ich mich auf Abfragen mit Feldern die sich nur auf tbl1 beziehen. Hier wird doch trotz der Fremdschlüsselbeziehung zu tbl2, diese komplett unbeachtet gelassen, oder?

Grüße





DF6GL

Hallo,

Die Abfrage wird "ausgeführt", sobald das Formular geladen (geöffnet)  wird.  Das Reg-St.-El. hat nur darstellenden Einfluß, d. h. es werden auf einer Seite nur die darauf platzierten Felder angezeigt.  Somit dient ein Reg.-St.-El. (hier) nur zur "Gruppierung" von Steuerelementen und unterscheidet nicht bezgl. der durch die Abfrage geladenen insgesamten Daten.


ZitatAuf anderen Registersteuerelementseiten beziehe ich mich auf Abfragen mit Feldern die sich nur auf tbl1 beziehen

??  Was meinst Du hier mit "Abfragen" ?

Es gibt für ein Form nur eine Abfrage zu einem bestimmten Zeitpunkt. Die dadurch aus einer oder mehreren Tabellen ausgelesenen Daten beim Öffnen des Form können dann, auf verschiedene Registerseiten verteilt,  mit gebundenen Steuerelement (Textfelder, Kombis, Listenfelder, etc. ) anzeigt werden.

Ein spezieller Fall wäre die Anzeige eines anderen Formulars  (--> Unterformular) mit Hilfe eines UFO-Steuerelementes. Das wirkt aber lediglich auch wie ein normales Textfeld, nur dass halt eben ein komplettes Formular, das selber wieder eine Datenherkuft   (---> Abfrage) besitzt, angezeigt wird.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Xoar

#2
Ok, ich habe auf jeder Registerseite ein eigenes Unterformular, die wie Du schon sagtest jeweils ne Abfrage als Datenherkunft hat.

Heißt, es werden alle Unterformular inkl. deren Abfragen komplett geladen beim öffnen des Forms mit den Registern.

Das ist leider schade, somit lädt er natürlich immer alles, obwohl ich das oftmals gar nicht brauche.

Danke für die Infos


///

Kann leider dir nicht per Button danken und auch nicht den Beitrag als gelöst markieren.

MaggieMay

Hi,
ZitatDas ist leider schade
nun, das liegt doch bei dir, wie du das anlegst. Du könntest bspw. die Datenquellen der auf den Registerkarten liegenden Formulare erst beim Registerwechsel einstellen, also dann wenn du die Daten sehen willst.
Freundliche Grüße
MaggieMay

Beaker s.a.

Hallo Xoar,
Wenn Du die Ladezeit eines Formulars verkürzen willst, lösche die Datenherkunft (Abfrage) oder das Herkunftsobjekt (Unterformular) der UFos auf den Registerseiten, die beim Laden des HFo nicht zu sehen sind, und weise diese erst beim Anzeigen der entsprechenden Registerseite zu. Das geht am besten beim Ereignis "Change" (BeiÄnderung) des Registercontrols.
Beispiel:
    Select Case Me!DeinRegisterControl.Value
    Case Me!DeinRegisterControl.Pages("RegisterName1").PageIndex
        Me!DeinUFoControlAufDieserKarte.Form.RecordSource = "DeineAbfrage"
    Case Me!DeinRegisterControl.Pages("RegisterName2").PageIndex
        Me!DeinUFoControlAufDieserKarte.SourceObject = Forms!DeinUFoForm
End Select

Zugriff auf die Registerseiten mit dem PageIndex, da man so von der Reihenfolge der Karten unabhängig ist.
hth
gruss ekkehard

Uups, zu langsam; - aber ausführlicher ;-)
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Xoar


Bitsqueezer

Hallo,

das kann man auch einfacher machen. Statt in jede Registerkarte ein UFO (Unterformular) einzustellen und mühsam RecordSource zu setzen, wenn es angezeigt wird, ist es einfacher, das Register-Control so zu verkleinern, daß nur die Buttons dargestellt werden. Das UFO stellt man dann ganz normal in den Hauptformular-Bereich (HFO), da ja mind. eine Registerkarte ohnehin immer aktiv ist - auf deren Unterformular wird das UFO-Control initial eingestellt.

Beim Wechsel der Registerkarte verändert man einfach nur das SourceObject (wie oben gezeigt) des UFO-Controls. Damit wird das Formular neu geladen und erst dann, wenn die betreffende Registerkarte geklickt wird. Ggf. muß man auch die Link-Felder passend einstellen. Somit bleibt das UFO autark und ist nicht abhängig vom HFO, das an der RecordSource herumfummeln muß.

Gruß

Christian

MaggieMay

Hallo,
Zitatdas Register-Control so zu verkleinern, daß nur die Buttons dargestellt werden
das ist gar nicht nötig, man kann das Register-Steuerelement in der benötigten Größe belassen und somit auch den dadurch sichtbaren "Rahmen" um das Unterformular erhalten, indem man das Unterformular über alle Register legt. Das gelingt, wenn man vor dem Einfügen des UF-Controls das Register-Steuerelement markiert, aber keine Registerseite.
Das Markieren des Register-Steuerelements erfolgt durch Klick rechts in den freien Bereich neben den Register-Reitern.
Freundliche Grüße
MaggieMay