sql Abfrage für Visual Basic

Maiki1706

Neuer Benutzer
Beiträge
3
Hallo

Ich habe da eine Frage an unsere Spezialisten

Ich habe eine Datenbank (Access)
in der Gibt es eine Tabelle namens

tbl_Urlaub

in dieser Tabelle

gib es 4 felder

Urlaubsplannr(Zahl, Autowert)
Mitarbeiternr(Zahl)
urlaubvon(Date)
Urlaubbis(Date)

So nun brauche ich eine SQL Abfrage in dem ich die urlaubsplannr bekomme wo die werte von Urlaubvon und Urlaubbis zwischen dem Aktuellen Datum liegen.

Select urlaubsplannr from tbl_Urlaubsplan Where mitarbeiternr = nr and Urlaubvon > heute and Urlaubbis < heute

Leider klappt diese Abfrage nicht bekomme immer die Meldung

"Datentypen in kriterienausdruck unverträglich"

Gruss

Maik
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
Ich kenne mich mit Access nicht aus aber die Meldung sagt es ja schon ziemlich deutlich, die Datentypen in Deinem WHERE passen nicht zusammen.

Wie gibst Du denn dieses "heute" an? Wenn es ein Text ist (also z.B. "2014-08-22") dann musst Du den Text erst in ein Datum umwandeln, dafür gibt es bei allen Datenbanken Funktionen wie TO_DATE("2014-08-22") o.ä.
 
Hi danke für deine Antwort !

Das Format von Urlaubvon und urlaubbis ist in Datum Format also zB.: 12.08.2014 und heute ist ebenfalls in Format Datum 22.08.2014. trotzdem kann ich größer oder kleiner nicht anwenden . Entweder ist so simpel und ich steh auf dem Schlauch oder es ist doch etwas verzwickt hatte damals schon Problem damit gehabt nur damals musste ich nur das Datum vergleichen und das hat nur mit like funktioniert der Operator = hatte auch den Fehler mit den Datentypen angezeigt.
 
In welchem Format eine Spalte angezeigt wird ist Sache des Programmes. Welchen Datentyp eine Spalte hat ist Sache der Datenbank.

Das kann also durchaus differieren. Z.B. kann jemand eine Datenbankspalte anlegen vom Datentyp Text und dort ein Datum als Text reinschreiben (Designfehler!) - für den Anwender sieht es richtig aus, aber die Datenbank kann mit dem "Datum" nichts anfangen und auch nicht rechnen/vergleichen etc
 
Ok aber wie geschrieben ist der Datentyp in der Datenbank, für das Feld urlaubvon und urlaubbis, Datum/zeit und im Quellcode von visual Basic ist die Variable heute ebenfalls in Date Format deklariert!

Das Format ist ebenfalls das selbe wie in Quellcode dd.mm.yyyy.
 
Ok aber wie geschrieben ist der Datentyp in der Datenbank, für das Feld urlaubvon und urlaubbis, Datum/zeit und im Quellcode von visual Basic ist die Variable heute ebenfalls in Date Format deklariert!

Das Format ist ebenfalls das selbe wie in Quellcode dd.mm.yyyy.

Einmal Datum/zeit, einmal Date. Also nach Deiner Beschreibung. Ich kenne weder Access noch Visual Basic. Eigentlich kenne ich nicht viel, nur PostgreSQL. Da würde ich es so machen:

Code:
test=*# \d urlaub
  Table "public.urlaub"
  Column  |  Type  | Modifiers
-------------+-----------+-----------
 mitarbeiter | integer  |
 zeit  | daterange |

test=*# select * from urlaub ;
 mitarbeiter |  zeit
-------------+-------------------------
  1 | [2014-08-01,2014-08-20)
  2 | [2014-08-10,2014-08-30)
  3 | [2014-08-20,2014-08-25)
(3 rows)

Time: 0,154 ms
test=*# select * from urlaub where zeit @> current_date;
 mitarbeiter |  zeit
-------------+-------------------------
  2 | [2014-08-10,2014-08-30)
  3 | [2014-08-20,2014-08-25)
(2 rows)

Andreas
 
Werbung:
eine SQL Abfrage in dem ich die urlaubsplannr bekomme wo die werte von Urlaubvon und Urlaubbis zwischen dem Aktuellen Datum liegen.
Du meinst wohl wo das aktuelle Datum zwischen bzw. ganz genau in dem angegeben Zeitraum liegt.
Code:
SELECT   urlaubsplannr
FROM   tbl_Urlaubsplan
WHERE   Datum() >= Urlaubvon
AND     Datum() <= Urlaubbis
Wenn ich Access richtig verstehe, liefert Datum() nur das aktuelle Tagesdatum ohne Zeit.
 
Zurück
Oben