2016-04-06 2 views
1

Ich habe dieses Problem:Zugang [DE Version] automatisch konvertiert Datum TT/MM/yyyy in MM/tt/

Ich habe ein kleines Management-Programm Hexe C# und DB Access 2016. Meine Tastatur und mein System Sprache ist in Italienisch. Mein DB-Zugriff ist auf Englisch

In Abfrage ich eine System.DateTime.Today.ToString ("TT/MM/yyyy") Datumsformat senden, die zum Beispiel

string update = "UPDATE RICHIESTA_IT SET RICHIESTA_IT.stato_approvazione = YES, RICHIESTA_IT.data_approvazione = #" + System.DateTime.Today.ToString("dd/MM/yyyy") + "# WHERE(((RICHIESTA_IT.ID_RichiestaIT) = " + iD_Richiesta + "))"; 
MessageBox.Show(update); 
//qa is my object that help me to connection,query,disconnet to DB .. 
qa.runNonQuery(update); 

// without parametric query 
// #06/04/2016# 

aber ich Zugang db siehe

04/06/2016 

Dies ist ein großes Problem, wenn ich dieses Datum zu lesen.

Wie löst man es?

Ich habe versucht, eine Maske zu setzen .. aber ich habe zu lösen gescheitert ...

+0

Versuchen Sie, diese Zeichenfolge als Date-Literal in eine INSERT- oder UPDATE-Anweisung einzubetten? –

+0

Nein, weil ich denke, dass ich eine Ausnahme habe, wenn ich INSERT-Anweisung verwende. Typsicher unterschiedlich – rul3z

+0

Wie lautet das Datumsformat in den regionalen Einstellungen Ihres Computers? Standardmäßig sollte Access das verwenden. – SunKnight0

Antwort

3

Das Problem ist, dass Sie nicht mit Hilfe von Parametern sind.

Sie haben versucht, das intern von MS Access verwendete Format zu erraten, und sind fehlgeschlagen. Wenn Sie #...# Datum Literale verwenden, müssen sie müssen verwenden Sie die yyyy-MM-dd oder MM/dd/yyyy Format (ich würde die ehemalige bevorzugen, da es nicht eindeutig ist). So werden #...# Datumsliterale definiert. Sie kann nicht verwenden Sie ein lokales Format (z. B. Italienisch) hier.

Ihr unmittelbares Problem zu lösen, Sie

... #" + System.DateTime.Today.ToString("yyyy-MM-dd") + "# ... 

oder

... #" + System.DateTime.Today.ToString(@"MM\/dd\/yyyy") + "# ... 

Aber bitte bedenken using parameterized queries verwenden können. Es ist nicht schwer und Sie vermeiden alle diese hässlichen Datumsformat/Dezimalpunkt/String-Escaping-Probleme.

+0

Funktioniert gut! Vielen Dank! Warum läuft gut, obwohl Sie zuerst _MM_ und nach _dd_ ?? Infact mit '(@" MM \/dd \/yyyy ")' läuft gut zwischen '(@" dd \/MM \/yyyy ")' gesetzt vor dem Monat und nach dem Tag. Warum? PS: Ich kenne parametrisierte Abfragen dank.;) – rul3z

+0

@Heinzi: Das _yyyy-mm-dd format_ wird von jeder Version von Access verstanden, nicht nur von "neuesten" Versionen. – Gustav

+0

@ rul3z: Verwenden Sie in solchen Fällen _always_ die _yyyy-mm-dd_ (oder mm-dd-yyyy) Sequenz, da die _dd-mm-yyyy_ Sequenz fehlschlägt, wenn _dd_ als Monat gelesen werden kann. – Gustav

Verwandte Themen