none
Runtime 3061 too few parameters expected 1

    Frage

  • Hallo

    Würde gerne den folgenden SQL String in einen Recordset einlesen:

    sql = "SELECT (Sum(qMaschinenStatistik.Menge)) AS SummevonMenge, "
    sql = sql & "Sum(qMaschinenStatistik.Umsatz) AS SummevonUmsatz"
    sql = sql & " FROM qMaschinenStatistik;"

    Set rs = CurrentDb.OpenRecordset(sql)

    qMaschinenStatistik ist ja ein Query,ist das allenfalls das Problem, denn in diesem Query werden Parameter abgefragt.

    Konkret das Jahr, welches in einem Form vom User gewählt werden kann.

    Hier noch der Query (qMaschinenStatistik)

    SELECT tDokPos.AufNr, tDokPos.Pos, tDok.AufDat AS [AB gedruckt], tDokPos.Termin, tDokPos.ArtNr, tArtikel.ArtBez, tLiefPos.Lief AS LS, tLief.LiefDat, Year([LiefDat]) AS LiefDatJarh, [LiefDat]-[AufDat] AS Wochentage, ([LiefDat]-[AufDat])/7 AS Wochen, tLiefPos.Menge, tLiefPos.Preis, [tLiefPos]![Menge]*[tLiefPos]![Preis] AS Umsatz
    FROM tArtikel RIGHT JOIN (tLief RIGHT JOIN (tDok RIGHT JOIN (tDokPos RIGHT JOIN tLiefPos ON (tDokPos.Pos = tLiefPos.Pos) AND (tDokPos.AufNr = tLiefPos.AufNr)) ON tDok.AufNr = tDokPos.AufNr) ON (tLief.Lief = tLiefPos.Lief) AND (tLief.AufNr = tLiefPos.AufNr)) ON tArtikel.ArtNr = tDokPos.ArtNr
    WHERE (((tDokPos.ArtNr) Like "MV.6??.??" Or (tDokPos.ArtNr) Like "MV.0??.??") AND ((Year([LiefDat]))=[Forms]![fManagementSummary]![AuswahlJahr]))
    ORDER BY tDokPos.AufNr, tDokPos.Pos, tLief.LiefDat;

    Muss man das als SQL String in den obigen String einbauen????

    Danke für Hinweise

    Kann jemand helfen? Habe den String absichtlich aufgeteilt, vorher war alles an einem Stück; der Fehler aber der selbe.

    Vielen Dank für eure Inputs.

    Rene


    Mittwoch, 11. Juli 2012 12:05

Antworten

Alle Antworten

  • Hallo,

    René Stutz wrote:

    Würde gerne den folgenden SQL String in einen Recordset einlesen:

    sql = "SELECT (Sum(qMaschinenStatistik.Menge)) AS SummevonMenge, "
    sql = sql & "Sum(qMaschinenStatistik.Umsatz) AS SummevonUmsatz"
    sql = sql & " FROM qMaschinenStatistik;"

    Set rs = CurrentDb.OpenRecordset(sql)

    qMaschinenStatistik ist ja ein Query,ist das allenfalls das Problem, denn in diesem Query werden Parameter abgefragt.

    Konkret das Jahr, welches in einem Form vom User gewählt werden kann.

    Hier noch der Query (qMaschinenStatistik)

    SELECT tDokPos.AufNr, tDokPos.Pos, tDok.AufDat AS [AB gedruckt], tDokPos.Termin, tDokPos.ArtNr, tArtikel.ArtBez, tLiefPos.Lief AS LS, tLief.LiefDat, Year([LiefDat]) AS LiefDatJarh, [LiefDat]-[AufDat] AS Wochentage, ([LiefDat]-[AufDat])/7 AS Wochen, tLiefPos.Menge, tLiefPos.Preis, [tLiefPos]![Menge]*[tLiefPos]![Preis] AS Umsatz
    FROM tArtikel RIGHT JOIN (tLief RIGHT JOIN (tDok RIGHT JOIN (tDokPos RIGHT JOIN tLiefPos ON (tDokPos.Pos = tLiefPos.Pos) AND (tDokPos.AufNr = tLiefPos.AufNr)) ON tDok.AufNr = tDokPos.AufNr) ON (tLief.Lief = tLiefPos.Lief) AND (tLief.AufNr = tLiefPos.AufNr)) ON tArtikel.ArtNr = tDokPos.ArtNr
    WHERE (((tDokPos.ArtNr) Like "MV.6??.??" Or (tDokPos.ArtNr) Like "MV.0??.??") AND ((Year([LiefDat]))=[Forms]![fManagementSummary]![AuswahlJahr]))
    ORDER BY tDokPos.AufNr, tDokPos.Pos, tLief.LiefDat;

    Kannst du qMaschinenStatistik oeffnen, ohne dass die Parameterabfrage
    kommt? Wenn nicht, liegt da das Problem. Das Formular fManagementSummary
    muss zum Zeitpunkt der Ausfuehrung geoeffnet sein und das Feld AuswahlJahr
    muss existieren und einen gueltigen Wert enthalten. Ist das alles der Fall?

    Gruss - Peter


    Mitglied im http://www.dbdev.org
    FAQ: http://www.donkarl.com

    Mittwoch, 11. Juli 2012 12:35
    Moderator
  • Hallo Peter

    Also, ich kann qMaschinenStatistik öffnen wenn das Formular fManagementSummary offen ist, dann kommen die Daten. In der Query bezieht sich das Jahr ja auf

    das Jahres-Feld im Formular. (Auswahl des Users)

    Es scheint eher etwas am Syntax des SQL Strings zu liegen; aber eben, wo??

    Der Fehler: Runtime 3061 (too few parameters....

    Der Grund für den SQL STring: ich möchte gerne ca. 10 versch. Varianten selektieren und möchte nicht für jede Variante eine Query speichern in der Db, ist etwas unschön; daher wollte ich jede Variante im Code mittels SQL in einen Recordset einspielen und dann von dort die Wert an die Felder übergegben. (primär zeit.varianten: Q1, Q2, Q3, Q4, immer für die selben Daten)

    Stehe einwenig am Berg....

    Gruss

    Rene


    Mittwoch, 11. Juli 2012 12:49
  • Hallo, René!
    René Stutz wrote:
    > ...
    > Set rs = CurrentDb.OpenRecordset(sql)
    > ...
    > WHERE ...
    > ((Year([LiefDat]))=[Forms]![fManagementSummary]![AuswahlJahr]
    > ...
    Das liegt am Recordset d.h. an DAO. s.
    Ein Parameter wurde erwartet
    http://www.donkarl.com?FAQ6.4
    --
    Servus
    Karl
    *********

    Mittwoch, 11. Juli 2012 13:30
  • Sali Karl

    Vielen Dank für deine Antwort; nun, was heisst das jetzt, was ist zu tun damit es läuft; kann dir nicht ganz folgen,sorry.....

    Gruss

    Rene

    Mittwoch, 11. Juli 2012 14:07
  • Hallo René,

    René Stutz schrieb folgendes:

    Vielen Dank für deine Antwort; nun, was heisst das jetzt, was ist zu tun damit es läuft; kann dir nicht ganz folgen,sorry.....

    hast Du den FAQ Artikel gelesen den Dir Karl genannt hat?

    mache ein Eval vor Deinen Formularbezug...

    WHERE ...
    (Year([LiefDat]))=Eval("Forms!fManagementSummary!AuswahlJahr")

    Gruß
    Gunter


    Access FAQ: http://www.donkarl.com

          http://www.avenius.de - http://www.AccessRibbon.de
    http://www.ribboncreator.de - http://www.ribboncreator2010.de

    • Als Antwort markiert René Stutz Mittwoch, 11. Juli 2012 14:57
    Mittwoch, 11. Juli 2012 14:18
    Moderator
  • Hallo Gunter

    Merci für deine Hilfe, ich meine jetzt komme ich der Sache näher.... Herzlichen Dank !!

    Gruss

    René

    Mittwoch, 11. Juli 2012 14:58