Я новичок здесь, поэтому, пожалуйста, будьте осторожны:)
Мой вопрос: могу ли я получить SAS (9.4 с PC Files Server), чтобы вызвать функцию в MS ACCESS, которая импортирует .txt файлы, которыеSAS выплюнул раньше?
Справочная информация: Я унаследовал базу данных Access (.accdb, используя версию 2010), исходные данные которой получены из SAS.Текущий метод заключается в том, что SAS выкладывает TXT-файлы, которые я (полу-вручную) импортирую в базу данных.Полу-вручную в том, что есть кнопка / макрос, который импортирует файлы, но я должен открыть базу данных и нажать кнопку.Я бы предпочел вообще не вмешиваться.
Я попытался пропустить импорт таблиц, используя PROC EXPORT (и PC FILES SERVER) и более позднюю версию PROC SQL (с базой данных Access, назначенной через libname), чтобы нажатьданные из SAS напрямую.Однако, по сравнению со старым подходом, после компактирования и восстановления база данных по-прежнему примерно в два раза больше.Я искал в сети, как избежать увеличения размера, но не нашел ответов.
Поэтому я бы хотел, чтобы метод SAS выплевывал файлы .txt, но также имел SAS, запускающий функцию доступа в базе данных, котораяимпортирует файлы.
Кнопка в Access активирует этот код:
Private Sub ImportSASDataButton_Click()
Dim Update As Byte
Update = MsgBox("Have you ran the SAS program that creates the text files?" _
, vbYesNo, "Check files have been created")
If Update = vbYes Then ImportTables
Me.CloseFormButton.SetFocus
Me.ImportSASDataButton.Enabled = False
End Sub
Что, если «ДА» активирует этот код (это функция, которую я хочу вызвать напрямую):
Function ImportTables()
Dim db As Database
Dim ITables As Recordset
Set db = CurrentDb
Set ITables = db.OpenRecordset("Tables", dbOpenDynaset)
Do Until ITables.EOF
Call ImportData(ITables![TableName], _
ITables![SpecificationName], _
ITables![FileName], _
ITables![DeleteExisting], _
ITables![Use])
ITables.MoveNext
Loop
ITables.Close
End Function