Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Access Neuling, Hochkomma vor Zahlen entfernen

Begonnen von Andreas Hanisch, Oktober 09, 2014, 16:05:42

⏪ vorheriges - nächstes ⏩

Andreas Hanisch

Guten Tag Access-Freunde,

meine Name ist Andreas Hanisch und ich bin hier im Forum absoluter Neuling. In Access bin ich intensiver auch erst seit einer Woche unterwegs und habe meine ersten Tabellenimporte, Abfragen und einfache VBA/ SQL Befehlszeilen erkundet.

Ich komme von Excel zu Access. In Excel bin ich seit 2006 intensiv unterwegs und habe mir dort auch das Programmieren von VBA beigebracht.
Ich bin nun jedoch an einem Punkt an dem mir die Erkenntnis dämmert, daß es mehr geben muß, als Merkmale zu diversen Attributen/ Keys über dutzende SVerweise in Excel hinzuzufügen. Da mich überdies auch die Datenbanksprache SQL reizt, habe ich mich also entschlossen nun Access besser kennen zu lernen.
Ich will mir eine kleine Beispieldatenbank erschaffen, in welcher ich die gängigsten Probleme simuliere und selbst lösen will. Das wird alles nur in kleinen Schritten möglich sein und auch nur mit viel Recherche und dem ein oder anderen Tip aus dem Forum. Ich will keine fertigen Lösungen, sondern kleine Anregungen von erfahrenen Anwendern.

Heute nun wende ich mich erstmalig ans Forum, da meine vergangen Recherchen mich mit drei Optionen konfrontieren und ich nicht weiß, welchen Weg ich einschlagen soll.

Problem: Zahlen (Attributschlüssel) werden als Zahl mit führendem Hochkomma importiert. Dadurch kann ich den Datentyp der Spalte nicht auf Zahl umstellen. Da ich aus Excel weiß welchen Ärger falsche Datentypen verursachen, will ich von Anfang an auf Datenqualität achten.
An die Datenquelle selber, bzw. deren Übergabe an Access kann ich nichts ändern. Ich könnte über ein Makro in Excel die Daten vorbereiten, aber ich vermute Access kann das nach dem Import selber. Folgende drei Möglichkeiten haben sich aus meinen Recherchen ergeben:

1. Ein VBA Skript über alle Tabellen laufen lassen und in bestimmten Feldern, deren Namen bekannt sind, alle Datensätze loopen und über ein Replace das Hochkomma entfernen. Das habe ich versucht, aber als ,,Excelkind" hatte ich noch Probleme mit Feld anstatt Spalte, sowie einer Loop im Recordset. Nachdem die Ersetzung geschehen ist, müßte ich über VBA noch den Datentyp der Spalten auf Long schalten.

2. Ein Post hat mich auf die Idee gebracht über DoCmd.RunSQL SQL-Statements zur Ersetzung und Änderung des Datentyps über VBA zu verwenden. Was ich bisher von SQL gesehen habe, mußte ich hier vermutlich weniger Schleifen verwenden, als bei einer Loop über Tables und Recordset.

3. Über eine Ersetzen Formel in einer berechneten Spalte. Wenn ich diese berechnete Spalte in den Tables habe, dann würde diese bei jedem Datenimport überschrieben. Das ist nicht zielführend. Kann ich eine berechnete Spalte in einer Abfrage implementieren? Wenn ja, geht das über einen Assistenten oder über eine SQL Formulierung? Bei dieser Variante habe ich jedoch Vorbehalte, da ich damit Daten in fragwürdiger Qualität schon bis in meine Abfragen vorlasse.

Welchen Weg würden mir erfahrene Anwender empfehlen. Über Skripte die Daten in den Tabellen bereinigen, noch bevor Abfragen darauf zugreifen? Wenn ja, über reines VBA oder SQL? Oder den dritten Weg? Ohne einen guten Rat kann ich meine Recherchen nicht fortsetzen.

Ich bedanke mich für Eure Aufmerksamkeit und freue mich auf den ein oder anderen Vorschlag.
Grüße aus Berlin, Andreas Hanisch

MaggieMay

Hallo Andreas,

du könntest die externe Datei zunächst einmal verknüpfen und die Daten mittels SQL-Abfrage in die Zieltabelle überführen.
Dabei kannst du auch gleich das störende Hochkomma entfernen und brauchst keine Datentypen zu ändern.
Freundliche Grüße
MaggieMay

MzKlMu

Hallo,
wenn man Daten hat die aufbereitet werden müssen, importiert (oder verknüpft) man die zu importierende Tabelle. Alle Felder werden dabei als Textfelder importiert.
Dann werden die Daten per Anfügeabfrage in die richtige, vorgefertigte Access Tabelle übertragen. In dieser Anfügeabfrage erfolgen dann die Anpassungen.
Das Feld mit dem Hochkomma könnte so in eine Zahl umgewandelt werden:
Wert(Teil([Feldname];2))

Gruß Klaus