Рассылка статей | Выпуск 29. ActiveX. Ftp-доступ
Leadersoft.ru

Рассылка статей

Программирование и готовые решения

В этом разделе сайта дается информация от https://leadersoft.ru о статьях по программированию, ответах на вопросы и др. Статьи рассылаются подписчикам и публикуются на разных сервисах. Возможно некоторая информация устарела и ссылки не работают, но эти сведения могут быть полезны, если Вы серьезно занимаетесь разработкой баз данных

Выпуск 29. ActiveX. Ftp-доступ

Коды для Access 2000
     26.04.2001. Добавлен новый пример 3 в файл: la_activex.mdb. Подробно рассказывается о получении файлов с Интернета для базы данных.

Работа. Сообщение из конференции
 1000 руб за готовое решение ! (Сергей Анисимов) 25.04.2001 Нужна помощь.
1. Функция вызова удаленного соединения через модем с другим компьютером в фоновом режиме.
2. Функция запуска другого процесса, обрабатывающего базы данных на текущем и удаленном компьютере в фоновом режиме.
3. Закрытие процесса и удаленного соединения.
   Ответ. В принципе решение найти можно, оно чем-то аналогично приведенному ниже по ftp-доступу (только надо использовать другой элемент). Опубликуйте email, возможно кто-то и откликнется

Ответы на вопросы

Вопрос 3. Имеем: - доступ по HTTP протоколу к текстовому файлу: httр://путь.../имя_файла.txt Необходимо: - регулярно копировать этот файл для дальнейшей обработки копии в автоматическом режиме, т.е. с обработкой ошибок в случае недоступности исходного файла.
  Ответ. Копирование txt файлов с Интернета на диск, а далее в базу данных проводится с помощью ActiveX элемента Microsoft Internet Transfer. Имя файла библиотеки: msinet.ocx. Для регистрации в базе данных используйте методы изложенные в примере 1 файла: la_activex.mdb. Для начала определим новый класс с событиями для того, чтобы можно было контролировать процесс загрузки.
1. Назовем его, например, MicrosoftInet.
Public WithEvents ftp As inet ' Определяем переменную для доступа к ftp серверу

' == Обрабатываем сообщения при изменении статуса загрузки данных
Private Sub ftp_StateChanged(ByVal State As Integer)
Select Case State
Case icConnecting: funPrintProgress "Поиск соединения ..."
Case icConnected: funPrintProgress "Установлено соединение"
Case icRequesting: funPrintProgress "Запрос ..."
Case icResponseReceived: funPrintProgress "Получено ..."
Case icResponseCompleted: funPrintProgress "Данные загружены"
Case icError:
  funPrintProgress ftp.ResponseInfo
  If ftp.ResponseCode = 80 Then 'Пример обработки кода ошибки
  End If
End Select
End Sub

2. Созданный класс позволяет нам определять загрузку сразу нескольких файлов. О том как сделать загрузку для 1 файла указано ниже

' == Инициализация объектов происходит при открытии формы
Private Sub Form_Open(Cancel As Integer)
Set ftpInet = New MicrosoftInet ' Создаем новый объект
Set ftpInet.ftp = Me.ftp.Object ' Присваиваем
End Sub

' == Обрабатываем событие загрузки формы
Private Sub butLoad_Click()
Dim strCommand As String
On Error GoTo 999

' Очищаем окно диалога
funPrintProgress ""

' Создаем строку для выполнения команды
strCommand = "GET " & Me.ftpSource & " " & Me.ftpDest

' Запускаем на выполнение команду Get
ftpInet.ftp.Execute CStr(Me.ftpUrl), strCommand
Exit Sub
999:
funPrintProgress Err.Description
Err.Clear
End Sub

' == Создаем функцию для сообщений
Public Sub funPrintProgress(myMsg As String)
If myMsg = "" Then
Me.progress = "" ' Инициализация сообщений
Me.progress.SetFocus
Else
Me.progress = Me.progress & myMsg & vbNewLine
End If
DoEvents
End Sub
P.S. Вот коротко и все о загрузке данных через ftp сервер. Полную версию работы программы найдете в файле la_activeX.mdb
Вопрос 305(3.04.2000) Можно ли заставить функцию Rnd работать с буквами?
  Ответ. Напрямую использовать символы нельзя. Функция Rnd возвращает случайное число типа Single (4 байта), а не массив символов. Следовательно надо написать функцию конвертации ее в строку.

   Вопросы из конференции.
Вопрос А9 ЕСТЬ КУЧА БАЗ НА ДИСКЕТАХ, ОДИНАКОВАЯ СТРУКТУРА НО РАЗНЫЕ ДИЛЕРЫ И СООТВЕТСТВЕННО РАЗНЫЕ ДАННЫЕ. НА КАЖДОЙ ДИСКЕТЕ КАЖДАЯ ЗАЯВКА ДИЛЕРА ИДЕНТИФИЦИРОВАНА. В ПОЛЕ ИМЯ ТАБЛ ЗАЯВКИ ПРОПИСАНО ФИО КОНКРЕТНОГО ДИЛЕРА. ЕСТЬ БАЗА УПРАВЛЕНИЯ ЭТИМИ БАЗОЧКАМИ. НЕОБХОДИМО В ФОРМЕ УВИДЕТЬ ЧЬЮ ДИСКЕТУ СОБИРАЮСЬ ОБРАБАТЫВАТЬ (ВСТАВИЛА В ДИСКОВОД). БАЗУ ЗАКРЫВАТЬ И ОТКРЫВАТЬ НЕ ХОЧУ. ИЗ ФОРМЫ ВЫХОДИТЬ НЕ ХОЧУ. ХОЧУ МЕНЯТЬ ДИСКЕТЫ И ВИДИТЬ СМЕНЯЮЩИЕСЯ ФИО ДИЛЕРОВ. ПО ЭТОМУ ФИО ИДЕТ СВЯЗЬ С БАЗОЙ ФОКС-ПРО.
   Ответ. Каждая дискета имеет свою метку. Вам надо присвоить им свое название. Как программно определить метку тома указано в примере 2 файла la_api.mdb
Вопрос А8 Имеются присоединенные DBF-таблицы с различными видами кодировок. Необходимо их обрабатывать для получения результирующих значений.
Смена вида кодировок возможна в regedite если-бы не проблема- перезагрузка. Второй вид прописать в регистре профили -однако есть проблема если сделать как написано в HELP то
при запуске Access не видит профиль. А посему просьба если есть у кого в качестве примера написать ветви в регистре и строку вызова. А может кто предложит третий вариант? Буду
признателен.
   Ответ. Перезагрузку можно попробовать обойти. Для этого, изменив в реестре кодировку, запустить еще один процесс access, и из него загрузить данные. Смена кодировки написана в разделе dbase.

 

Добавить комментарий

Loading