Frage

habe ich eine Abfrage in SQL-Ansicht mit MS Access:

select floor(num1) from t1;

Wenn ich es laufen, bekomme ich "nicht definierte Funktion floor".

Ich bekomme ähnliche Fehler für Ceil, Mod, Power, Sign, Sqrt, Trunc und initcap Funktionen.

Hat der Access-Datenbank-Engine SQL-Syntax äquivalente Funktionen haben?

War es hilfreich?

Lösung

Ersetzen Floor () mit Int (). Das erfuhr ich von den Access-Hilfe-Dateien suchen, in diesem Fall trifft F1, während in den Abfrage-Designern, und die Suche nach „Funktionen“. Das hat mich zu einem Hilfethema zu vergleichen VBA und T-SQL-Funktionen.

Sie sollten wahrscheinlich einen Blick auf die SQL-Referenz Access-Datenbank-Engine haben . Ich kann nicht eine gute Online-Referenz für Funktionen, die durch den Jet / ACE und Access Ausdruck Dienste unterstützt werden. Aus unbekannten Gründen hat sich die Access-Hilfe nicht Jet / ACE Ausdrücke da Jet 3.0 enthalten und diese im Alter von Ressource wurde schließlich von MSDN ein oder zwei Jahren entfernt: (

Beachten Sie, dass der Jet / ACE-Expression Service für den Zugriff von außen eine wesentlich kleineren Teilmenge von Funktionen unterstützt, die möglich ist, den Zugang Expression Service zu verwenden, wenn Ihr SQL innerhalb Access-2007 ausgeführt Grob gesagt, die VBA5 Funktionen (im Unterschied Methoden), die einfache Datentypen (im Unterschied beinhalten von, sagen wir, Arrays oder Objekte) sind außerhalb der Access-Benutzeroberfläche unterstützt; für eine ungefähre Liste von Funktionsnamen finden Sie in die ‚Use Sandbox-Modus-Operationen mit Jet 4.0 Service Pack 3 und später‘ Abschnitt von dieser MSDN-Artikel .

Auch sollte die Funktionen Referenz in der VBE-Hilfe ein Ausgangspunkt sein.

Die Hilfedateien sind nicht perfekt, aber ein wenig suchen sollten Sie bekommen, was Sie brauchen.

Andere Tipps

Public Function Floor(ByVal x As Double) As Double
'Be Because VBA does not have a Floor function.
'Works for positive numbers
'Turns 3.9 -> 3
'Note: Round(3.9) = 4

    Dim s As String, dPos As Integer
    s = CStr(x)
    dPos = InStr(s, ".")
    Floor = CLng(Left(s, dPos - 1))
End Function

Wie bereits erwähnt, Boden in Zugang nicht verfügbar ist, sollten Sie int () als Alternative verwenden. Wenn Sie sich mit Boden bestehen, können Sie immer eine VBA-Modul-Funktion in Ihrer MDB-Datei auf unter ähnlicher erstellen, aber das ist wahrscheinlich übertrieben.

Public Function floor(dblIn As Double, dec As Integer) As Double
  decPosition = InStr(Str(dblIn), ".")
  x = Left(dblIn, decPosition + dec - 1)
  floor = x
End Function

ähnlich wie bei den anderen mathematischen Operationen, die Sie wie oben beschrieben Sie zusätzliche Funktionen erstellen können diesen Satz von Funktionen zu erstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top