Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбор файлов, как выбрать файл 
:(
    Опции темы
VirusE
Дата 2.4.2007, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 9.12.2004

Репутация: нет
Всего: нет



Нужно сделать так, что бы из формы базы данных можно было выбирать файл (использоваться будут в основном PDF, но могут быть и другие), а дальше програмно этот файл нужно скопировать в нужную папку, с другим именем, и ссылку на этот файл внести в форму.
Подразумевается, что в форме будут две кнопки, при нажатие на одну из них файл выбирается и т.д., а при нажатии на вторую открывается.
PM MAIL   Вверх
Akina
Дата 2.4.2007, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Поместить на форму контрол по фамилии Common Dialog Control.

Как его использовать и примеры - найти в справке.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
bopoha
Дата 3.4.2007, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Или так, на мой взгляд даже проще как-то получается. не нужно за собой контрол тягать. Подобных функций пруд пруди....

Код

Option Compare Database
Option Explicit

' v 1.0 2005-03-10
' v 1.1 2006-03-21

Type SHITEMID
    cb As Integer 'size of identifier, including cb itself
    abID(1) As Byte ' variable length item identifier
End Type


Type ITEMIDLIST
    mkid As SHITEMID 'list of item identifers
End Type

Type BROWSEINFO
    hwndOwner As Long
    pidlRoot As ITEMIDLIST '???! null
    pszDisplayName As String 'null
    lpszTitle As String
    ulFlags As Integer
    lpfn As Long '???! null
    lParam As Long '??? null
    iImage As Integer '??? null
End Type

Public Const CSIDL_DESKTOP = 0
Public Const CSIDL_PROGRAMS = 2
Public Const CSIDL_CONTROLS = 3
Public Const CSIDL_PRINTERS = 4
Public Const CSIDL_PERSONAL = 5
Public Const CSIDL_STARTUP = 7
Public Const CSIDL_RECENT = 8
Public Const CSIDL_SENDTO = 9
Public Const CSIDL_BITBUCKET = 10
Public Const CSIDL_STARTMENU = 11
Public Const CSIDL_DESKTOPDIRECTORY = 16
Public Const CSIDL_DRIVES = 17
Public Const CSIDL_NETWORK = 18
Public Const CSIDL_NETHOOD = 19
Public Const CSIDL_FONTS = 20
Public Const CSIDL_TEMPLATES = 21

Const BIF_RETURNONLYFSDIRS = 1
Const BIF_DONTGOBELOWDOMAIN = 2
Const BIF_STATUSTEXT = 4
Const BIF_RETURNFSANCESTORS = 8
Const BIF_BROWSEFORCOMPUTER = 4096
Const BIF_BROWSEFORPRINTER = 8192

Const MAX_PATH = 260

Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (ByRef lpFolderOp As BROWSEINFO) As Long
Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal lPIDL As Long, ByRef pszPath As Byte) As Boolean
Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hWnd As Long, ByVal nFolder As Integer, ByRef lPIDL As ITEMIDLIST) As Long



Function VC_FolderDialog(ByVal Title As String, Optional ByVal nFolder As Integer = CSIDL_DESKTOP) As String
' <скачено с msa.polarcom.ru> 2005-02-10
On Error GoTo Err_

    Dim acFolder As BROWSEINFO
    Dim acPath(0 To 259) As Byte
    Dim s As String
    Dim i As Long

    With acFolder
        .hwndOwner = Application.hWndAccessApp 'hWnd
        .lpszTitle = Title
        .ulFlags = BIF_RETURNONLYFSDIRS

        Call SHGetSpecialFolderLocation(Application.hWndAccessApp, nFolder, .pidlRoot)
        'CSIDL_DRIVES
    End With

    Call SHGetPathFromIDList(SHBrowseForFolder(acFolder), acPath(0))

    For i = 0 To 259 Step 1
        If acPath(i) <> 0 Then s = s & Chr(acPath(i))
    Next i

    VC_FolderDialog = s

Exit_:
    Exit Function
Err_:
    Resume Exit_

End Function



PM MAIL WWW ICQ Skype GTalk   Вверх
VirusE
Дата 3.4.2007, 06:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 9.12.2004

Репутация: нет
Всего: нет



Спасибо за советы, но уже все готово (делал через FileDialog),
по поводу Common Dialog Control, я знал, но фича требует регистрации

код получился такой, первый скрипт проверяет наличие ссылки, и решает показывать или нет кнопку, второй запускает гиперссылку, третий запускает четвертый, а четвертый делает все остальное


Код

Private Sub Form_Current() 'видимость кнопки
If Me![giper] <> "" Then
With Me![Кнопка66]
.Visible = True
End With
Else
Me![Кнопка66].Visible = False
End If
End Sub

Private Sub Кнопка66_Click() 'открыть ссылку
If Me![giper] <> "" Then
Me![Кнопка66].HyperlinkAddress = CurrentProject.Path & Me![giper]
Me![Кнопка66].Hyperlink.Follow
Else
Me![Кнопка66].HyperlinkAddress = ""
End If
End Sub

Private Sub Кнопка68_Click()
getFileName
End Sub

Sub getFileName() 'работа с файлом
Dim fileName As String
Dim result As Integer
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Выбор файла"
.Filters.Add "Все файлы", "*.*"
.Filters.Add "Файлы PDF", "*.PDF"
.FilterIndex = 2
.AllowMultiSelect = False
.InitialFileName = CurrentProject.Path
result = .Show
If (result <> 0) Then
fileName = Trim(.SelectedItems.Item(1))
Dim fs As New FileSystemObject
Dim fsrc As String
Dim fdst As String
Dim fdst_e As String
fsrc = fileName
fdst_e = Right(fsrc, 4)
If Left(fdst, 1) <> "." Then
fdst_e = "." & fdst_e
End If
fdst = CurrentProject.Path & "\doks\n_p\n_p_" & Me![n_prot_n_p] & "_" & Me![god] & Me![n] & ".pdf"
g_fdst = "\doks\n_p\n_p_" & Me![n_prot_n_p] & "_" & Me![god] & Me![n] & ".pdf"
On Error GoTo errorhandler
If fs.FileExists(fdst) Then
If MsgBox("Файл уже существует, заменить?", vbYesNo + vbQuestion, "Внимание") = vbYes Then
fs.DeleteFile fdst
Else
Exit Sub
End If
fdst = fdst
End If
If fs.FileExists(fsrc) Then
fs.CopyFile fsrc, fdst, False
Me![giper] = g_fdst
If Me![Кнопка66].Visible = False Then
Me![Кнопка66].Visible = True
End If
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
End If
Exit Sub
errorhandler:
MsgBox fdst & " exists"
End If
End With
End Sub


Это сообщение отредактировал(а) VirusE - 3.4.2007, 07:45
PM MAIL   Вверх
bopoha
Дата 3.4.2007, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Открыть файл можно и так: Application.FollowHyperlink 


ЗЫ: Не могу удержаться. Много обещающее название Кнопка66. Не рекомендую использовать синтаксис Me![giper] - не компилируемо и аналогично Me("giper"). Лучше так - Me.giper. Не понятное использование With - вернее не до конца. И коменты.... но это совершенно другая тема.

Это сообщение отредактировал(а) bopoha - 3.4.2007, 18:17
PM MAIL WWW ICQ Skype GTalk   Вверх
VirusE
Дата 4.4.2007, 06:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 9.12.2004

Репутация: нет
Всего: нет



Знать бы это раньше, а то сейчас как то переделывать неохота, про кнопки да, имена полей проименованы, а с кнопками - поздняк метаться. Когда имеется уже полторы сотни форм (включая подчиненные), как-то отпадает желание к глобальным переделкам.К тому же я не претендую на звание супер-профи. Главное все работает как надо.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0715 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.