Frage : Durchdringendes DATUM SQL-9.5 - odbc AUSERWÄHLTE Frage - = „0000-00-00“

Ein Softwarelieferant, den wir bei der Arbeit verwenden, hat mir ODBC Zugang zu ihrer Produktdatenbank vor kurzem gegeben, die durchdringender SQL 9.5 (sp2) ist.  Ich arbeite an der Automatisierung der Buchführungsangabeübertragung von dieser Software auf unsere Buchhaltung-Software und habe ein wall.

I morgens using die durchdringenden Klient odbc Fahrer für 9.50 (sp2) geschlagen und habe dieses von einem Fensterkasten und einen Linuxkasten using unixODBC mit dem psql Linux client.

In das durchdringende DB versucht, gibt es ein DATUM-Feld in zwei erklärenden Tabellen, die anzeigen, wenn eine Rechnung (zum anderen Rechnungssystem) gebracht worden ist oder wenn es schwebende Übertragung ist.  Ich bin nach den schwebendes transfer.

When, das der Rechnung das DATUM-Feld in den zwei erklärenden Tabellen wird bevölkert mit dem Datum des transfer.

This ist gebracht wird, wo ich die Wand geschlagen habe.  Wenn die Rechnung nicht gebracht wird, ist das Datum 0000-00-00.
I im Allgemeinen Notwendigkeit, die nicht-gebrachten Rechnungen in pervasive.
When zu fragen, das ich versuche, das Datumfeld zu fragen = „0000-00-00“ bin Würfe ein odbc Störung.  Ist hier die Störung:

SQL Störung: [Durchdringend] [ODBC Klienten-Schnittstelle] [LNA] [durchdringendes,] [ODBC Maschinen-Schnittstelle] unzulässiges Datum, Zeit oder Zeitstempelwert., SQL-Zustand 22008 in myfile.name auf Linie number

I Googled dieses eine Stunde lang oder zwei. Ich fand andere, die gleiche Ausgabe gehabt zu haben, aber kein solutions.

Here ist die merkwürdige Sache:

When frage ich das durchdringende DB mit einem SQL-Werkzeug, oder von einem PHP-Index stellt das Feld dar, dass ein Wert of
0000-00-00 für nicht-gebrachtes invoices.

When ich der tatsächliche pervassive ODBC Maschinenbediener gehen und dieses Feld using die PervasiveSQL Control Center Anwendung, es anzeigt die nicht-gebrachten Rechnungen mit einem Datum wie betrachten:
11/30/0002

I haben versucht, die nicht-gebrachten Rechnungen using alle Arten combos.

SELECT vergebens zu fragen * von der TABELLE WO FELD = '0000-00-00'< Br/>
SELECT * von der TABELLE IN DER FELD = '0002-11-30'< Br/>
SELECT * von der TABELLE, IN DER FELD NULL

SELECT ist * von der TABELLE IN DER FELD = {d „0000-00-00“}

SELECT * von der TABELLE, IN DER FELD = {d „0002-11-30“}

There vermutlich mehr SQL-Frage combos waren, aber von keinen arbeitete.  Sie entweder warfen eine odbc Störung, die über das Datumformat in der Frage sich beschwert, oder bearbeitet mit jetzt results.

Does jemand wissen von einer sneaky Weise um diese Ausgabe 0000-00-00?  Gibt es eine solche Sache wie AUSERWÄHLT * VON DER TABELLE, IN DER FELD nicht ein DATUM ist, oder von irgendeiner anderen Wahl? das

I morgens wirklich versuchend, diese Funktion zu erhalten, ohne zu müssen, mit dem Softwarelieferanten in Verbindung zu treten.  Sie waren widerstrebend, mir das odbc zu geben und betonen, dass sie es nicht stützen. Ich bin mit dem okay.  Jedoch wenn es keine Arbeit herum für die Ausgabe 0000-00-00 gibt, schätze ich, dass ich um um sie bitten könnte, um eine Änderung an der Software dort vorzunehmen, um die nicht-gebrachten Felder mit einem Scheindatum (1234-01-01) oder etwas zu bevölkern?

Any Gedanken oder Ideen würden groß sein!

Thanks!
Bob

Antwort : Durchdringendes DATUM SQL-9.5 - odbc AUSERWÄHLTE Frage - = „0000-00-00“

Was vermutlich geschieht, ist, dass das Datum durch die Btrieve Schnittstelle mit Räumen anstelle von einem gültigen Wert bevölkert wird.  Der Wert 00-00-0000 ist entsprechend den ODBC Spezifikationen unzulässig.  

Die korrekte Lösung zu diesem Problem ist, den Softwarelieferanten, ein gültiges Datum zu setzen oder null zu veranlassen für dieses nicht-gebrachte Feld.  

Sie konnten das, Datum in eine Schnur umzuwandeln und zu sehen versuchen, wenn Sie so einschränken können.  Z.B. * VON DER TABELLE VORWÄHLEN IN DER BEKEHRTER (FELD, SQL_CHAR) = '', wo der Wert zwischen einzelnen Anführungsstrichen 6 Räume ist.  Sie konnten verschiedene Werte versuchen müssen, um zu sehen, was arbeitet.
Weitere Lösungen  
 
programming4us programming4us