SQL Anfrage mit Limit?

Hallo Experten,

in (my)SQL gibt es doch mit dem Schalter LIMIT eine limitierung der Ergebnisse zu setzen…
Nun habe ich versucht diese Limitierung auch in Access anzuwenden, allerdings meckert Access dann, dass der SQL-String nicht korrekt wäre.
Jetzt ist die Frage, ob ich in Access auch die möglichkeit habe irgendwie nur die ersten 10 Treffer anzuzeigen…?

Eine zweite Anfrage, für die ich kein neues Thema eröffnen möchte ist folgendes:
Ich habe eine Datei, die im Netzwerkverzeichnis liegt (access natürlich). Diese Datei soll von mehreren Leuten bearbeitet werden können. Dafür wäre jetzt noch eine bzw zwei optimierung(en) notwendig…
Zum einen: (wie) Kann ich es einrichten, dass mehrere User diese Datei gleichzeitig öffnen können?
zum Zweiten: Kann ich beim aktivieren einer Seite eines Registersteuerelements prüfen, ob die Datei noch in diesem Verzeichnis liegt und eine Warnung ausgeben, wenn sie dort nicht liegt („Warnung, dies ist eine lokale Kopie, änderungen werden nur in dieser Kopie wirksam“)

Vielen Dank
Munich

Hallo.

in (my)SQL gibt es doch mit dem Schalter LIMIT eine
limitierung der Ergebnisse zu setzen…
Nun habe ich versucht diese Limitierung auch in Access
anzuwenden, allerdings meckert Access dann, dass der
SQL-String nicht korrekt wäre.

Könnte daran liegen, dass Access kein MySQL kann … :wink:

Jetzt ist die Frage, ob ich in Access auch die möglichkeit
habe irgendwie nur die ersten 10 Treffer anzuzeigen…?

Ja, diese Möglichkeit besteht. Die Anweisung heißt zum Bleistift

"SELECT TOP 10 cur\_Umsatz FROM tbl\_Umsätze WHERE dat\_Verkauf\>=#01.01.2005# ORDER BY txt\_Verkäufername;"

was Dir die zehn umsatzstärksten Verkäufer aus 2005 anzeigen sollte. Anpassen musst Du das natürlich noch.

Zum einen: (wie) Kann ich es einrichten, dass mehrere User
diese Datei gleichzeitig öffnen können?

Weitere Benutzer können dann zugreifen, wenn niemand diese DB im Exklusivzugriff hat. Extras/Optionen/Weitere, dort den Standard-Öffnungsmodus auf „Freigegeben“ setzen. Fertig.

zum Zweiten:

Schrubest Du nicht, Du hättest noch EINE Frage? :wink:

Kann ich beim aktivieren einer Seite eines
Registersteuerelements prüfen, ob die Datei noch in diesem
Verzeichnis liegt und eine Warnung ausgeben, wenn sie dort
nicht liegt („Warnung, dies ist eine lokale Kopie, änderungen
werden nur in dieser Kopie wirksam“)

Auch das geht. Am praktischsten wäre es allerdings, wenn Du den Pfad zu Deiner "Echt"datei in einer Variablen hinterlögest und beim Aufruf jeweils genau diese verknäpfetest. Das sollte per Funktionsaufruf im AutoExec geschehen.

Gruß kw

Hallo, Munich!

in (my)SQL gibt es doch mit dem Schalter LIMIT eine
limitierung der Ergebnisse zu setzen…
Nun habe ich versucht diese Limitierung auch in Access
anzuwenden, allerdings meckert Access dann, dass der
SQL-String nicht korrekt wäre.
Jetzt ist die Frage, ob ich in Access auch die möglichkeit
habe irgendwie nur die ersten 10 Treffer anzuzeigen…?

SELECT TOP 10 …
Kleiner Hinweis: Wenn Du eine Liste hast und sortierst und die Sortierfelder die Werte 1, 2, 3, 3, 3, 5 haben und Du SELECT TOP 3 … wählst, bekommst Du 5 Datensätze, nämlich 1, 2, 3, 3, 3. Macht auch Sinn, denn mit welchem Recht soll Access entscheiden können, welchen der „3“-Datensätze Du willst und welchen nicht.

Eine zweite Anfrage, für die ich kein neues Thema eröffnen
möchte ist folgendes:
Ich habe eine Datei, die im Netzwerkverzeichnis liegt (access
natürlich). Diese Datei soll von mehreren Leuten bearbeitet
werden können. Dafür wäre jetzt noch eine bzw zwei
optimierung(en) notwendig…
Zum einen: (wie) Kann ich es einrichten, dass mehrere User
diese Datei gleichzeitig öffnen können?
zum Zweiten: Kann ich beim aktivieren einer Seite eines
Registersteuerelements prüfen, ob die Datei noch in diesem
Verzeichnis liegt und eine Warnung ausgeben, wenn sie dort
nicht liegt („Warnung, dies ist eine lokale Kopie, änderungen
werden nur in dieser Kopie wirksam“)

Zum einen solltest Du die verwendeten DB trennen, wenn nicht schon geschehen, in Frontend/Benutzerschnittstelle und Backend/Daten. Die Daten, die auf dem Netz (oder auch lokal) liegen, verknüpfst Du. Über die Connect-Eigenschaft der Tabelle kannst Du den Speicherort der Quell-DB auslesen. Wenn Du auf die Tabelle zugreifen willst, die Quelldatenbank aber nicht vorhanden ist (z. B. weil das Netzlaufwerk getrennt wurde), gibt’s eine Fehlermeldung, die Du abfangen kannst und so entweder auf eine lokale DB umverdrahtest, damit man wenigstens weiter arbeiten kann, oder Du gibst gleich die Meldung „Gearbeitet wird im Büro, gefeiert zu Hause“ aus.

Wenn auch ein lokales Arbeiten nötig sein sollte oder viele Leute auf die zentrale DB zugreifen wollen, würde ich die Datenbank replizieren. Heißt: Datenmaster liegt zentral auf dem Netzlaufwerk, ein Replikat lokal auf jedem Rechner der Anwender. Diese arbeiten auf der lokalen Version (weniger Netzlast, keine Zugriffskonflikte, schneller) und replizieren ihre Daten zu bestimmten Zeitpunkten oder auf Knopfdruck mit der zentralen Master-DB.

Gruß, Manfred

Vielen Dank
Munich

erst mal Dankeschön für die Tipps :wink:

Zum einen: (wie) Kann ich es einrichten, dass mehrere User
diese Datei gleichzeitig öffnen können?

Weitere Benutzer können dann zugreifen, wenn niemand diese DB
im Exklusivzugriff hat. Extras/Optionen/Weitere, dort den
Standard-Öffnungsmodus auf „Freigegeben“ setzen. Fertig.

hmmm… das ist bei mir aber eigentlich auch so eingestellt…
aber vllt wars auch ein doofer Zufall bei mir, dass ich dir Datenbank gerade komprimiert habe als der andere Rechner drauf zugreifen wollte…

zum Zweiten:

Schrubest Du nicht, Du hättest noch EINE Frage? :wink:

i’m so sorry :smile:

Kann ich beim aktivieren einer Seite eines
Registersteuerelements prüfen, ob die Datei noch in diesem
Verzeichnis liegt und eine Warnung ausgeben, wenn sie dort
nicht liegt („Warnung, dies ist eine lokale Kopie, änderungen
werden nur in dieser Kopie wirksam“)

Auch das geht. Am praktischsten wäre es allerdings, wenn Du
den Pfad zu Deiner "Echt"datei in einer Variablen hinterlögest
und beim Aufruf jeweils genau diese verknäpfetest. Das sollte
per Funktionsaufruf im AutoExec geschehen.

nein, eigentlich gehts mir nur um ein Registerblatt…
Es ist das einzige bzw gibt es schon mehrere, aber die kann ich ja extra abfangen, bei dem auch änderungen vorgenommen werden können.
Vorrangig ist die Datenbank ein Tool um unbekannte Abkürzungen zu finden…

einen dezentralen abgleich möchte ich eigentlich vermeiden…

PS ^^
wie mach ich das denn nun mit dem Prüfen, welcher Pfad es ist? *liebguck*

wie mach ich das denn nun mit dem Prüfen, welcher Pfad es ist?
*liebguck*

Bei eingebundener Tabelle: Auslesen der Connect-Eigenschaft des TableDef-Objekts (CurrentDb.TableDefs(„eineEingebundeneTabelle“).Connect ergibt „;DATABASE=Dateiname…“)

Bei aktueller Datenbank: CurrentDb.Name ist der komplette Pfad.

Dann halt unterscheiden, ob das Ding mit „C:“ anfängt oder mit Deiner Netzwerkressource…

Gruß, Manfred

1 Like