tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
3472
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Hallo,

    ich experimentiere gerade ein bisschen mit Access herum.
    In der DB git es im Moment 3 Tabellen (Ok, es sind mehr aber die 3 sind wichtig):

    a) Zimmer (Nummer, Beschreibung, Artikelgruppe und Preis),
    b) Ausstattung (Artikelnummer und Ausstattungsmerkmal) und
    c) Reservierung (Artikelnummer, Von und Bis)

    So und hier das Problem :
    Ein Zimmer kann an verschiedenen Tagen reserviert/vermietet sein. Wenn ich jetzt wissen will welche Zimmer einer bestimmten Gruppe, sagen wir vom 15.01.07 bis 19.01.07 verfügbar sind, ermittle ich dies über zwei gespeicherte Abfragen.
    Die Daten (Datum von, Datum bis und Gruppe) stammen von dem Formular von dem aus die Abfrage(n) aufgerufen werden.

    Abfrage1:
    Code :
    1
    2
    3
    
    SELECT reservierung.zimmernummer, reservierung.datum_von, reservierung.datum_bis
    FROM reservierung
    WHERE (((reservierung.datum_von) Between [Forms]![reservierung].[txtDatum_von] And [Forms]![reservierung].[txtDatum_bis])) OR (((reservierung.datum_bis) Between [Forms]![reservierung].[txtDatum_von] And [Forms]![reservierung].[txtDatum_bis])) OR (((reservierung.datum_von)<=[Forms]![reservierung].[txtDatum_von]) AND ((reservierung.datum_bis)>=[Forms]![reservierung].[txtDatum_bis]));

    Ermittelt zunächst die Zimmer die NICHT verfügbar sind.

    Abfrage2:
    Code :
    1
    2
    3
    4
    
    SELECT zimmer.nummer, zimmer.beschreibung
    FROM zimmer LEFT JOIN Abfrage1 ON zimmer.nummer = Abfrage1.zimmernummer
    WHERE (((Abfrage1.zimmernummer) Is Null) AND ((zimmer.gruppe) Like [Forms]![reservierung].[lstGruppe]))
    ORDER BY zimmer.nummer;

    Baut auf dem Ergebnis von Abfrage1 auf und kehrt es um. Somit erhalte ich die gewünschten Daten.

    Jetzt will ich aber dieses Ergebnis noch "verfeinern" indem ich bestimmte Ausstattungen hinzufüge.

    Mein Problem ist ich weiß nicht wie viele Ausstattungen es gibt und ich weiß auch nicht wie viele davon als Abfragekriterium ausgewählt werden. Deshalb kann ich das nicht als fertige Abfrage speichern.

    Ich will jetzt in einer For-Next Schleife einen SQL-String erstellen der auf dem Ergebnis der Abfrage2 aufbaut.

    Allerdings erhalte ich immer die Fehlermeldung "Too few Parameters. Expected 3 (oder auch 4)".

    Hier mal der Code wie ich es bis jetzt versuche (zum testen habe ich hierbei allerdings nur das Feld "preis" als Abfragekriterium genommen, aber egal) :

    Code :
    1
    2
    3
    4
    5
    
    db.QueryDefs("Abfrage2")![Forms!reservierung.txtDatum_von] = Forms![reservierung]![txtDatum_von]
    db.QueryDefs("Abfrage2")![Forms!reservierung.txtDatum_bis] = Forms![reservierung]![txtDatum_bis]
    db.QueryDefs("Abfrage2")![Forms!reservierung.lstGruppe] = Forms![reservierung]![lstGruppe]
     
    Set rs = db.OpenRecordset("SELECT Abfrage2.nummer, Abfrage2.beschreibung FROM Abfrage2 WHERE Abfrage2.preis >= '1'")

    Der obige Fehler deutet eigentlich darauf hin, das ein Feldname falsch geschrieben ist oder so. Ich habe es aber sowohl mit "Abfrage2.nummer" als auch mit "zimmer.nummer" und auch nur mit "nummer" versucht. Der Fehler bleibt immer der selbe.

    Habt ihr eine Erklärung oder ein Beispiel wie das aussehen muss?
    Ich hoffe ihr könnt mir da (mal wieder) weiterhelfen.

    Gruß Thomas
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  2. #2
    Ork6 Ork6 ist offline Grünschnabel
    Registriert seit
    Jan 2007
    Beiträge
    3
    Hallo Thomas,

    die Abfrage kann nicht funktionieren, da Abfrage2 kein Feld mit namen "preis" liefert.

    ... WHERE Abfrage2.preis >= '1'")
    funktioniert nur, wenn es in Abfrage2 auch ein Feld "preis" gibt

    Ändere die Abfrage2 in
    Code :
    1
    
    SELECT zimmer.* FROM zimmer  ....

    Dann sollte die Abfrage funktionieren.

    Grüße
    Uwe
     

Ähnliche Themen

  1. » Access MS Access Abfrage
    Von JJB im Forum Office-Anwendungen
    Antworten: 2
    Letzter Beitrag: 01.06.10, 08:16
  2. Access Abfrage -> VBA DAO wie?
    Von keeper99 im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 04.03.08, 15:42
  3. Access Abfrage
    Von Winner im Forum Office-Anwendungen
    Antworten: 0
    Letzter Beitrag: 12.12.07, 10:34
  4. Access und Abfrage !
    Von pglw im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 27.02.05, 12:49
  5. Access-Abfrage
    Von KhanSingh im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 04.03.04, 15:19