Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2012, 16:13   #1
Diamand
Форумчанин
 
Аватар для Diamand
 
Регистрация: 07.04.2007
Сообщений: 102
Вопрос Повесить копирование на кнопку

Добрый день,
Есть такой код на копирование файлов (Он в модуле - "Module1") :

Код:
Option Compare Database

Option Explicit
Public Type SHFILEOPSTRUCT
    hWnd As Long
    wFunc As Long
    pFrom As String
    pTo As String
    fFlags As Integer
    fAborted As Boolean
    hNameMaps As Long
    sProgress As String
End Type

Public Const FO_COPY = 2
Public Const FOF_NOCONFIRMMKDIR = &H200
Public Const FOF_NOCONFIRMATION = &H10

Public Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As Any) As Long
Private Function myFileCopy(NewFilePath As String, DBPath As String)
    Dim sh_op As SHFILEOPSTRUCT
    Dim Ret As Long
    With sh_op
       .hWnd = 0
       .wFunc = FO_COPY
       .pFrom = NewFilePath & vbNullChar & vbNullChar
       .pTo = DBPath & vbNullChar & vbNullChar
       .fFlags = FOF_NOCONFIRMATION Or FOF_NOCONFIRMMKDIR
    End With
    
    Ret = SHFileOperation(sh_op)

End Function
Sub C()
myFileCopy "C:\B.mdb", "C:\Temp\B.mdb"
End Sub
Sub C1()
myFileCopy "C:\B1.mdb", "C:\Temp\B1.mdb"
End Sub
Sub C2()
myFileCopy "C:\B2.mdb", "C:\Temp\B2.mdb"
End Sub
Sub C3()
myFileCopy "C:\B3.mdb", "C:\Temp\B3.mdb"
End Sub
и есть форма где при выборе из выпадающего списка копируется нужный файл но чет не хочет работать .

Код:
Private Sub Кнопка10_Click()
If Pole = B Then Call C
Else 
If Pole = B1 Then Call C1
.................
End Sub
Diamand вне форума Ответить с цитированием
Старый 28.05.2012, 20:02   #2
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Diamand.
"..Есть такой код .. но чет не хочет работать.." - Вы констатировали, а вопрос в чем?
Не вникая в конструкцию могу утверждать - кода слишком много.
Обращаться к API в Вашем случае думаю нет необходимости
задачу вполне можно решить средствами VB(A), примерно так:
Код:
Private Sub Кнопка10_Click()
Const sOldPath = "C:\", sNewPath = "C:\Temp\"
Dim s$
Select Case Pole
Case B: s = "B.mdb"
Case B1: s = "B1.mdb"
Case B2: s = "B2.mdb"
'Case ...
Case Else: '...
End Select
If Not Len(s) = 0 Then
    'предварительное удаление существующего файла
    'If Not Len(Dir(sNewPath + s)) = 0 Then Kill sNewPath + s
    If Len(Dir(sNewPath + s)) = 0 Then FileCopy sOldPath + s, sNewPath + s
End If
End Sub
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 28.05.2012, 23:34   #3
Diamand
Форумчанин
 
Аватар для Diamand
 
Регистрация: 07.04.2007
Сообщений: 102
По умолчанию

Евгений на самом деле на первый взгляд кода много но он сводится к вызову ави типа копирования файлов - ну это когда из папки в папку летают лепестки

а при вызови функции myFileCopy из модуля все ок

Код:
Sub C()
myFileCopy "C:\B.mdb", "C:\Temp\B.mdb"
End Sub
но при указании или ссылки в форме (событие кнопки) не райбайтон , не знаю почему, В принципе если скопировать код в модуль и поменять путь
Код:
myFileCopy "C:\B.mdb", "C:\Temp\B.mdb
код будет работать ИМХО он универсален , но как прикрутить его на форму с выпадающим списком и кнопкой , ума не хватает
Diamand вне форума Ответить с цитированием
Старый 29.05.2012, 11:11   #4
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Diamand.
"..как прикрутить его на форму.."
измените
Private Function myFileCopy ...
на
Public Function myFileCopy ...
и можете вызывать её с любого места, не только с формы.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 29.05.2012, 13:27   #5
Diamand
Форумчанин
 
Аватар для Diamand
 
Регистрация: 07.04.2007
Сообщений: 102
По умолчанию

Добрый день Евгений , про Public я и не вспомнил , спасибо вам !
Diamand вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JavaScript/JQuery!? Как повесить повесить фунцию на событие load? AlienNation JavaScript, Ajax 0 30.09.2011 17:40
Повесить Линь Peperovich Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 5 27.06.2011 19:00
Как повесить обработчик на кнопку Восстановить alexplato Общие вопросы .NET 1 06.02.2011 13:15
как повесить на кнопку 2 действия??? Только_Учусь Общие вопросы Delphi 4 22.09.2008 19:42
Повесить XP ERASERROR Свободное общение 9 28.02.2008 22:51