SQL-Abfrage

Merlin01

Grünschnabel
Hallo
Habe ein Problem mit einer SQL Abfrage.


sSQL = sSQL & "SELECT Monat,Datum, SUM(tagesamt) AS Summe1 FROM Tabelle WHERE Monat = '" & Month(sevMonthView.value) & "' AND Datum ="&Year(sevMonthView1.Value)"

in der Access DB ist das Datum als Text gespeichert Format dd.mm.yyyy
Der Monat als String Januar Februar... usw

nun meckert vb natürlich das er diese daten nicht finden kann
weil Rückbabe bei monat 1 für januar 2 für Februar usw.
beim Jahr ist es ähnlich.
Year(sevMonthView1.Value) ergibt 2008

wie könnte der String funktionieren
hänge schein seit Tagen

Ich benötige also
alle daten von einer Tabelle spalte "tagesamt" von auswahl Jahr und Monat
kann da jemand helfen, bin noch anfänger
Vielen Dank schon mal für eure Mühe
Alf
 
Da du das ja per vba löst kannst du es mal so versuchen
Visual Basic:
sSQL =  "SELECT Monat,Datum, SUM(tagesamt) AS Summe1 " & _
              "FROM Tabelle " & _
              "WHERE Month(cdate(Datum))= '" & Month(sevMonthView.value) & "' AND YEAR(cdate (Datum ))="&Year(sevMonthView1.Value)"

Grüsse bb

PS: bitte die Tags für code benutzen ist dann leichter lesbar
 
Hallo Zusammen,

Da du das ja per vba löst

@brainbyte
Woran erkennst du denn das er mit VBA arbeitet ?
Access DB muss nicht gleich VBA sein. Mit VB kann man doch
auch prima auf eine Access DB zzugreifen.

Visual Basic:
sSQL =  "SELECT Monat,Datum, SUM(tagesamt) AS Summe1 " & _
              "FROM Tabelle " & _
              "WHERE Month(cdate(Datum))= '" & Month(sevMonthView.value) & "' AND YEAR(cdate (Datum ))="&Year(sevMonthView1.Value)"

Das CDate in JET SQL funktioniert wußte ich gar nicht.
Funktioniert aber...

Die Hochkommas nach der Function Month sind aber sinnfrei,
obwohl das auch funktioniert. (Month dürfte einen Integer zurückgeben)
Das abschliessende " ist aber zuviel.
Und, meines Wissens nach muss das Monat,Datum im Select weg.
In Verbindung mit SUM funktioniert das bei einem schnellen Test hier
nicht.

Code:
"SELECT SUM(tagesamt) as Summe1 " & _
                "FROM Tabelle " & _
                "WHERE Month(cdate(Datum)) = '" & Month(sevMonthView.value) & "' AND    YEAR(cdate(Datum)) = " & Year(sevMonthView1.Value)

So funktioniert es bei mir, kann aber auch sein das es nur so funktioniert weil
ich auf die schnelle und aus Einfachheit mit DAO gearbeitet habe.

@Merlin01

Ich würde Datumsfelder nach denen selektiert und später vielleicht
sortiert werden soll nicht als Textfeld speichern sondern als Date.

Grüße
Jens
 
Hallo
Leider funktioniert dieser string nicht

Code:
sSql = "SELECT Monat,Datum, SUM(tagesamt) AS Summe1 " & _
    "FROM DM WHERE Month(cdate(Datum))= '" & Month(sevMonthView1.Value) & "' " & _
    "AND Year(cdate (Datum))='" & Year(sevMonthView1.Value) & "'"


Es kommt folgende Fehlermeldung

Sie wollten eine Abfrage ausführen, die den angegebenen
Ausdruck'Monat'nicht als Teil der Aggregatfunktion einschließt.

gibt es vielleicht noch eine andere Lösung

Gruß
Alf
 
Zuletzt bearbeitet:
Einen , vielleicht auch den haupsächlichen fehler habe ich gefunden.

Code:
 AND YEAR(cdate(Datum))

Über eine msgbox bekam ich den wert "1899" zurück
und nicht das aktuelle Jahr vom Kalender.

Das Datum liegt in der Access DB leider nur als text vor.
es sind zuviele daten um es zu ändern.
vielleicht müsste man den Textstring"Datum"irgendwie in ein Datumsformat ändern

aber wie

spreche die DB mit ADO an

Alf
 
Einen , vielleicht auch den haupsächlichen fehler habe ich gefunden.

Das war sicher nicht der hauptsächliche Fehler.

Code:
 AND YEAR(cdate(Datum))

Über eine msgbox bekam ich den wert "1899" zurück
und nicht das aktuelle Jahr vom Kalender.

Wie genau gibts du denn das mit einer MSGBOX aus ?
Doch nicht in dem oben genannten Code, das ist ja SQL.

Oder gibt du in der MSGBOX

Year(sevMonthView1.Value)

aus ?
Falls dann 1899 rauskommt kann ich leider nicht helfen,
da ich diese 3. Komponente nicht kenne / habe.
Der Name lässt nur schliessen das es eine Komponente
von Dieter Otter ist.


Das Datum liegt in der Access DB leider nur als text vor.
es sind zuviele daten um es zu ändern.
vielleicht müsste man den Textstring"Datum"irgendwie in ein Datumsformat ändern

Wenn das Datum in der Access DB immer ein gültiges Format hat (z.B. 01.12.2008), kannst du das
Feld Problemlos in Access ändern, ohne Daten anzupassen.

Eine Abfrage von Date in Access und VB (egal ob ADO oder DAO) erwartet die Umwandlung in das Format #12/01/2008# (01.12.2008).
Das geht z.B. so
Code:
Format$(cDate("01.12.2008"),"\#mm\/dd\/yyyy\#")

Was heißt ?
Wie spreche ich die DB mit ADO an ?
Den DB Zugriff hast du doch offensichtlich... und dazu gibt es unzählige
Beispiele im Netz.

Gruß
Jens
 
Ja, Hallo
stimmt, das Control ist von sevtools (Dieter Otter)


Die msgbox abfrage ist
MsgBox "" & Month(sevMonthView1.Value) ergibt "11" sollte November sein
MsgBox "" & Month(CDate(Datum)) "12" sollte November sein
MsgBox "" & Year(CDate(Datum)) "1899" sollte 2008 sein
MsgBox "" & Year(sevMonthView1.Value) "2008" richtig

ja, natürlich sql
das prog ist ja auch lauffähig, sollte nur zusätzlich eine Summe gebildet werden.

Ich benötige eigentlich nur eine sql abfrage aus einer tabelle

und zwar

Summe von tagesamt from tabelle
where Monat (als string in tabelle enthalten) = Kalendervorgabe
und Jahr (Datum als String vorhanden) = Kalendervorgabe


wobei
das sevMonthview von sevtools im Prinzip das gleich ist wie
das Monthview aus VB

Habe gedacht, es wäre einfach, aber weit gefehlt

Habe gerade mal versucht in der DB das Datum als Datum zu deklarieren.
da hagelt es von Fehlermeldungen

geht also nicht so einfach

Gruß
Alf
 

Neue Beiträge

Zurück