Home Forum Nuclos Entwicklung Schnittstellen SQL-Abfrage – Datum falsch formatiert

Ansicht von 4 Beiträgen - 1 bis 4 (von insgesamt 4)
  • Autor
    Beiträge
  • #8744
    Thomas Hempel
    Teilnehmer

    Hallo Forum,

    für unsere Schnittstelle zu Bestandsdaten haben wir ein Virtuelles Business-Objekt. Soweit funktioniert das auch, aber die Suche in Datumsfeldern ist nicht möglich. Im Beispiel habe ich nach 01.10.2015 im Feld Auftragseingang suchen lassen. Im Log steht das SQL, das von Nuclos kommt:

    SELECT TOP 2 COUNT (t.INTID) FROM B90A_V_AUFTRAG AS t WHERE t.AUFTRAGSEINGANG = ?
    [Thu Oct 01 00:00:00 CEST 2015]

    Der Fehler heißt org.nuclos.server.dblayer.DbException: executeQuery(SELECT TOP 2 COUNT (t.INTID) FROM B90A_V_AUFTRAG AS t WHERE t.AUFTRAGSEINGANG = ?) failed

    Das gefragte Feld Auftragseingang ist vom Type datetime, genau wie auch in den Nuclos-Tabellen. Was ist also falsch? Ein explizites
    CONVERT(datetime, A_1.Auftragseingang) AS Auftragseingang
    hat nichts gebracht.

    Kann es sein, dass ich das Datum von Hand in das Format Thu Oct 01 00:00:00 CEST 2015 bringen muss? Wenn ja, wie geht das mit TSQL?

    Danke für alle Tipps!

    Attachments:
    #8745
    Ramin Goettlich
    Teilnehmer

    Die zugrundeliegende Meldung ist „A failure occurred while giving parameter information to OLE DB provider „SQLNCLI11″ for linked server“.

    Man könnte mal das SQL Logging in Nuclos einschalten (siehe Wiki), um das genaue ausgeführte Statement zu erhalten und um dann ggf. zu sehen, ob sich das direkt auf einer Konsole ausführen lässt.

    #8748
    Frank Pavlic
    Teilnehmer

    Hallo Thomas,
    das sieht eher nach einem Datumstyp-Mismatch zwischen zwei Datenbanken aus. Daher, glaube ich, müsste das hier auch bei Dir der Fall sein, siehe hier:
    http://stackoverflow.com/questions/12045403/datetime-parameter-issue-with-linked-servers-and-entity-framework-code-first .

    Gruß
    Frank

    #8749
    Thomas Hempel
    Teilnehmer

    Danke Frank,

    das ist die Lösung:

    CAST(A_1.Auftragseingang AS datetime2) AS Auftragseingang,

    Das war also kein Nuclos-Problem, sondern eines zwischen den beiden SQL-Servern, weil der verbundene SQL-Server 2005 nur datetime liefern kann und auf dem neuen Server 2012 datetime2 erwartet wird.

    Gruß
    Thomas

Ansicht von 4 Beiträgen - 1 bis 4 (von insgesamt 4)