COleDateTime allgemeines Problem



  • Bei mir steht dann drin:

    ([LagerDat] LIKE '2005-04-07%')
    

    Die Klammern sind da, weil das Lagerdatum nur eine von 5 möglichken Sachen ist.
    Aber ich kriege nix. 😞

    Edit: Okay, das Problem liegt im Recordset. 😞
    Direkt im Manager bekomme ich zu

    SELECT     *
    FROM         Buch
    WHERE     (LagerDat BETWEEN '2005-04-07 0:00:00' AND '2005-04-07 23:59:59')
    

    auch das gesuchte. Na, ich such denn mal...



  • mach mal sicherheitshalber und nur als versuch

    strFilter = ID >=0;
    requery();
    

    Ich hatte auch schon oft nen Filter noch gesetzt und dann brachte er nur schrott



  • Wegen dem Problem, dass du Uhrzeiten abfragen willst...
    Ich habe hier gerade die MS-SQL Funktion DATEPART entdeckt.

    Wegen der Handhabung gucke ich grade mal... 🙂



  • juhu! Woher bekommst du MS-SQL-Funktionen?
    Ich hab keine Ahnung wo ich da suchen soll! wohl weniger über die MSDN!



  • Ich hab hier MS-SQL Server in 21 Tagen liegen. 😃

    Nur teilweise hilftreich, aber immernoch besser als das BlackBook. 😞

    Es gibt dann noch die SQL Books Online: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/startsql/getstart_4fht.asp

    Hier scheint leider einiges offline zu sein: http://www.dhruvaraj.com/Database/SQLServer.htm



  • hm OK werde mir wohl auch mal ein paar MS-SQL Bücher organisieren müssen, vielleicht komm ich dann weiter! Aber für heute reicht es mir echt! Schnauze voll ich geh nach hause!
    Vielleicht find ich hier ja morgen früh die Wildcard-Lösung 😃 😉 😃



  • So, so finde ich alles von einem bestimmten Tag.

    Schaus dir an, Erklärung folgt nach meiner Mittagspause. 😉

    CString strTmp;
    			strTmp.Format(_T("(((Select DAY([LagerDat])) = %d) AND "), tmTemp.GetDay());
    			strFilter += strTmp;
    			strTmp.Format(_T("((Select MONTH([LagerDat])) = %d) AND "), tmTemp.GetMonth());
    			strFilter += strTmp;
    			strTmp.Format(_T("((Select YEAR([LagerDat])) = %d))"), tmTemp.GetYear());
    			strFilter += strTmp;
    


  • meinst du nicht dass deine Filterung nach 3 verschiedenen Kriterien unnötig Zeit kostet? Wäre es nicht schöner und sauberer es in etwa so zu tun?

    [ZeitStempel] >= '10.05.2005 00:00:00'  AND [ZeitStempel] <= '11.05.2005 00:00:00'
    

    Die Zeiten musste dann natürlich noch variabel einlesen, dazu würde ich so spontan sagen kannst du über setDateTime die Zeit einfach auf 00:00:00 setzen und dann einfach mit gleicher funktion für letzteren Wert day ++ machen!

    Vielleicht



  • Erstens hab ich das so wie du da geschrieben hast ja nicht hinbekommen (siehe gestern), zweitens wolltest du nach Uhrzeiten filtern, da ist das da und ein wenig lesen die halbe Miete. 🙂

    Hier sind alle Versuche bisher. Das auskommentierte geht aus verschiedenen Gründen nicht. (Hat kein Ergbnis oder gibt ne Meldung.)

    CString strTmp;
    			strTmp.Format(_T("(((Select DAY([LagerDat])) = %d) AND "), tmTemp.GetDay());
    			strFilter += strTmp;
    			strTmp.Format(_T("((Select MONTH([LagerDat])) = %d) AND "), tmTemp.GetMonth());
    			strFilter += strTmp;
    			strTmp.Format(_T("((Select YEAR([LagerDat])) = %d))"), tmTemp.GetYear());
    			strFilter += strTmp;
    
    // 			strFilter += _T("([LagerDat] BETWEEN \'" + tmTemp.Format(_T("%Y-%m-%d 0:00:00")) + "\' AND \'" + tmTemp.Format(_T("%Y-%m-%d 23:59:59")) + "\')");
    
    // 			strFilter += _T("([LagerDat] = CONVERT(\'" + tmTemp.Format(_T("%Y-%m-%d")) + "\',SQL_DATE))");
    
    // 			strFilter += _T("([LagerDat] LIKE CONVERT(\'" + tmTemp.Format(_T("%Y-%m-%d%%")) + "\',SQL_DATE))");
    
    // 			strFilter += _T("([LagerDat] LIKE \'" + tmTemp.Format(_T("%Y-%m-%d%%")) + "\')");
    
    // 			strFilter += _T("((([LagerDat] >= CONVERT(\'" + tmTemp.Format(_T("%Y-%m-%d 0:00:00")) + "\',SQL_TIMESTAMP))) AND");
    // 			strFilter += _T("(([LagerDat] <= CONVERT(\'" + tmTemp.Format(_T("%Y-%m-%d 23:59:59")) + "\',SQL_TIMESTAMP))))");
    


  • Hm also ich hab es jetzt so vor, wenn ich nen RDOButton drücke Mittagschicht dann mach ich

    m_sDatumVon = m_dtpVonDatum.Format("%d.%m.%Y 14:00:00");
             m_sDatumBis = m_dtpVonDatum.Format("%d.%m.%Y 22:00:00");
    

    und die zwei Strings füge ich dann einfach in meinen Stringfilter ein

    m_pSet->m_strFilter.Format(_T("[TIMESTAMP] >= \'%s\' AND <= \'%s\'"), m_sDatumVon , m_sDatumBis );
    

    P.S.: Das und ein bischen lesen die halbe Miete? Ich versteh nicht so ganz was du mir damit sagen willst.



  • Polofreak schrieb:

    Also ich hab es jetzt wirklich mit >=00:00:00 <=nächsterTag 00:00:00 aber schön ist das nicht, mit Wildcards wäre das viel geiler! denn ich will ja auch machen könne alle Teile der Mittagschicht, also Tag Woche Jahr egal Zeit >=14:00:00 <= 22:00:00 mit Wildcards kein Thema mit der Variante von jetzt ein Problem mit schleifen und scheiß!

    Da klangst du so, als wenn das an jedem Tag die Zeit interessant wäre.
    Und dafür müßtest du das so ähnlich machen wie ich, nur mit der Zeit statt dem Datum. (Mit Datepart)



  • also ich hab hier grad noch ewig rumprobiert das wirklich auf alle Tage zu bringen, das was ich oben geschrieben hab, war allerdings blödsinn, wenn man will dass der Tag egal und uhrzeit fest ist. Ich hab gelesen bei Format kann man %% schreiben um ein % zu übergeben, dann wäre es ja

    m_dtpVonDatum.Format("%% 14:00:00");
    

    Eigentlich das was ich suche! aber ich komm damit auch nicht weiter! Ich hab dann versuch mal in nem einfachen Textstring ne Wildcard ein zu setzen und hab bemerkt, dass ich nicht einmal das kann! ich wollte was schreiben wie where Motornummer = 2C% aber alle Varianten sind gescheitert. kanst du mir sagen wie ich im strFilter mit ner MS-SQL-DB Wildcards allgemein einsetze??



  • Motornummer LIKE '2C%'



  • So, mein Datumsproblem ist gelöst:

    strTmp.Format(_T("([VerkDat] BETWEEN \'%s 0:00:00\' AND \'%s 23:59:59\')"), tmTemp.Format(_T("%Y-%m-%d")), tmTemp.Format(_T("%Y-%m-%d")));
    

    Ich hatte die Anführungszeichen um die Datumsangaben nicht. 🙄



  • hatte den vorlestzten Post nicht gelesen, mit motornummer like 2C% geht es leider auch nicht!
    Freut mich, dass es jetzt mit deiner Abfrage klappt, ich komm mit meinen Wildcards immernoch nicht weiter! Hast du schon mal Wildcards gesendet? Wenn ja kannst du mir mal die Query zeigen?



  • Und wenn du Anführungsstriche machst? Ist doch eine Zeichenkette. (Habs editiert.) 🙂

    Das funktioniert beim Datum leider nicht. 😞



  • auch bei einer Zeichenkette geht es nicht ich hab es ja genau deswegen erst mal an ner Zeichenkette probiert, aber dann kommt ungültiger deskriptorindex.



  • 😕

    Schau mal, diese Zeile habe ich eben ausprobiert - funktioniert.

    strFilter = _T("(Kunde_Nachname like \'" + m_strNachname + "%\')");
    


  • Juhu das geht! da werd ich morgen gleich mal genauer rein schauen was man da alles noch machen kann hast mir den feierabend gerettet. Vielen Dank
    Bis morgen



  • Gerne 🙂

    Solltest du rausfinden, wie das beim Datum geht, gib Bescheid.
    Momentan habe ich es da mit BETWEEN gelöst, aber irgendwie gefällt mir die Lösung nicht so ganz. 🙄


Anmelden zum Antworten