Data type mapping



  • Hey!!

    Muß mich mit einigen Programmen beschäftigen, die von Access auf SQL_Server umgestellt werden sollen. Beim überprüfen der Querys läuft mir immer wieder type mapping übern Weg. Kann mir einer erklären wie das funktioniert und v.a wie das "Endprodukt" aussieht?

    Hier der Strings.
    Format(_T("select * from Besucher where IstSabeID=%d and Bedienung>#00:00:00# and Anmeldung>=%s"), lBesucherNr, sHeute);

    Danke euch
    stoner



  • Du siehst das %d und das %s? Diese werden durch die nachfolgenden Variablen-Inhalte lBesucherNr und sHeute ersetzt. %d heißt glaub ich decimal und %s steht für string. Ich benutze das ganze eigentlich nie, aber kann mich da noch dunkel dran erinnern. Aber jede gute C-Referenz hilft weiter. Das _T steht für Unicode... also 16bit-Characters.
    Format() ist entsprechend für die Formatierung (bzw. type mapping wie du es nennst).

    #00:00:00# ist mir jetzt unbekannt... vielleicht weiß jemand anderes bescheid?



  • #00:00:00# sieht mir stark nach einem Zeitindex aus.
    Die Zeile könnte man nach meinen SQL kenntnissen so interpretieren.
    Format(_T("select * from Besucher where IstSabeID=%d and Bedienung>#00:00:00# and Anmeldung>=%s"), lBesucherNr, sHeute);
    Wähle alles von Besucher wo die ID %d && Bedingung #Zeit halt# && heute angemeldet (sind/waren).

    Das Sytem soll dir also alle Leute ausgeben, die eine bestimme id haben und seit dem Zeitindex 00:00:00 im System sind oder waren.



  • Danke erstmal für die schnellen Antworten. Mit Format und dem SQL dasd ist mir schon alles klar, die Frage ist halt "was macht _T " Die Hilfe würde ich so interpretieren: umformatiert in Unicode. ??
    Aber wie sieht dann die Ausgabe aus und auf welche Zeichen hat das Auswirkung
    stoner



  • Format() scheint ja von Microsoft zu sein, gell? Ich würde mal sagen, das hat nichts besonderes zu sagen, außer, das Format() 16bit-Characters erwartet. Weiß jetzt nicht was daran unmissverständlich bzw. besonderes ist? Ist halt so! 😉

    Du kannst ja mal versuchsweise das _T mit den dazu gehörigen Klammern raus nehmen... du müsstest dann nen Error beim compilieren bekommen.



  • Also Format ist eine Programmspezifische Funktion, ich habe bei M$ nicht gefunden was irgendwie passen könnet.
    Ich denke mal die kümmert sich um die Umwandlung der Rückgabewerte von _T, wodurch eine Anfrage an eine Datenbank gestellt wird.



  • _T ist AFAIK ein Präprozessor-Makro, was bei aktiviertem Unicode Literale zu Wide-String-Literalen macht. Ungefähr so:

    #ifdef UNICODE
    #define _T(x) L##x
    #else
    #define _T(x) x
    #endif
    

    IOW, falls UNICODE definiert ist, expandiert _T("Hello world") zu L"Hello world".


Anmelden zum Antworten