A00: Fehler 3001 "Ungültiges Argument" beim Ausführen einer Abfrage mit VBA/DAO

26/03/2008 - 14:25 von Gerald Aichholzer | Report spam
Hallo NG,

warum liefert folgende Abfrage beim Ausführen mit VBA/DAO
den Fehler 3001 "Ungültiges Argument":

PARAMETERS pidProjekt Long;
SELECT Sum(RechnungER.Netto) AS Netto
FROM RechnungER
INNER JOIN RechnungZuordnungER
ON RechnungER.idER = RechnungZuordnungER.fiER
WHERE
(
RechnungZuordnungER.fiProjekt)=[pidProjekt]
AND
RechnungZuordnungER.PeriodeJahr=GetActiveAppGJahr()
)
OR
(
RechnungZuordnungER.fiProjekt)=[pidProjekt])
AND
RechnungZuordnungER.fiAR) Is Null
);


Wenn ich die Abfrage mit VBA/ADO ausführe, dann gibt es
keinen Fehler. Ebenso, wenn ich den Aufruf der Funktion
GetActiveAppGJahr() durch den konkreten Wert ersetze.
Allerdings funktioniert das Verwenden dieser Funktion
in allen anderen (bis auf eine weitere) Abfragen ohne
Probleme.


Aufruf der Abfrage mit VBA/DAO:

Dim qd As DAO.QueryDef
Dim rs As DAO.Recordset
Set qd = CurrentDb.QueryDefs("Y_Q2")
qd.Parameters("pidProjekt") = 1
Set rs = qd.OpenRecordset() ' Fehler 3001


Aufruf der Abfrage mit VBA/ADO:

Dim cmd As ADODB.Command
Dim rs As ADODB.Recordset
Set cmd = New ADODB.Command
Set cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandText = "Y_Q2"
cmd.CommandType = adCmdTable
cmd.Parameters.Append _
cmd.CreateParameter("pidProjekt", adInteger, adParamInput, , 1)
Set rs = cmd.Execute


Inhalt der Funktion GetActiveAppGJahr:
GetActiveAppGJahr = _
tLookup("[GJahr]", "[ActiveAppUser]", _
"[Benutzer] = '" & fOSUserName() & "'")



Vielen Dank für jegliche Hilfe und beste Grüße,
Gerald
 

Lesen sie die antworten

#1 Karl Donaubauer
26/03/2008 - 14:44 | Warnen spam
Gerald Aichholzer wrote:
...
warum liefert folgende Abfrage beim Ausführen mit VBA/DAO
den Fehler 3001 "Ungültiges Argument":

PARAMETERS pidProjekt Long;
SELECT Sum(RechnungER.Netto) AS Netto
FROM RechnungER
INNER JOIN RechnungZuordnungER
ON RechnungER.idER = RechnungZuordnungER.fiER
WHERE
(
RechnungZuordnungER.fiProjekt)=[pidProjekt]
AND
RechnungZuordnungER.PeriodeJahr=GetActiveAppGJahr()
)
OR
(
RechnungZuordnungER.fiProjekt)=[pidProjekt])
AND
RechnungZuordnungER.fiAR) Is Null
);
...



zur Sicherheit nachgefragt:

Die Klammern können sich so nicht ausgehen.
Ist dir nur hier beim Reinkopieren jeweils eine ( vor

RechnungZuordnungER.fiProjekt

abhanden gekommen?

HTH
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com
SQL Server-Entwickler-Konferenz: www.donkarl.com/?SEK
Nürnberg 12./13.4. + 19./20.4.2008

Ähnliche fragen