1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

sql Abfrage für Visual Basic

Dieses Thema im Forum "Microsoft Access" wurde erstellt von Maiki1706, 22 August 2014.

  1. Maiki1706

    Maiki1706 Neuer Benutzer

    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 von einem Moderator bearbeitet: 22 August 2014
  2. Walter

    Walter Administrator Mitarbeiter

    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.ä.
     
  3. Maiki1706

    Maiki1706 Neuer Benutzer

    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.
     
  4. Walter

    Walter Administrator Mitarbeiter

    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
     
  5. Maiki1706

    Maiki1706 Neuer Benutzer

    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.
     
  6. akretschmer

    akretschmer Datenbank-Guru

    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
     
  7. ukulele

    ukulele Datenbank-Guru

    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.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden