Hallo allerseits,
bin neu hier, also bitte um Nachsicht wenn ich Unsinn verzapfe ;)
Ich schreibe eine Wertpapierdatenbank und sitze schon den ganzen Tag vor folgendem Problem:
Ich habe ein Formular (frmPricesInvestments) mit einem Liniendiagramm (chtPI) das die Kursverläufe der Wertpapiere anzeigt. Beides basiert auf der Tabelle tblPricesInvestments. Das Liniendiagramm zeigt auf der X-Achse das Datum ([PIDate], Datum, kurz), auf der Y-Achse den Kurs ([PIPrice], Single) und als Wert die Wertpapiere ([refIID], Long).
Nun möchte ich die Anzeige im Liniendiagramm dynamisch auf ein Wertpapier beschränken. Dazu setze ich per VBA die RowSource des Diagramms neu und füge eine WHERE-Klausel hinzu. Mit
Me!chtPI.RowSource = "TRANSFORM Avg([PIPrice]) AS [PIPriceAvg] SELECT (Format([PIDate],""DDDDD"")) FROM [tblPricesInvestments] WHERE refIID = 2 GROUP BY (Int([PIDate])),(Format([PIDate],""DDDDD"")) PIVOT [refIID];"
funktioniert es so weit, aber das ist noch nicht dynamisch. Verwende ich hingegen
Dim TEST As Long
TEST = 2
Me!chtPI.RowSource = "TRANSFORM Avg([PIPrice]) AS [PIPriceAvg] SELECT (Format([PIDate],""DDDDD"")) FROM [tblPricesInvestments] WHERE refIID = " & TEST & "GROUP BY (Int([PIDate])),(Format([PIDate],""DDDDD"")) PIVOT [refIID];"
bekomme ich die Fehlermeldung "Fehler beim Senden von Daten an den OLE-Server" und das Diagramm wird nicht angezeigt.
In einem ähnlichen Formular/Diagramm funktioniert es, allerdings ist dort meine refID ein String und meine WHERE-Klausel dementsprechend
WHERE refCYID = '" & strCYID & "'
Gefühlt würde ich meinen, dass es sich hier um inkompatible Datenformate oder fehlende Anführungszeichen handelt, aber möglicherweise liege ich auch völlig falsch damit.
Hat irgendjemand von euch eine Idee wo mein Fehler liegt?
Danke im Voraus!
Chris
Hallo,
ein Leerzeichen vor "Group" könnte helfen...
Hallo Franz,
danke, Du bist mein Held des Tages :D :D :D!!!
So simpel, und doch wäre ich wahrscheinlich niemals selbst drauf gekommen.
Danke!!! Viele Grüße an den Bodensee
Chris
Hallo,
Solche Fehler findet man normalerweise schnell, wenn man den SQL-String ins
Direktfenster schreiben lässt
Debug.Print SQLDeinString
Die üblich beschriebene Vorgehensweise diesen String zum Testen per C&P in
eine leere Abfrage zu kopieren kannst du mit diesem Tool mit einer Codezeile
anstossen (inkl. Fehlermeldung)
http://access-codelib.net/download/addins/SqlDebugPrint.zip (http://access-codelib.net/download/addins/SqlDebugPrint.zip)
gruss ekkehard