PDA

Vollständige Version anzeigen : Abfrageprobleme (export aus Excel)


kaosqlco
07.01.2002, 11:16
Hallo Forum,

ich habe eine Verknüpfung mit einer Excel-Datei, in der täglich Daten hinzukommen.
Darin sind Anrufe zu Kundengruppen pro Datum gelistet.
Bei der Abfrage nach Datum, Kalenderwoche und Wochentag bekomme ich unsinnige Daten geliefert:
Bsp.: 02.01.02
Kontrolldatum: Format([Datum];"tt.mm.jj") liefert 13.01.55;
Kalenderwoche: Format([Datum];"ww") liefert 3 und
Wochentag: Format([Datum];"tttt") liefert Donnerstag.
Kontrolldatum habe ich zum Testen mit reingenommen. Offensichtlich wird aus meinem Datum (02.01.02) der 13.01.55 gemacht, sodaß Wochentag und KW für den 13.01.55 wohl stimmen.
Die Datumsspalte ist in Excel als Datum formatiert. In der verknüpften Tabelle ist das Datumsfeld ein Textfeld (läßt sich nicht ändern).
Daran wird es wohl liegen!
Erster Ansatz:
Wenn ich nun eine Tabellenerstellungsabfrage anlege und die Excel-Daten rüberhole, habe ich das Problem, daß das Datumsfeld auch wieder nur ein Textfeld ist und meine Abfrage (siehe oben) die gleichen Werte bringt.
Wie kann ich der Tabellenerstellungsabfrage mitteilen, daß das Datumsfeld das Format Datum haben soll?
Gleiches Problem/Anderer Ansatz:
Da täglich neue Daten in die Exceltabelle geschrieben werden, könnte ich das Ganze aber auch über eine Anfügeabfrage lösen. Hier habe ich aber das Problem, daß ich ausschließen muß, daß Werte doppelt in der Tabelle stehen. Um das Auszuschließen müßte ich Kombinationen von Datumswerten und Kundengruppen indizieren (das Datum taucht mehrmals auf/jede Kundengruppe pro Datum nur einmal). Wie bekomme ich das hin?

Ich hoffe, daß man das nachvollziehen kann und die vielen klugen Köpfe im Forum eine Lösung für mich haben.

Danke und Gruß, Jan

Ohnesorg
07.01.2002, 15:01
Hi Jan,

ich selbst hatte das Problem auch einmal.
Nach endlosen Versuchen habe ich die Lösung gefunden. Leider existiert sie nicht mehr, da von der Firma einer anderen Lösung zugestimmt wurde.

Ich hatte das Problem wie folgt gelöst.
Eine Tabelle erstellt mit drei Spalten (1: Name der Spalte, 2: Datentyp der Spalte, 3: Größe der Spalte Alle spalten der Excel - Liste dort einfügen. Also Spalte heißt in der Excel-Tabelle Positionsnummer. Ist vom Datentyp ein Lon Integer.
Dann trägst Du dies in die Access-Tabelle ein. Funktion schreiben
In der Funktion erstellst Du eine Tabelle. Die Spaltennamen, Datentypen und Größen entnimmst Du aus der erstellten Referenztabelle.
Verlinken der Excel-Liste
Nun verlinkst Du die Excel-Liste (Verknüpfung reicht aus).
Übernahme der Werte aus der Excel - Liste in die neu erstellte Tabelle
Das funzt recht einfach per Funktion.


Sollten die Werte nicht korrekt übernommen werden, kannst Du per Script die Werte in das entsprechende Format konvertieren, bevonr sie eingefügt werden. Beispielsweise mittels Dummy-Variable.

MarioR
08.01.2002, 06:28
Hallo Jan,

noch 2 Gedanken:

1. Eventuell macht die Feldbezeichnung "Datum" Probleme.

2. Änder die Ausdrücke mal so ab: Kalenderwoche: Format(ZDate([Datum]);"ww").

kaosqlco
08.01.2002, 17:57
Hallo und danke für die schnelle Reaktion.

Ich habe weiter auf meinem Problem herumgedacht. Das Ganze dient letztendlich einer Statistikerstellung. Dafür existiert schon eine Tabelle (tblGesamt) mit Werten aus 2000/2001 (die habe ich händisch aus Excel geholt). Ab jetzt will ich die Daten automatisch anfügen lassen.
Dafür habe ich eine tblGesamt2002 mit einem Feld 'Datum' im Format Datum/Uhrzeit erstellt.
Mit DoCmd.RunSQL "DELETE * from tblGesamt2002;", False
lösche ich die Daten der Tabelle. Danach fülle ich sie wieder per Anfügeabfrage mit allen Daten aus der Exceltabelle.
Jetzt habe ich zwei gleich aufgebaute Tabellen (tblGesamt2002 und tblGesamt).
Nun muß ich die Daten aus tblGesamt2002 an tblGesamt anfügen, aber Duplikate vermeiden.
Wie bekomme ich das per Abfrage hin (Kriterium: alle Datumswerte aus tblGesamt2002, die nicht in tblGesamt enthalten sind)?

@Mario, wenn mein Feld Datum den Typ Datum hat, gibt es keine Probleme (ich merke mir aber den Tipp).

Gruß Jan

kaosqlco
15.01.2002, 10:00
Hallo,

ich habe es selbst rausbekommen (kann sein, daß es etwas umständlich ist).
Ich ermittle das größte (aktuellste) Datum in meiner tblGesamt und füge über eine Anfügeabfrage die Zahlen aller neueren Daten ("Datums") hinzu.

Gruß Jan