Forums Neueste Beiträge
 

SQL Syntax im Code funktioniert nicht, jedoch in der Abfrage

29/01/2010 - 16:40 von Christoph | Report spam
Hallo zusammen,
ich würde mich freuen, wenn mir jemand bei einem SQL Syntax Problem helfen
könnte. Ich möchte eine Abfrage generieren, die mir negative
Umsatzabweichungen von mehr als X Prozent anzeigt. X wird über eine MSG Box
abgefragt.
Anschließend wird die SQL Definition für die Abfrage mittels zwei String
Variablen zusammengestellt.
Ich benötige 2 Variablen, da ich mit der gleichen Routine auch positive
Umsatzabweichungen anzeige. In diesem Fall lautet die SQL Definition der
Variablen 2 anders. Aber das nur als Erklàrung, warum ich mit zwei Variablen
arbeite… Mit dem Problem hat das nichts zu tun.

Das (verkürzt dargestellte) Programm sieht wie folgt aus:

Private Sub UmsatzverlusteRechnen()
Dim DB As Database
Dim Antwort As String
Dim Prozent As Single
Dim Abfrage As QueryDef
Dim Weisung1 As String
Dim Weisung2 As String

Set DB = CurrentDb()
Set Abfrage = DB.CreateQueryDef("Abfrage Umsatzverànderungen")
Antwort = InputBox("Ab wieviel Prozent NEGATIVE Abweichung sollen Datensàtze
angezeigt werden?", "Wieviel Abweichung?", "20")
Prozent = CSng(Antwort) / 100

Weisung1 = "SELECT Umsatzvergleich.[Name der Firma],
Umsatzvergleich.UmsatzAktuell, Umsatzvergleich.UmsatzVorjahr,

IIf([UmsatzVorjahr]=0,1,([UmsatzAktuell]-[UmsatzVorjahr])/[UmsatzVorjahr]) AS
Ab_Umsatz, FROM Umsatzvergleich"

Weisung2 =
"WHERE(((IIf([UmsatzVorjahr]=0,1,([UmsatzAktuell]-[UmsatzVorjahr])/[UmsatzVorjahr])) <" & Prozent * -1 & "));"
Abfrage.SQL = Weisung1 & Weisung2
Abfrage.Close
DB.Close
End Sub

Das Problem liegt in der SQL Syntax für die Variable Prozent.
Ich habe drei Varianten ausprobiert:

1) <" & Prozent * -1 & " => Der Code bleibt stehen und weist einen Fehler
aus. Im
Überwachungsfenster wird der
Variableninhalt aber
genau so angezeigt, wie in der SQL
Ansicht der
richtigen definierten Abfrage.
2) <"“ & Prozent * -1 & “" => Der Code làuft durch, aber in der Bedingung
der Abfrage wird keine Zahl,
sondern der SQL Code
eingetragen. Damit wird ein
falscher Datentyp
(String) angegeben.
3) <"““ & Prozent * -1 & ““" => Der Code làuft durch, aber die Abfrage
funktioniert
nicht, da in der Bedingung die
Prozentzahl in „“
gesetzt wird. Damit wird ein
falscher Datentyp
(String) angegeben.

Was mache ich falsch?
Vielen Dank im Voraus für die Mühe!
Christoph
 

Lesen sie die antworten

#1 Gunter Avenius
29/01/2010 - 16:48 | Warnen spam
Hallo Christoph,

Christoph schrieb folgendes:
ich würde mich freuen, wenn mir jemand bei einem SQL Syntax Problem
helfen könnte. Ich möchte eine Abfrage generieren, die mir negative
Umsatzabweichungen von mehr als X Prozent anzeigt. X wird über eine
MSG Box abgefragt. Anschließend wird die SQL Definition für die
Abfrage mittels zwei String Variablen zusammengestellt. Ich
benötige 2 Variablen, da ich mit der gleichen Routine auch positive
Umsatzabweichungen anzeige. In diesem Fall lautet die SQL
Definition der Variablen 2 anders. Aber das nur als Erklàrung,
warum ich mit zwei Variablen arbeite… Mit dem Problem hat das
nichts zu tun.

Das (verkürzt dargestellte) Programm sieht wie folgt aus:

Private Sub UmsatzverlusteRechnen() Dim DB As Database Dim Antwort
As String Dim Prozent As Single Dim Abfrage As QueryDef Dim
Weisung1 As String Dim Weisung2 As String

Set DB = CurrentDb() Set Abfrage = DB.CreateQueryDef("Abfrage
Umsatzverànderungen") Antwort = InputBox("Ab wieviel Prozent
NEGATIVE Abweichung sollen Datensàtze angezeigt werden?", "Wieviel
Abweichung?", "20") Prozent = CSng(Antwort) / 100

Weisung1 = "SELECT Umsatzvergleich.[Name der Firma],
Umsatzvergleich.UmsatzAktuell, Umsatzvergleich.UmsatzVorjahr,

IIf([UmsatzVorjahr]=0,1,([UmsatzAktuell]-[UmsatzVorjahr])/[UmsatzVorjahr])
AS Ab_Umsatz, FROM Umsatzvergleich"

Weisung2 = "WHERE(((IIf([UmsatzVorjahr]=0,1,([UmsatzAktuell]-[UmsatzVorjahr])/[UmsatzVorjahr]))
<" & Prozent * -1 & "));" Abfrage.SQL = Weisung1 & Weisung2
Abfrage.Close DB.Close End Sub

Das Problem liegt in der SQL Syntax für die Variable Prozent. Ich
habe drei Varianten ausprobiert:

1) <" & Prozent * -1 & " => Der Code bleibt stehen und weist einen
Fehler aus. Im Überwachungsfenster wird der Variableninhalt aber
genau so angezeigt, wie in der SQL Ansicht der richtigen
definierten Abfrage. 2) <"“ & Prozent * -1 & “" => Der Code làuft
durch, aber in der Bedingung der Abfrage wird keine Zahl, sondern
der SQL Code eingetragen. Damit wird ein falscher Datentyp (String)
angegeben. 3) <"““ & Prozent * -1 & ““" => Der Code làuft durch,
aber die Abfrage funktioniert nicht, da in der Bedingung die
Prozentzahl in „“ gesetzt wird. Damit wird ein falscher Datentyp
(String) angegeben.

Was mache ich falsch?



Ich vermute: www.donkarl.com?FAQ6.21

Gruß
Gunter
__________________________________________________________
Access FAQ: http://www.donkarl.com

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

Ähnliche fragen