PDA

Vollständige Version anzeigen : Export von Datum soll ohne Zeitangabe sein


Motorroller
26.01.2008, 10:02
Hi.

Ich exportiere eine Tabelle in eine Textdatei. So weit, so gut. Allerdings ist in der Tabelle eine Spalte im Format Datum/Zeit. Exportiere ich diese Spalte, wird hinter dem Datum auch die Zeit als 00:00:00 angedruckt. Das darf es aber nicht, da mir dann die weiteren Schritte versaut werden.

Kann man das unterbinden? Muss ich in der Formatierung der Spalte etwas ändern?

Arne Dieckmann
26.01.2008, 10:13
Exportiere nicht die Tabelle, sondern eine Abfrage darauf. Wandel in der Abfrage das Datumsfeld in einen String um:
Select Format(T.Datumsfeld,"dd.mm.yyyy") As Datumsfeld FROM Tabelle As T;

ebs17
26.01.2008, 10:20
Du hast verschiedene Möglichkeiten:

(1) Wenn Du den Zeitanteil des Feldes in der Access-Anwendung nicht benötigst, kannst Du bereits in der Tabellendefinition das Format auf Datum, kurz stellen.

(2) Format([Datumsfeld], "tt.mm.jjjj")

l4ng3w3il3
05.04.2008, 11:50
Hallo,

ich habe ein ähnliches Problem. Bei mir kommt noch hinzu, dass dieses Datumsfeld in der Exportdatei nicht in Textbegrenzungszeichen (") stehen darf.

Das Feld ist sowohl in der Herkunftstabelle als auch in der Abfrage die exportiert wird mit "Datum,kurz" formatiert.

Hat jemand eine Idee?

ebs17
05.04.2008, 14:50
Wo kommen denn Textbegrenzungszeichen her?

l4ng3w3il3
05.04.2008, 18:31
Hallo,

wenn ich das wie von dir vorgeschlagen per Format([Datumsfeld], "tt.mm.jjjj") formatiere, setzt er die automatisch. Ich vermute, dass er das ganze dann irgendwie als Textfeld umformatiert. Allerdings stehen in den Eigenschaften des Dokuments immer noch "Datum, kurz"

ebs17
05.04.2008, 21:05
Format erzeugt einen String, aber nicht zusätzlich Anführungsstriche.

Irgendwie scheint die "Ähnlichkeit" nicht hinzuhauen.

Außerdem: Die gezeigte Anweisung erzeugt das Format Datum, kurz. Wieso benutzt Du diese, wenn Du das Format schon vorliegen hast?

Lanz Rudolf
05.04.2008, 22:13
Hallo
Versuche es doch einmal mit Datevalue

Bei mir im direkt Fenster
?format(Now(),"dd.mm.yyyy")
06.04.2008
?DateValue(Now())
06.04.2008

oder evtl.: mit Format$(DeinDatum, "\#yyyy\-mm\-dd\#") das ist ein gültiges DatuFormat ich weis nicht was der Export damit macht !
oder mit Format(DeinDatum,"c") da kommt nur das vom Datum das eingegeben wurde bei Zeit 00:00:00 kommt sie nicht
aber Format gibt immer ein String zurück !
doch DateValue -> Gibt einen Wert vom Typ Variant (Date) zurück.!! s. OH





Doch ich glaube das der Export das in String umwandelt suche noch.

l4ng3w3il3
07.04.2008, 08:30
Hallo,

vielleicht habe ich mich etwas verkehrt ausgedrückt.
In meiner Abfrage wird das Datum korrekt angezeigt (z.B. 10.04.2008). Das Problem liegt erst beim Export in eine Textdatei per Code:
DoCmd.TransferText acExportDelim, , "qry_Ausgabe", strausgabe & "DATEV.TXT", False
Dann sieht das ganze so aus: 10.04.2008 00:00:00
oder wenn ich die Formatierung einbaue: "10.04.2008"

ebs17
07.04.2008, 10:26
Versuche es mal statt der Formatierung mit einer Typumwandlung:
-> CStr (dt.: ZString)

l4ng3w3il3
07.04.2008, 11:00
Versuche es mal statt der Formatierung mit einer Typumwandlung:
-> CStr (dt.: ZString)

Hallo Eberhard,

danke für die schnelle Rückmeldung. Leider hat das zum gleichen Ergebnis geführt wie bisher, also: 10.04.2008 00:00:00

Eine Kombination der beiden setzt das ganze wieder in Anführungszeichen dafür aber ohne Uhrzeit: "10.04.2008"
zstring(format([txn_date];"tt.mm.jjjj"))

Lanz Rudolf
07.04.2008, 11:15
Hallo
Hast Du es mit DateValue versucht ?

Rückgabe wert bei cStr :
CStr ist String !!!!!

bei DateValue --> Variant

l4ng3w3il3
07.04.2008, 11:22
Hallo Rudolf,

ja, leider das gleiche Ergebnis: 10.04.2008 00:00:00

Lanz Rudolf
07.04.2008, 11:46
Hallo
aber ohne Anführungszeichen ?

wie hast du das ein gegeben ?

so
DateValue(format$([txn_date];"tt.mm.jjjj"))
oder so (beites währe interesant)
DateValue([txn_date])

darklord
07.04.2008, 11:56
Hi,

führe den Export einmalig manuell über den Export-Assistenten durch.
Im Assistenten kannst du im Menü "Weitere" auch die Textbegrenzungszeichen definieren. Die dort vorgenommenen Einstellungen speicherst du als Spezifikation.

Den Namen der Spezifikation gibst du dann im Code mit an:
DoCmd.TransferText acExportDelim, "DeineSpezifikation", "qry_Ausgabe", strausgabe & "DATEV.TXT", False

l4ng3w3il3
09.04.2008, 06:52
Hallo,

DateValue(format$([txn_date];"tt.mm.jjjj"))
DateValue([txn_date])
ergibt beides leider das gleiche wie oben ohne "


führe den Export einmalig manuell über den Export-Assistenten durch.
Im Assistenten kannst du im Menü "Weitere" auch die Textbegrenzungszeichen definieren. Die dort vorgenommenen Einstellungen speicherst du als Spezifikation.

das wäre die letzte Alternative. Allerdings müsste ich meine Textfelder dann noch mit einem " versehen, den bei Textfeldern benötige ich ein " :(

Lanz Rudolf
09.04.2008, 07:53
Hallo
Zeige einmal Dein Code den Du verwendest für das
exportieren der Tabelle in eine Textdatei

l4ng3w3il3
09.04.2008, 08:05
DoCmd.TransferText acExportDelim, , "qry_Ausgabe", strausgabe & "DATEV.TXT", False

Lanz Rudolf
09.04.2008, 09:02
Hallo
Du hast rech mit allen meiner Vorschlägen macht er ein Datum-Zeit Feld

Warte bis heute abend ich erstelle Dir was doch jetz habe ich sehr viel unaufsiebbare Arbeit. also etwas geduld

Crady
09.04.2008, 11:18
@l4ng3w3il3

Freu Dich drauf! Was Ruedi macht, funktioniert!! :)

Also ich hatte ähnliche Probleme beim Export zu Excel... Doch hier gab es immer ein kleines ' vor dem Datum bzw. der Zeit... Das habe ich auf dem 1. Blick gar nicht erst gesehen...

Jetzt exportiere ich per VBA direkt zu Excel und da habe ich keine Format - Probleme mehr... nur eben mehr Code...

Lanz Rudolf
09.04.2008, 12:09
Hallo
Du hast zwei möglichkeiten
Du nimst den Vorschlag von darklord
oder
Du machst so was

Sub xxx()
Dim db1 As DAO.Database, rs1 As DAO.Recordset
'Dim strKriterium As String
Dim MyString
Set db1 = DBEngine(0)(0) ' oder CurrentDb
Set rs1 = db1.OpenRecordset("Tbl1", dbOpenSnapshot)
rs1.MoveLast
rs1.MoveFirst
Open "c:\temp\TEST001xxx.txt" For Output As #1
Do While Not rs1.EOF ' Alle rs1 bis zum Ende der Datei Lesen
MyString = rs1!id & ";" _
& Chr(34) & rs1!T1 & Chr(34) & ";" _
& rs1!n1 & ";" _
& rs1!n2 & ";" _
& DateValue(rs1!d2)
Print #1, MyString
rs1.MoveNext ' Nächster rs1 Lesen
Loop
Close #1
If Not rs1 Is Nothing Then rs1.Close: Set rs1 = Nothing
If Not db1 Is Nothing Then db1.Close: Set db1 = Nothing

End Sub
Diesen code findest Du auch in der MDB im Anhan mit dem kanst Du auch Spielen (TESTEN)

Mein Test OutPut sieht so aus:
ID;"Text ";integer;Double;DATUM
1;"A11aa";12;12.12;08.04.2008
2;"A22aa";21;21.21;06.04.2008