Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: Импорт .txt файла в Access.  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
pantera87
FName = Trim(.SelectedItems.Item(1))

Здесь Вы из коллекции .SelectedItems берете только первый элемент. Пройдите по всей коллекции в цикле.
1 мар 12, 22:26    [12180134]     Ответить | Цитировать Сообщить модератору
 Re: Импорт .txt файла в Access.  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
pantera87
k = MsgBox("Импорт файла завершён", vbInformation)
On Error Resume Next

Интересные две строчки. Зачем здесь переменная k? А вторая строчка зачем вообще?
1 мар 12, 22:43    [12180180]     Ответить | Цитировать Сообщить модератору
 Re: Импорт .txt файла в Access.  [new]
pantera87
Member

Откуда:
Сообщений: 47
Владимир Саныч,

Решил просто ограничится простым выводом сообщения, и к функции MsgBox обратился как к оператору, собственно как приведено в примерах!
---------------------------
Private Sub Кнопка0_Click()
Dim FName As String
Dim result As Integer
With Application.FileDialog(1)
.Title = "Выбор файлов"
.InitialFileName = "C:\" 'путь по умолчанию'
.AllowMultiSelect = True
.Filters.Clear
.Filters.Add "Text Files", "*.txt", 1
result = .Show
If result = 0 Then Exit Sub
FName = Trim(.SelectedItems.Item(1))
End With
DoCmd.TransferText acImportDelim, "CollectedСпецификацияИмпорта", "Collected", "I:\[Инстик]\Collected.txt"
k = MsgBox("Импорт файла завершён", vbInformation)
End Sub
---------------------------
Просто нечто подобное нашлось в примерах, и я его позаимствовал и исправил... но тот что нужно, пока не получается.
1 мар 12, 23:06    [12180236]     Ответить | Цитировать Сообщить модератору
 Re: Импорт .txt файла в Access.  [new]
Анатолий ( Киев )
Guest
pantera87
как можно реализовать импорт нескольких файлов? Из просмотренных и "прочитанных" примеров, начал что то "писулькать" сам! :) Т.е. при нажатии кнопки, запускается диалоговое окно с выбором файлов для импорта

.. но тот что нужно, пока не получается.
Имейте ввиду, что Application.FileDialog в А2007/2010 не работает (или работает не всё). Те примеры диалога, что вы нашли, слишком громоздки и непонятны для начинающих профи. Можно проще:
Public Function SelectFileDialogForAccess(Optional fSaveMode As Boolean, _
    Optional strInitialDir As String, _
    Optional strFilterString As String = "Все файлы (*.*)|Файлы MSAccess (*.mdb;*.mde;*.mda)", _
    Optional ByVal fMultiSelect As Boolean, _
    Optional ByVal DefSaveFileName As String, _
    Optional strTitle As String = "Выбор файла", _
    Optional ByVal strButtonName As String) As String
'РАБОТАЕТ ТОЛЬКО В ACCESS! Версия не ниже А2000.
'Открывает диалог выбора файла или нескольких файлов (при fMultiSelect=True).
'Возвращает полный путь к выбранному файлу или строку из полных путей, разделеленных символом vbTab (при fMultiSelect=True).
'Список файлов можно ограничить фильтром в strFilterString (синтаксис должен соответствовать предложенному по умолчанию).
'В strInitialDir можно указать путь к папке, которая будет открыта при вызове диалога.
'При fSaveMode=Труе в диалоге становится доступным поле "Имя файла", где может быть изменено имя выбранного файла.
' При вызове диалога в этом поле отражается текст, указанный в DefSaveFileName, который функция вернет, если не выделять
' другой файл в диалоге (папку можно менять). При этом, если не указано расширение и выбран фильтр по конкретному расширению,
' то оно добавится к имени файла.
'В strTitle и strButtonName можно указать заголовок диалога и наименование кнопки выбора.
Dim ret As Long, strFile As String, intFlags As Integer

    WizHook.Key = 51488399
 
 If fSaveMode Then
    strFile = DefSaveFileName & String(255, Chr(0))
    fMultiSelect = False
 ElseIf fMultiSelect Then
    strFile = String(5000, Chr(0))
    intFlags = 12
 Else
    strFile = String(255, Chr(0))
 End If
    
    ret = WizHook.GetFileName(Application.hWndAccessApp, "", strTitle, strButtonName, _
        strFile, strInitialDir, strFilterString, 0, 0, intFlags, Not fSaveMode)
        
' Проверим, не произошел ли возврат в результате нажатия клавиши Esc (-302)
 If ret <> -302 Then
    SelectFileDialogForAccess = strFile
 End If
End Function
А вот пример, выводящий выбранные файлы в окне отладки. Вместо Debug.Print можно выполнить DoCmd.TransferText.
Sub TestDialog()
Dim s$, v, i&
s = SelectFileDialogForAccess(, CurrentProject.Path, , True)
If Len(s) = 0 Then Exit Sub
v = Split(s, vbTab)
For i = LBound(v) To UBound(v)
Debug.Print v(i)
Next
End Sub

Ну и до кучи диалог выбора папки на той же основе:
Public Function SelectFolderDialogForAccess(Optional strInitialDir As String, _
    Optional strTitle As String = "Выбор папки", _
    Optional ByVal strButtonName As String) As String
Dim ret As Long, strFolder As String
'РАБОТАЕТ ТОЛЬКО В ACCESS! Версия не ниже А2000.
'Открывает диалог выбора папки, возвращает полный путь к выбранной папке.
'В strInitialDir можно указать путь к папке, которая будет открыта при вызове диалога.
'В strTitle и strButtonName можно указать заголовок диалога и наименование кнопки выбора.
    
    WizHook.Key = 51488399
 
    strFolder = String(255, Chr(0))
    
    ret = WizHook.GetFileName(Application.hWndAccessApp, "", strTitle, strButtonName, _
        strFolder, strInitialDir, "*.*", 0, 0, 32, True)
        
' Проверим, не произошел ли возврат в результате нажатия клавиши Esc (-302)
 If ret <> -302 Then
    SelectFolderDialogForAccess = strFolder
 End If
End Function
3 мар 12, 16:42    [12188508]     Ответить | Цитировать Сообщить модератору
 Re: Импорт .txt файла в Access.  [new]
pantera87
Member

Откуда:
Сообщений: 47
Анатолий ( Киев ),

Спасибо большое за представленные примеры, будут очень полезны...
Но, почему то, кнопка на форме (Кнопка0_Click), после нажатия, не выполняет ни каких действий!
У меня Access 2003...
5 мар 12, 22:11    [12199912]     Ответить | Цитировать Сообщить модератору
 Re: Импорт .txt файла в Access.  [new]
Кнопитем
Guest
pantera87,

Свойства кнопки проверили? Есть ли там процедура?

Надо же, опять всё темным-темно, ничего не видно
5 мар 12, 22:29    [12199993]     Ответить | Цитировать Сообщить модератору
 Re: Импорт .txt файла в Access.  [new]
pantera87
Member

Откуда:
Сообщений: 47
Кнопитем,

Да конечно в свойстве кнопке процедура присутствует:
Private Sub Кнопка0_Click()
    Dim s$, v, i&
    s = SelectFileDialogForAccess(, CurrentProject.Path, True)
    If Len(s) = 0 Then Exit Sub
    v = Split(s, vbTab)
    For i = LBound(v) To UBound(v)
    DoCmd.TransferText acImportDelim, "CollectedСпецификацияИмпорта", "Collected", "C:\"
    Next
End Sub


Но, я видимо снова допустил ошибку в коде... это всё потому что я ещё только только начинаю, "чайник", так сказать
И без помощи, пока не справится :)
6 мар 12, 12:30    [12202048]     Ответить | Цитировать Сообщить модератору
 Re: Импорт .txt файла в Access.  [new]
Анатолий ( Киев )
Guest
pantera87
    For i = LBound(v) To UBound(v)
    DoCmd.TransferText acImportDelim, "CollectedСпецификацияИмпорта", "Collected", "C:\"
    Next


Но, я видимо снова допустил ошибку в коде...
Получить путь к файлу из массива нужно так: v(i). И где вы его указываете для TransferText?

Вы умеете ставить точки останова и выполнять процедуру в пошаговом режиме?
6 мар 12, 14:08    [12203209]     Ответить | Цитировать Сообщить модератору
 Re: Импорт .txt файла в Access.  [new]
pantera87
Member

Откуда:
Сообщений: 47
Анатолий ( Киев ),
Вы умеете ставить точки останова и выполнять процедуру в пошаговом режиме?


Конечно есть трудности, я лишь не давно начал изучать, с Access это первое знакомство.
И пока мало что понимаю :( Уже имеется литература по Access, и всё равно без конкретных примеров, пока понять не получается!
Те примеры, что Вы предложили, они подходят.... но не получается их, так скажем "связать", и вопрос сейчас в том, как
Public Function SelectFileDialogForAcces
повесить на кнопку в форме, которое имеет имя "ImportCollected"?
6 мар 12, 14:32    [12203512]     Ответить | Цитировать Сообщить модератору
 Re: Импорт .txt файла в Access.  [new]
Анатолий ( Киев )
Guest
pantera87
Private Sub Кнопка0_Click()
    Dim s$, v, i&
    s = SelectFileDialogForAccess(, CurrentProject.Path, True)
    If Len(s) = 0 Then Exit Sub
    v = Split(s, vbTab)
    For i = LBound(v) To UBound(v)
    DoCmd.TransferText acImportDelim, "CollectedСпецификацияИмпорта", "Collected", "C:\"
    Next
End Sub
Да все у вас правильно в этой процедуре кроме одного - методу TransferText вместо имени файла в v(i) вы передаете "C:\". Замените на:
DoCmd.TransferText acImportDelim, "CollectedСпецификацияИмпорта", "Collected", v(i)
6 мар 12, 14:51    [12203711]     Ответить | Цитировать Сообщить модератору
 Re: Импорт .txt файла в Access.  [new]
pantera87
Member

Откуда:
Сообщений: 47
Анатолий ( Киев ),

Вот что я пропустил, теперь все работает... Спасибо :)
Можете ли Вы подсказать, на счёт литературы "для начинающих"... или может есть какие нить книги или статьи "эталонные", да ещё если с ссылками на них, было бы вообще прекрасно!!! Инфы в инете море, читать всё, крыша уедет))))
Заранее спасибо ;)
6 мар 12, 17:03    [12205202]     Ответить | Цитировать Сообщить модератору
 Re: Импорт .txt файла в Access.  [new]
Анатолий ( Киев )
Guest
pantera87
Можете ли Вы подсказать, на счёт литературы "для начинающих"...
Самая путняя литература для начинающих - справка от Access 97 rus. Ее можно найти в инете, прочитать всю пару раз не жалея времени и держать под рукой. Процентов 80-90 - то же, что и в более поздних версиях.
6 мар 12, 17:27    [12205487]     Ответить | Цитировать Сообщить модератору
 Re: Импорт .txt файла в Access.  [new]
EvAnd
Member [заблокирован]

Откуда: dotu.ru/2004/01/29/20040129-jazyk_all/
Сообщений: 1896
pantera87
Анатолий ( Киев ),

Вот что я пропустил, теперь все работает... Спасибо :)
Можете ли Вы подсказать, на счёт литературы "для начинающих"... или может есть какие нить книги или статьи "эталонные", да ещё если с ссылками на них, было бы вообще прекрасно!!! Инфы в инете море, читать всё, крыша уедет))))
Заранее спасибо ;)

Бумажные подойдут?
6 мар 12, 17:37    [12205600]     Ответить | Цитировать Сообщить модератору
 Re: Импорт .txt файла в Access.  [new]
pantera87
Member

Откуда:
Сообщений: 47
Бумажные подойдут?


Подошли бы!
6 мар 12, 18:11    [12205885]     Ответить | Цитировать Сообщить модератору
 Re: Импорт .txt файла в Access.  [new]
pantera87
Member

Откуда:
Сообщений: 47
Анатолий ( Киев ),
Нужен ещё один МАСТЕР-КЛАСС от Вас!!!! :)
Сейчас диалог работает, но импортируется только файл с именем "Collected.txt" (например: файл "1.txt", нет, файлы скажем Эксель ".xls" нет, выскакивает ошибка - "импорт не возможен"). Возможно в дальнейшем файлы Эксель будут нужны, сейчас же данные для импорта мне предоставляются в ".txt". При повторном импорте этого же файла "Collected.txt", добавляется в таблицу "Collected", т.е. данные в таблице удваиваются, собственно то что и нужно, но нужен импорт, не только с именем "Collected.txt"
После не больших изменений, всё выглядит так:
Private Sub Кнопка0_Click()
    Dim s$, v, i&
    s = SelectFileDialogForAccess(, CurrentProject.Path, True)
    If Len(s) = 0 Then Exit Sub
    v = Split(s, vbTab)
    For i = LBound(v) To UBound(v)
    DoCmd.TransferText acImportDelim, "CollectedСпецификацияИмпорта", "Collected", v(i)
    Next
End Sub

Public Function SelectFileDialogForAccess(Optional fSaveMode As Boolean, _
    Optional strInitialDir As String = "C:\", _
    Optional strFilterString As String = "Все файлы (*.*)|Файлы MSAccess (*.mdb;*.mde;*.mda)|Текстовые файлы (*.txt;*.rtf)|Файлы MSExcel (*.xls)", _
    Optional ByVal fMultiSelect As Boolean, _
    Optional ByVal DefSaveFileName As String, _
    Optional strTitle As String = "Выбор файла", _
    Optional ByVal strButtonName As String = "OK") As String

    Dim ret As Long, strFile As String, intFlags As Integer

    WizHook.Key = 51488399
 
 If fSaveMode Then
    strFile = DefSaveFileName & String(255, Chr(0))
    fMultiSelect = True
 ElseIf fMultiSelect Then
    strFile = String(5000, Chr(0))
    intFlags = 12
 Else
    strFile = String(255, Chr(0))
 End If
    
    ret = WizHook.GetFileName(Application.hWndAccessApp, "", strTitle, strButtonName, _
        strFile, strInitialDir, strFilterString, 0, 0, intFlags, Not fSaveMode)
        
 If ret <> -302 Then
    SelectFileDialogForAccess = strFile
 End If
End Function
6 мар 12, 20:16    [12206450]     Ответить | Цитировать Сообщить модератору
 Re: Импорт .txt файла в Access.  [new]
Анатолий ( Киев )
Guest
pantera87
Нужен ещё один МАСТЕР-КЛАСС от Вас!!!! :)
Вам нужен не мастер-класс, а розги!
у меня
s = SelectFileDialogForAccess(, CurrentProject.Path, , True)

у вас
s = SelectFileDialogForAccess(, CurrentProject.Path, True)
Вы умудрились потерять запятую, в результате вместо строки фильтра по умолчанию и режима мультивыбора вы в строку фильтра передаете True (т.е. -1) и вызываете деалог без мультивыбора. Я вообще не понимаю, откуда появляется файл "Collected.txt".
7 мар 12, 13:07    [12209438]     Ответить | Цитировать Сообщить модератору
 Re: Импорт .txt файла в Access.  [new]
EvAnd
Member [заблокирован]

Откуда: dotu.ru/2004/01/29/20040129-jazyk_all/
Сообщений: 1896
pantera87
на счёт литературы "для начинающих"... или может есть какие нить книги или статьи "эталонные"

Книги:
Сурядный, Шумилов. Аксесс 2007.
Г. Гурвиц. Access 2010. Разработка приложений на реальном
примере (есть в магазинах, 400-500 р).

"Эталонные"(есть в сети):
Access 2002. Разработка
настольных приложений,
Разработка
корпоративных приложений для
профессионалов. Литвин, Гетц, Гунделой.

Курсы в интернет:
Иллюстрированный самоучитель по
Microsoft Access 2002:
http://samoucka.ru/document17956.html
Основы офисного
программирования и язык VBA: http://www.intuit.ru/department/
office/vba2000/
7 мар 12, 13:08    [12209440]     Ответить | Цитировать Сообщить модератору
 Re: Импорт .txt файла в Access.  [new]
pantera87
Member

Откуда:
Сообщений: 47
Анатолий (Киев),
Вам нужен не мастер-класс, а мозги!

Да Вы правы, "серого" вещества попрежнему не хватает!
Спасибо за дополнение!
7 мар 12, 20:13    [12212447]     Ответить | Цитировать Сообщить модератору
 Re: Импорт .txt файла в Access.  [new]
pantera87
Member

Откуда:
Сообщений: 47
EvAnd,
Спасибо, будут очень кстати! :)
7 мар 12, 20:15    [12212453]     Ответить | Цитировать Сообщить модератору
 Re: Импорт .txt файла в Access.  [new]
EvAnd
Member [заблокирован]

Откуда: dotu.ru/2004/01/29/20040129-jazyk_all/
Сообщений: 1896
pantera87
Анатолий (Киев),
Вам нужен не мастер-класс, а мозги!

Да Вы правы, "серого" вещества попрежнему не хватает!
Спасибо за дополнение!

Цитата неточная... :-)
Книшки под мышку - и на чердак: учиться, учиться и ещё раз учиться... (по классику)
7 мар 12, 20:24    [12212487]     Ответить | Цитировать Сообщить модератору
 Re: Импорт .txt файла в Access.  [new]
pantera87
Member

Откуда:
Сообщений: 47
EvAnd,
Именно!!!
7 мар 12, 20:53    [12212594]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Microsoft Access Ответить