Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: mikepo am November 07, 2020, 18:11:50

Titel: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: mikepo am November 07, 2020, 18:11:50
hallo zusammen, mich würde interessieren was schneller ist:

ein dlookup wo man in einer tabelle was sucht

oder

eine gespeicherte abfrage, und dann darauf ein dlookup ?

meine bisherigen tabellendaten sind zu gering um derzeit einen unterschied zu merken, aber mich würds für später interessieren, wenn die tabelle immer größer wird.

danke für euren input

lg michael
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: MzKlMu am November 07, 2020, 19:11:18
Hallo,
wozu brauchst Du DlookUp ?
Zum Suchen braucht es kein Dlookup.

Dlookup sollte man in einer DB eher vermeiden.
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: mikepo am November 07, 2020, 19:36:10
hallo, ich tue mir da leichter/ bin ich mit dlookup geübter.

 würdest du eher die recordset Sache präferieren ?
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: MzKlMu am November 07, 2020, 20:03:39
Hallo,
ich habe nicht die geringste Ahnung was du mit Dlookup machen willst.
Und was du jetzt mit Recordsetsache meinst ist mir auch schleierhaft.

Bitte mal etwas präziser und ausführlicher schildern.
An Dlookup in einer Datenbank solltest du dich gar nicht erst gewöhnen.
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: mikepo am November 07, 2020, 20:21:20
hallo klaus, danke für deinen input.

also es wird der qr code auf einem teil gescannt, anschließend am formular felder gefüllt, bspw artikelnummer, seriennummer, bezeichnung, fertigungsauftragsnummer usw.

dann wird die dazugehörige arbeitsanweisung in einem unterformular angezeigt. sozusagen alles was der mitarbeiter zu dem gescannten teil wissen muss, wird ihm angezeigt
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: MzKlMu am November 07, 2020, 23:08:57
Hallo,
ja und wozu brauchst Du da Dlookup ?

Deine Angaben sind wenig hilfreich um Dir zu antworten.
Ich kann da nicht ansatzweise die Notwendigkeit von DLookup sehen.
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: ebs17 am November 08, 2020, 09:33:23
Zitatein dlookup wo man in einer tabelle was sucht

oder

eine gespeicherte abfrage, und dann darauf ein dlookup ?
Für das Suchen oder besser das Finden des Ergebnisses muss die gespeicherte Abfrage ja ausgeführt und somit auf die gleiche Tabelle zugreifen. Welchen Effekt würdest Du Dir daraus erwarten, wenn die Abfrage nur einfach den Tabelleninhalt wiedergibt und keine zusätzlichen eigenen Verarbeitungen vornimmt?

Wegen der Geschwindigkeit sollte man eher eine Überlegung in eine ganz andere Richtung führen: Ein DLookup oder auch der entsprechende Ersatz durch ein Recordset liefern genau einen Wert zurück. Bei insgesamt einem nötigen Rückgabewert wird man mit üblichen Rechnern keinen wahrnehmbaren und nur mit großer Mühe messbaren Unterschied feststellen.
Wenn man aber einige tausende Rückgabewerte benötigt, werden beide Varianten mit ihrem Dauerfeuer an Einzelabfragen einer richtigen Abfrage (SQL - alles auf einmal - Massendatenverarbeitung) gnadenlos unterlegen sein.

Es kommt also darauf an, was man EIGENTLICH tun möchte.
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: mikepo am November 08, 2020, 09:58:53
hallo eberhard, also eigentlich möchte ich damit in den formularen werte aus den tabellen raussuchen, und diese dem mitarbeiter anzeigen lassen.

ich habe den vorschlag vom klaus aufgegriffen, jedoch bleiben noch ca 10 felder übrig die ich nicht mit der hinterlegten abfrage bedienen kann. somit muss ich mir die informationen von den tabellen/abfragen holen.

und da würde ich halt an dlookup denken.

also ihr meint mit so einer geringen anzahl an feldern (ca. 10) kann ich jedes feld auch mit dlookup füllen ?

derzeit läuft es sehr sehr schnell, aber die unterschiedlichen tabellen werden ja mit der zeit größer
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: DF6GL am November 08, 2020, 10:21:32
Hallo,

eigentlich ist das eigentliche Problem nicht klar.


Um Werte aus einer Tabelle dem User anzuzeigen, reicht standardmäßig, das Form an diese Tabelle zu binden (Datenherkunft) und die entsprechende Steuerelemente an die Tabellenfelder (Steuereleementinhalt) zu binden.

Wenn Daten aus einer n-Tabelle angezeigt werden sollen, dann bietet sich das UFO-Steuerelement mit passenden Formular an, das an die n-Tabelle gebunden ist.


Wenn aus mehreren Tabellen die Daten in einem Form gleichzeitig angezeigt werden sollen, dann erzeuge eine Abfrage über die beteiligten Tabellen und weise die Abfrage einem entspr. generierten Formular zu. Es kann hier aber passieren, dass die Abfrage "nicht aktualisierbar" ist und demzufolge keine Daten im Formular editierbar sind.


Das alles setzt voraus, dass ein vernünftig normalisierter Tabellenaufbau vorliegt.
Hierbei ist dann keine Notwendigkeit (kein Sinn) für Dlookup gegeben.


Die Verwendung von Dlookup ist nur dann sinnvoll, wenn auf schon existierende Daten in Tabellen geprüft werden soll oder muss.

Oder wenn (Meta-)Daten aus Tabellen gelesen werden sollen, die in keiner direkten Beziehung zu den "Betriebs"-Tabellen stehen, z. B. eine Parameter-Tabelle.


Dabei spielt die Performance keine wesentliche Rolle, weil der Aufruf von Dlookup nur sporatisch und nicht permanent stattfindet.
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: MzKlMu am November 08, 2020, 10:27:32
Hallo,
Du sprichst völlig in Rätseln.
Ich kann bisher nirgends die Notwendigkeit von Dlookup erkennen.
Und wo habe ich da einen Vorschlag gemacht?

Kannst Du mal bitte ein Bild des Beziehungsfensters zeigen?
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: mikepo am November 08, 2020, 11:15:08
hallo zusammen, ihr habt recht, ich hab da viel zu kompliziert gedacht.

hab nun das formular an die tabelle gebunden. jedoch möchte ich erst wenn der mitarbeiter den artikel scannt, das dann erst die gebundenen felder ausgefüllt werden.

jetzt ist es so, das wenn man das formular aufruft, sofort der erste datensatz in den gebundenen formularfeldern angezeigt wird. aber angezeigt soll erst was werden, nachdem er den artikel gescannt hat (und dann auf diesen gescannten artikel gefiltert wird).
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: ebs17 am November 08, 2020, 12:01:49
Zitatjedoch möchte ich ...
Dann tue das.

Franz hat ja gerade den gedanklichen Bogen gezogen. Dieser darf ruhig beachtet statt ignoriert werden.
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: mikepo am November 08, 2020, 12:33:11
hallo eberhard, das versuche ich ja.

das formular ist genau an 1 tabelle gebunden. jedoch soll erst der datensatz im formular angezeigt werden, wenn in ein textfeld die artikelnr gescannt wurde.

wie mache ich das, das beim öffnen noch keine werte angezeigt werden, erst halt nach dem scannen ?
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: Beaker s.a. am November 08, 2020, 13:07:25
Hallo Mike,
Schreibe in die Filtereigenschaft des Formulars 1=0, und
setze die Eigenschaft "Beim Laden filtern" auf "Ja".
Der Scan erfolgt dann normalerweise in ein ungebundenes
Textfeld. In dessen Ereignisprozedur "AfterUpdate" änderst
du dann den Filter auf das gescannte Ergebnis
Private Sub DeinScanfeld_AfterUpdate()
    Me.Filter = "DeinTabellenfeld = " & Me.DeinScanfeld
'falls "DeinTabellenfeld vom Typ "Text" ist müssen Quotes drumrum
'Me.Filter = "DeinTabellenfeld = '" & Me.DeinScanfeld & "'"
    Me.FilterOn = True
End Sub

gruss ekkehard
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: ebs17 am November 08, 2020, 13:25:21
Einen Wert "herauszusuchen" und ihn somit zu haben einerseits und ihn andererseits anzuzeigen sind für mich grundverschiedene Dinge. Die Sonne scheint auch, wenn ich die Augen schließe und mir innerlich Dunkelheit verschaffe.
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: mikepo am November 08, 2020, 13:53:14
hallo zusammen, hallo ekkehard, vielen dank hat funktioniert !!! danke !
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: mikepo am November 09, 2020, 09:31:54
hallo zusammen, aber jetzt habe ich die anforderung, das nach dem gescannten artikel mehrere bedingungen zu prüfen sind. wäre da das schnellste über dlookup auf die daten der tabelle zuzugreifen ?
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: MzKlMu am November 09, 2020, 09:51:31
Hallo,
was sind das für Bedingungen?
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: mikepo am November 09, 2020, 16:31:35
ich muss nachschauen ob der gescannte artikel schon mal gescannt wurde (somit in der tabelle aufscheint). anschließend muss nachgeschaut werden, ob er in der baugruppen-tabelle schon mal vorgekommen ist.

dh ein paar (tabellen) checks sind notwendig, bevor der artikel dann in einer tabelle erfasst wird.

(die checks sind notwendig, nicht das es zu doppelscans kommt)
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: DF6GL am November 09, 2020, 17:12:01
Hallo,

Beispiel:

Sub txtArtScan_Beforeupdate(Cancel as Integer)
If Dcount("*","tblTabelle","ArtNr = '" & Me!txtArtScan.Text & "'") > 0 then
   Msgbox "Artikel schon vorhanden"
   Cancel =True
   Me.Undo
End If
End Sub
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: mikepo am November 09, 2020, 17:17:20
top vielen dank ! und von der geschwindigkeit her ist das mit dcount bzw. dlookup eh wahrscheinlich ausreichend, auch für die zukunft gedacht wenn die tabellen immer größer werden ?
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: MzKlMu am November 09, 2020, 19:23:18
Hallo,
haben die Artikel Tabelle und die Baugruppen Tabelle eine Beziehung ?
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: mikepo am November 09, 2020, 20:05:36
ja, die ArtikelID kommt in der Baugruppen Tabelle als Fremdschlüssel vor
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: MzKlMu am November 09, 2020, 20:25:22
Hallo,
dann kann es in der Baugruppen Tabelle keine Artikel geben, die in der Artikeltabelle nicht vorhanden sind. Es genügt also nur die Artikeltabelle zu prüfen.
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: mikepo am November 09, 2020, 20:45:53
ja ich weiss, mir gehts auch nicht ums wie sondern nur um die geschwindigkeit

welche möglichkeit die schnellste wäre, solche prüfungen durchzuführen
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: MzKlMu am November 09, 2020, 21:13:50
Hallo,
Zitatja ich weiss,
und warum schreibst Du es dann und verleitest zu falschen Überlegungen.
 
Zitatanschließend muss nachgeschaut werden, ob er in der baugruppen-tabelle schon mal vorgekommen ist.
Titel: Re: Geschwindigkeit Dlookup Tabeller oder Abfrage ?
Beitrag von: DF6GL am November 10, 2020, 11:02:28
Hallo,

warum drehst Du Dich dauernd um Deine Geschwindigkeitsphobie?


Das ist Punkt Z in der Prioritätenliste..


Selbst wenn es irgendwann tatsächlich zu einer merklichen Performance-Einbuße kommt, kann immer noch eine der  Ersatzlösungen für die Domänen-Funktionen benutzt werden.

Quick and Dirty:

Dim lngPersiD as Long, txtNachname as String

lngPersiD = 10

txtNachname = Dlookup("Nachname", "tblPersonen", "PersID =" & lngPersiD & ")"

' als Ersatz:
txtNachname = CurrentDb.OpenRecordset("Select Nachname from tblPersonen Where PersID = " & lngPersID )(0)