none
Parameterabfrage: Datentypen in Kriterienausdurck unverträglich

    Frage

  • Ich versuche einen Parameter vom Typ Date (Access) an eine Parameterabfrage zu übergeben und bekommen dann bei .Openrecordset o.g. Meldung.

    Die zugrundeliegenden Tabellen liegen auf einem SQL-Server.

    Führe ich die Abfrage in Access direkt (also ohne VBA) aus, dann bekomme ich nach Eingabe eines gültigen Datums eine andere Meldung: "Dieser Ausdruck wurde falsch angegeben oder ist zu komplex ..."

    Der SQL-Text ist wie folgt:

    PARAMETERS [@Suchkrit] DateTime; SELECT DISTINCT [proband_name] & ", " & [proband_Vorname] & ", *" & [proband_gebdatum] AS Personalien, Probanden.ID_Proband FROM (Probanden LEFT JOIN GA_Auftraege ON Probanden.ID_Proband = GA_Auftraege.GA_Proband_Nr) LEFT JOIN Rechnungen ON GA_Auftraege.ID = Rechnungen.RE_AuftragNr WHERE (((GA_Auftraege.GA_Unfalltag)=[@Suchkrit])) OR (((GA_Auftraege.GA_Auftrag_erhalten)=[@Suchkrit])) OR (((GA_Auftraege.GA_abgeschlossen)=[@Suchkrit])) OR (((GA_Auftraege.GA_bezahlt)=[@Suchkrit])) OR (((Rechnungen.RE_Rechnung_Datum)=[@Suchkrit])) OR (((Probanden.Proband_GebDatum)=[@Suchkrit]));


    Alle Datumsfelder sind in den SQL-Tabellen vom Type 'datetime2'

    Ergänzung: Habe in den SQL-Tabellen alle Datumsspalten auf den Typ "Date" geändert - keine Änderung.


    • Bearbeitet NicoNi Samstag, 21. September 2013 15:00
    Samstag, 21. September 2013 14:54

Alle Antworten

  • In der FAQ findest Du einen Hinweis auf die Übergabe von Parametern an eine Abfrage: 6.16 Parameterabfrage per VBA öffnenhttp://www.donkarl.com?FAQ6.16

    Und zusätzlich könnte dieser Hinweis helfen: 6.8 Datum an SQL-String übergeben http://www.donkarl.com?FAQ6.8

    BTW: Was ist mit deinen anderen Threads? Weshalb antwortest Du dort nicht mehr?


    Servus
    Winfried

    GPOs: http://www.gruppenrichtlinien.de/
    WSUS Package Publisher: http://wsuspackagepublisher.codeplex.com/

    Samstag, 21. September 2013 19:59
  • Hi,

    hatten wir das nicht schon mal? [@Suchkrit] sorgt dafür, dass ein Spaltenname gesucht wird. Du willst ja aber einen Datumswert übergeben, oder? Falls ja, entferne die [...] um @Suchkrit.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 21. September 2013 20:57
    Moderator
  • Ja und Nein,

    das andere Problem betraf einen Execute-SQL-Task in SSIS.

    Hier ist "nur" eine Parameterabfrage in Access mit zugrundeliegenden SQL-Tabellen das Problem.

    Die Sache scheint noch komplizierter:

    - Entfernen der [] hat nichts gebracht.

    - Ein kleiner Erfolg ist eingetreten, als ich den Typ in Text geändert habe und zu testzwecken NUR im Geburtsdatum suche:

     Eingabe von 1.1.1900 bringt den Testdatensatz, aber mit "1911-01-01 00:00:00" als Geburtsdatum (naja Schönheitsfehler)

    BTW: In einem ersten Ansatz hatte ich von Hand eine Gespeicherte Prozedur in SSMS angelegt, die genau diese Funktion hat und von Hand gut funktioinert.

    Kann ich diese Prozedur durch meinen VBA-Code aufrufen und das geliferte Recordset als Quelle für eine Listbox nutzen ?

    Über den Tabellenverkbnüpfungsmanager komme ich wohl nicht dran.

    Kann ich da ebenfalls DAO nutzen ?

    Sonntag, 22. September 2013 07:55
  • Ja, Du kannst DAO dafür nutzen. In http://support.microsoft.com/kb/184749

    findest Du die passenden Beispiele. In Ein weiteres Beispiel findest Du was Du suchst.



    Servus
    Winfried

    GPOs: http://www.gruppenrichtlinien.de/
    WSUS Package Publisher: http://wsuspackagepublisher.codeplex.com/

    Sonntag, 22. September 2013 08:41
  • Hier http://www.accessblog.de/?tag=stored-procedures findest Du weitere Hinweise zu SPs und Access.


    Servus
    Winfried

    GPOs: http://www.gruppenrichtlinien.de/
    WSUS Package Publisher: http://wsuspackagepublisher.codeplex.com/

    Sonntag, 22. September 2013 08:54