PDA

View Full Version : Syntax Fehler bei Eingabe der Datensätze ( ODBC ) von AS 400



Seiten : [1] 2 3 4

VOS
18-07-08, 09:58
:( Guten Tag :(

Kann mir bitte jemand helfen?

Im Microsoft Query kann ich bei den Datensätzen, Datum hinzufügen, das Datum nicht kürzen, da ich sonst zu viele Daten erhalte. Wie kann ich es eingrenzen?

IST Beispiel: MWOPTR00.DJTRDT entspricht den Daten 20080101

Soll Beispiel: MWOPTR00.DJTRDT ?? es sollen jedoch nur die Daten 200801 erscheinen!

:) Vielen Dank für Ihre MITHILFE :)

Fuerchau
18-07-08, 10:13
In SQL lautet die Abfrage:

MWOPTR00.DJTRDT between 20080101 and 20080131

Rufe die SQL-Sicht auf und ändere die Abfrage entsprechend.

VOS
18-07-08, 10:22
Guten Tag

Als Beispiel, wenn ich einen Wechselkurs in Umrechnen will, kann ich einfach die Datei Umsatz * Datei Wechselkurs und ich bekomme direkt das Ergebnis. Wie kann ich jedoch das Datum von 8 auf 6 Stellen kürzen?

Vielen Dank für Ihre Hilfe

Fuerchau
18-07-08, 10:28
Das geht auch mit berechnen:

int(DJTRDT / 100)

VOS
15-09-09, 08:20
Guten Tag

Wie kann ich folgenden SQL Link in ein Datum umwandeln, den das Excel kennt?

SELECT OSBSTD.UCDLDT
FROM CHBRU032.ZVXBDTA220.DOLINE DOLINE, CHBRU032.ZVXBDTA220.MITMAS MITMAS, CHBRU032.ZVXBDTA220.OCUSMA OCUSMA, CHBRU032.ZVXBDTA220.OOLINE OOLINE, CHBRU032.ZVXBDTA220.OSBSTD OSBSTD
WHERE OSBSTD.UCCUNO = OCUSMA.OKCUNO AND MITMAS.MMITNO = OSBSTD.UCITNO AND OSBSTD.UCORNO = OOLINE.OBORNO AND OOLINE.OBPONR = OSBSTD.UCPONR AND DOLINE.EBCONO = OSBSTD.UCCONO AND OSBSTD.UCORNO = DOLINE.EBORNO AND DOLINE.EBPONR = OSBSTD.UCPONR AND DOLINE.EBPOSX = OSBSTD.UCPOSX AND DOLINE.EBDLIX = OSBSTD.UCDLIX AND ((OSBSTD.UCCONO=220) AND (OSBSTD.UCDLDT Between ? And ?))

Besten Dank für Ihre Antwort :)

Fuerchau
15-09-09, 08:39
Ein numerisches Datum kann nur per Cast umgewandelt werden:

date(substr(digits(numdate), 1, 4) concat '-' concat substr(digits(numdate), 5, 2) concat '-' concat substr(digits(numdate), 7, 2))

Für die Abfrage, wenn der Parameter ein Datum ist musst du umgekehrt arbeiten:

year(?) * 10000 + month(?) * 100 + day(?)

Hierbei ist natürlich das Problem, dass für jedes "?" ein Parameter übergeben werden muss.

Ab V5R3 geht auch folgendes für Datum nach JJJJMMTT:

dec(replace(char(?, iso), '-', ''))

Für Decimal nach Datum gibts leider keinen neuen Weg.
Alternativ kannst du dir auch eigene SQL-Funktionen für dieses Problem schreiben.

VOS
15-09-09, 08:49
Guten Tag

Ich hätte noch 2 andere Fragen:

Ist es auch möglich, vom Excel aus direkt Parameter zu setzen, ohne in den Microsoft Editor zu gehen?

Gibt es ausser Access noch eine andere Lösung, wenn man zuviele Daten hat, ausser über Parameter zu gehen?

Das Problem ist, wir haben kein DWH und erstellen momentan unsere Reports auf diese "Primitive" Art, jedoch stossen wir aber langsam sicher an ein kapazitätsproblem.

Besten Dank für Deinen Feedback
Gruss Sven

Fuerchau
15-09-09, 08:58
Wenn du in der Abfrage "?" verwendest, kannst du nach Fertigstellung der Abfrage die Parameter über den Eigenschaftendialog innerhalb von Excel einzelnen Zellen zuordnen.
Je nach Excel-Version (2000-2007) sind die Einstellungen an verschiedenen Stellen.
Zusätzlich kannst du auch einstellen, dass die Daten beim Öffnen des Excel's automatisch aktualisiert werden.

VOS
15-09-09, 09:04
Besten Dank für Deinen Feedback.

Gerne möchte ich nochmals auf das "Datum Problem" zurück kommen.

Ich habe es in einer Excel Tabelle mit SVERWEIS gelöst. Gibt es im Excel eine möglichkeit einen Text in ein Datum umzuwandeln?

Bsp. 20090101 (ist Text vom Microsoft Editor ) umwandeln in 2009.01.01 ( Datum )

Hier hatte ich ein Problem und musste alle Daten manuell nachpflegen. Hinter jedem Datum ist ja ein Wert hinterlegt.

Danke nochmals für Deinen Feedback :)

Fuerchau
15-09-09, 10:28
Da ist Excel nicht ganz so flexibel.
Besser wäre es, wenn du in der Abfrage per DATE(...), s.o., direkt ein Datum bekommen würdest.
Ansonsten sind folgende Funktionen Hilfreich:

=DATWERT(TEXT(Zellbezug;"0000-00-00"))

Jetzt musst du die Zelle nur noch als Datum formatieren.

Excel speichert Datumwerte immer als Zahl seit 30.12.1899 (2 = 1.1.1900)