Neuigkeiten:

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

Mobiles Hauptmenü

laufende Nummerierung in Parameterabfrage

Begonnen von TTB, Oktober 09, 2016, 14:09:21

⏪ vorheriges - nächstes ⏩

TTB

Hallo liebe Leute,

ein kleines Vorwort: ja, ich habe bereits gesucht und nein die Lösung von Donkarl´s FAQ 3.11 hilft irgendwie auch nicht.

Wenn ich in einer Abfrage die jeweiligen Datensätze durchnummerieren möchte, erscheint statt der laufenden Nummer bzw. der Position in der Abfrage (je nach Abwandlung des Codes) IMMER ein unverständlicher Wert, ein Fehler oder (wenn ich den Beispielcode vom AccessSupport oder Donkarl ohne Änderung übernehme) die Position des Datensatzes in der Haupttabelle. Den Code habe ich grad leider nicht dabei, bin unterwegs und recherchiere nur.
Was kann ich tun? Jemand eine Idee woran das liegen könnte?

lG
Chris

Hondo

Hallo,
und warum zeigst du uns deine Abfrage nicht einfach?

Andreas

TTB

Siehe oben! Ich bin nicht am Rechner, mit dem ich die Datenbank mache, sondern habe nur recherchiert, um eventuell schon einen Lösungsansatz zu haben, wenn ich wieder dran sitze.

Sollte ich bin dahin keinen gefunden haben, stell ichs hier gern rein.

Danke für´s Lesen!

ebs17

ZitatWas kann ich tun?

Korrigiere Deine Abwandlung. Das Original funktioniert ja unbestritten.
Mit freundlichem Glück Auf!

Eberhard

TTB

#4
Ich werde die Abfrage bald hier posten und die Frage dann nochmal stellen.
Vielleicht könnt ihr mir dann besser helfen.

MzKlMu

Hallo,
ZitatAber da steht doch überall, dass es nicht für Parameterabfragen gilt.
wo steht das ?
Gruß Klaus

TTB

Entschuldige MzKlMu - ich habe bemerkt, dass mein Beitrag nicht sehr konstruktiv war und habe ihn daher abgeändert.

Dennoch hier die Info: http://www.donkarl.com?FAQ3.11   

Dort steht, dass es nicht funktioniert, wenn man einschränkende Kriterien benutzt. Und es wird auf eine Stelle verwiesen, die genau das gleiche macht, wie der Code von DonKarl.

lG

TTB

So liebe Leute,

nun auch mit Code:

SELECT tblProjekte.ProjektID, tblKunden.Anrede, tblKunden.Vorname, tblKunden.Name, tblKunden.Mobil, tblKunden.FestnetzPrivat, tblKunden.TelefonBer, tblKunden.eMail, tblTeilnahmen.Status, tblAuftraggeber.AName, tblProjekte.Thema, tblProjekte.Datum, tblProjekte.Uhrzeit, [Vorname] & " " & +[Name] AS NameKomplett, (Select Count (*) FROM [tblTeilnahmen] as X WHERE [X].[KID] < [tblTeilnahmen].[KID])+1 AS Nummer
FROM tblKunden INNER JOIN ((tblAuftraggeber INNER JOIN tblProjekte ON tblAuftraggeber.AID = tblProjekte.AID) INNER JOIN tblTeilnahmen ON tblProjekte.ProjektID = tblTeilnahmen.ProjektID) ON tblKunden.KID = tblTeilnahmen.KID
WHERE (((tblProjekte.ProjektID)=([Formulare]![frmProjekte]![lstProjekte])))
ORDER BY tblKunden.Name, tblProjekte.Datum DESC , tblProjekte.Uhrzeit DESC;


Ich habe nicht aufgehört zu suchen und bin dennoch nicht fündig geworden. Mir kommt da nur die Lösung, das Ergebnis der Abfrage in eine neue Tabelle zu schreiben und dann dort zu zählen. Aber das empfinde ich ehrlich gesagt als keine besonders schöne Lösung.

Vielleicht habt ihr ja eine Idee. Danke schonmal fürs Lesen.

Chris

Lachtaube

Wo(für) werden denn die Nummern überhaupt benötigt?

Ansonsten sollte auch ein Bezug zum Projekt in der Unterabfrage vorhanden sein - sonst würden ja alle Teilnahmen berücksichtigt werden.

BTW: Wenn man sich die Mühe macht, den SQL-Text selbst in einem Editor mit sinnvollen Zeilenumbrüchen zu versehen, bleibt das den Helfern erspart und die Abfrage kann sogar hier im Forum gelsen und verstanden werden. :( SELECT tblProjekte.ProjektID,
       tblKunden.Anrede,
       tblKunden.Vorname,
       tblKunden.Name,
       tblKunden.Mobil,
       tblKunden.FestnetzPrivat,
       tblKunden.TelefonBer,
       tblKunden.eMail,
       tblTeilnahmen.Status,
       tblAuftraggeber.AName,
       tblProjekte.Thema,
       tblProjekte.Datum,
       tblProjekte.Uhrzeit,
       [Vorname] & " " & +[Name] AS NameKomplett,
       (Select Count(*)
          FROM tblTeilnahmen as X
         WHERE [X].[KID] < tblTeilnahmen.KID) + 1 AS Nummer
  FROM tblKunden
       INNER JOIN ((tblAuftraggeber
                    INNER JOIN tblProjekte
                            ON tblAuftraggeber.AID = tblProjekte.AID)
                   INNER JOIN tblTeilnahmen
                           ON tblProjekte.ProjektID = tblTeilnahmen.ProjektID)
               ON tblKunden.KID = tblTeilnahmen.KID
WHERE (((tblProjekte.ProjektID) = ([Formulare]![frmProjekte]![lstProjekte])))
ORDER BY tblKunden.Name,
          tblProjekte.Datum DESC,
          tblProjekte.Uhrzeit DESC;
Grüße von der (⌒▽⌒)

TTB

Hallo Lachtaube,

die Kunden nehmen bei uns an verschiedenen "Projekten" teil.
Zur schnelleren Kommunikation (grade wenn sich ein Teilnehmer/Kunde an der Rezeption anmeldet oder ein Kunde nicht erscheint, ist es besser) und der Übersichtlichkeit wegen, wäre es besser direkt eine laufende Nummer zu haben.

Bisher lief es per manuell befüllter Excel-Tabelle, was ich ja gerne wegautomatisieren würde^^ Und da möchte ich den Leuten nicht die laufende Nummer klauen ;)

Doch scheint sich das hier eher als eine Schlacht denn als kleines Problem zu entpuppen :(

Bzgl des Editors:
Ich wusste nicht, dass so etwas möglich ist. Als ich meine ersten Abfragen per Hand mit Zeilenumbrüchen und Einzügen im SQL-Fenster von Access geschrieben habe, kamen einerseits Fehlermeldungen, andererseits hat mir Access das ganze wieder in Fließtext umgewandelt. ich habe diese Fehler auf die Formatierung bezogen und mich nicht weiter drum gekümmert, da die meißten Codebeispiele, die ich bei meinen Suchen hier im Forum gefunden habe ebenso formatiert waren wie meine.
Habe den von Dir formatierten Text so eingefügt und es läuft. Welchen Editor hast Du denn genommen? Ich würde den SQL-Text meiner Abfragen beim Erstellen gerne ebenso formatieren, wie meinen VBA Code.

Lachtaube

In der Regel ist das Formatieren von SQL-Abfragetexten in Access für die Katz, weil bei der Verwendung des grafischen Abfrageeditors der SQL-Text neu geschrieben wird. Aber hier im Forum ist es immer ganz nett, Abfragetexte auch lesen zu können. :) Im Prinzip ist jeder Text-Editor dazu geeignet, man muss ja nur ein paar Zeilenumbrüche und ggf. Leerzeichen einfügen, um den Code lesbar zu machen.

Noch einmal zum Thema: Bei Änderung der Teilnehmer ändert sich ggf. auch die Nummer von Teilnehmern, was bei einer Aufzählung (z. Bsp. in einem Bericht - da geht die Nummerierung übrigens auch viel einfacher zu erstellen) kein Problem darstellt. Will man aber einen Teilnehmer einer Veranstaltung über diese Nummer adressieren, so sollte man sie nur mit Vorsicht zu genießen.   
Grüße von der (⌒▽⌒)

DF6GL

Hallo,

vielleicht hilft ja schon , den Feldnamen "Name" (überall) in Eckklammern zu schreiben:

tblKunden.[Name]




PS: 

und [Formulare] als [Forms]  zu schreiben...
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

Beaker s.a.

ZitatIm Prinzip ist jeder Text-Editor dazu geeignet, man muss ja nur ein paar Zeilenumbrüche und ggf. Leerzeichen einfügen, um den Code lesbar zu machen.
Oder man bemüht einen der zahlreich im Netz vorhandenen SQL_Formatter.
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)