November 27, 2020, 06:30:45

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Geschwindigkeit Dlookup Tabeller oder Abfrage ?

Begonnen von mikepo, November 07, 2020, 18:11:50

⏪ vorheriges - nächstes ⏩

mikepo

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

MzKlMu

Hallo,
wozu brauchst Du DlookUp ?
Zum Suchen braucht es kein Dlookup.

Dlookup sollte man in einer DB eher vermeiden.
Gruß
Klaus

mikepo

hallo, ich tue mir da leichter/ bin ich mit dlookup geübter.

 würdest du eher die recordset Sache präferieren ?

MzKlMu

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.
Gruß
Klaus

mikepo

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

MzKlMu

November 07, 2020, 23:08:57 #5 Letzte Bearbeitung: November 07, 2020, 23:37:00 von MzKlMu
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.
Gruß
Klaus

ebs17

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.
Mit freundlichem Glück Auf!

Eberhard

mikepo

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

DF6GL

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.

MzKlMu

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?
Gruß
Klaus

mikepo

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).

ebs17

Zitatjedoch möchte ich ...
Dann tue das.

Franz hat ja gerade den gedanklichen Bogen gezogen. Dieser darf ruhig beachtet statt ignoriert werden.
Mit freundlichem Glück Auf!

Eberhard

mikepo

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 ?

Beaker s.a.

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
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

ebs17

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.
Mit freundlichem Glück Auf!

Eberhard