News

Artikel

Foren Join

Projekte List

Links

Random

Über Redscope Previous

Next

Startseite › Foren › Allgemeine Fragen zu SAS

IMPORT / EXPORT Access 20 May, 2009 - 09:43 — absolute beginner

Hallo, ich / wir haben folgendes Problem. Wir importieren (PROC IMPORT) den Inhalt einer Access Eingabemaske (Formular) in SAS 9.2. Nach der Bearbeitung einiger Variablen exportieren (PROC EXPORT) wir die Daten wieder in eine andere Eingabemaske. Dies muss öfter durchgeführt werden, deshalb wird die Datenbank mehrfach kopiert (in SAS x copy...). Da es sich um längere Texteingaben handelt wurde das Format (Datentyp) in Access auf Memo deklariert. Nun schneidet SAS den Text ab und verändert die Formate, in diesem Fall von Memo nach Text in der 'Export'-Eingabemaske. Kann man sagen welches Format importiert werden soll und somit auch in welchem Format exportiert werden soll? Vielen Dank Foren: Allgemeine Fragen zu SAS Log in or register to post comments

Importieren von Memofeldern

20 May, 2009 - 12:36 — JanHeuer

Hallo Herr Jäckel, Ich nehme an, dass sie nicht ein Formular importieren, sondern eine Tabelle, die einem Formular zugrunde liegt. Sie müssen beim Importieren die Option Memosize angegeben. Unter der Annahme, dass es eine Tabelle "Tabelle1" gibt in der Datenbank "db1.mdb", die ein Memofeld mit dem Namen "Memo" hat, führt folgender Code zu einem vernünftigen Ergebnis.

PROC IMPORT OUT = WORK.Tabelle1 DATATABLE = "Tabelle1" DBMS = ACCESS REPLACE ; DATABASE = "C:\Dokumente und Einstellungen\heuer\Eigene Dateien\db1.mdb"; SCANMEMO = YES; USEDATE = NO; SCANTIME = YES; MEMOSIZE = 32767; RUN; DATA _NULL_; SET Tabelle1; len = LENGTH(Memo); vlen = VLENGTH(Memo); PUT len= vlen=; RUN; PROC EXPORT DATA = WORK.Tabelle1 OUTTABLE = "memo_exp" DBMS = ACCESS REPLACE ; DATABASE = "C:\Dokumente und Einstellungen\heuer\Eigene Dateien\db1.mdb"; RUN; PROC IMPORT OUT = WORK.memo_exp DATATABLE = "memo_exp" DBMS = ACCESS REPLACE ; DATABASE = "C:\Dokumente und Einstellungen\heuer\Eigene Dateien\db1.mdb"; SCANMEMO = YES; USEDATE = NO; SCANTIME = YES; MEMOSIZE = 32767; RUN; DATA _NULL_; SET memo_exp; len = LENGTH(Memo); vlen = VLENGTH(Memo); PUT len= vlen=; RUN; Das Log der DATA _NULL_ Statements ist:

124 DATA _NULL_; 125 SET Tabelle1; 126 len = LENGTH(Memo); 127 vlen = VLENGTH(Memo); 128 PUT len= vlen=;

129 RUN; len=414 vlen=472 len=472 vlen=472 NOTE: There were 2 observations read from the data set WORK.TABELLE1. NOTE: DATA statement used (Total process time): real time 0.01 seconds cpu time 0.00 seconds 150 DATA _NULL_; 151 SET memo_exp; 152 len = LENGTH(Memo); 153 vlen = VLENGTH(Memo); 154 PUT len= vlen=; 155 RUN; len=414 vlen=472 len=472 vlen=472 NOTE: There were 2 observations read from the data set WORK.MEMO_EXP. NOTE: DATA statement used (Total process time): real time 0.00 seconds cpu time 0.00 seconds

Ich hoffe, dies Beispiel hilft ihnen weiter. Gruß Jan Log in or register to post comments

Perfekt. bis jetzt hat es

26 May, 2009 - 09:48 — absolute beginner

Perfekt. bis jetzt hat es super geklappt! Der wirkliche Durchlauf ist am Mittwoch. Vielen Dank für Ihre Mühen! Grüße Evelyn Log in or register to post comments

Weiteres Problem

28 May, 2009 - 10:10 — absolute beginner

Ich kopiere eine Access Datenbank 25 mal in einer Schleife mit dem x "copy Quelle Ziel" und die Formate der Access Tabelle, wie z.B. Memo werden einfach geändert. Und nichtmal konstant es werden bei jedem Programmneustart andere Formate wahllos vergeben! Weiß jemand woran dies liegen könnte. Somit schneidet es mir wieder den Text ab. Log in or register to post comments

Warum?

28 May, 2009 - 17:56 — JanHeuer

Hallo Evelyn, warum kopierst du die Access-Datenbank 25 mal? Wenn du den X-Befehl für das Kopieren nimmst, ist das eigentlich auch kein SAS Problem, sondern ein Betriebssystemproblem. Das Betriebssystem öffnet für das Kopieren aber nicht die Accesdatenbank sondern kopiert sie einfach als einzelne Datei. Hast du schon geprüft, ob es Fehler beim Kopieren gab? Ist die Hardware in Ordnung? Schöne Grüße Jan Log in or register to post comments

MEMOSIZE

11 August, 2009 - 09:58 — Jessi

Das Problem liegt nicht daran was Evelyn beschrieben hat. Sondern es ist so, dass SAS die Memogröße von der ersten Tabelle (Formular) verwendet. Und wenn dieser nun z.B. nur ein Buchstabe reinschreibt. Werden in den restlichen 24 auch nur ein Buchstabe übertragen. HILFEEE=) bitte! Log in or register to post comments

SCANMEMO = NO;

11 August, 2009 - 22:37 — JanHeuer

Hallo, wenn man die Option SCANMEMO = NO setzt, richtet sich SAS nach der Größenangabe in der Option MEMOSIZE.

PROC IMPORT OUT = WORK.Tabelle1 DATATABLE = "Tabelle1" DBMS = ACCESS REPLACE ; DATABASE = "C:\Dokumente und Einstellungen\heuer\Eigene Dateien\db1.mdb" SCANMEMO = NO; USEDATE = NO; SCANTIME = YES; MEMOSIZE = 32767; RUN; Dann wird das Textfeld, dass das Memofeld aufnimmt, auch dann groß genug gewählt, wenn der erste Eintrag nur sehr kurz ist. Schöne Grüße Jan Log in or register to post comments

Vielen Dank =)

12 August, 2009 - 07:59 — Jessi

Danke Danke Dank, dass hat mich heute schon ein Lächeln weitergebracht. Hat funktioniert. Grüße Log in or register to post comments