СообЧа > База Знаний > Базы данных > MS Access

Вопрос

Данные вводятся в access, потом собирается текстовый файл и передается эл.почтой, на приеме старая фоксовая программа, получается конфликт кодировок. Как быть?

Ответ

Можно сразу переводить текстовые строки при записи в файл в нужную кодировку. Вот функции для этого:

Public Declare Function OemToChar Lib "user32" Alias "OemToCharA" _
(ByVal lpszSrc As String, ByVal lpszDst As String) As Long ' Из DOS в WIN
Public Declare Function CharToOem Lib "user32" Alias "CharToOemA" _
(ByVal lpszSrc As String, ByVal lpszDst As String) As Long ' Из WIN в DOS


В модуле формы объявляешь переменные:

Dim l_lReturn As Long
Dim strSource, strDestin As String


Пишешь преобразованные строки в файл:
Open "MyFile.txt" For Output As #1
MyStringVar = "Просто строка"
strSource = MyStringVar
strDestin = Space$(Len(strSource))
l_lReturn = CharToOem(strSource, strDestin)
Print #1, strDestin
Close #1


В итоге в файле MyFile.txt — текст в DOS-кодировке

Если использовать внешнюю программу вроде recoder.exe, то вызвать ее из бейсика можно оператором Shell («командная строка») Также можно использовать функцию API WinExec или (для крутых:-)) ShellExecute — они дают больше возможностей для управления запускаемой программой.

Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd _
As Long) As Long
Public Const SW_SHOWNORMAL = 1
Public Const SW_SHOWMAXIMIZED = 3


Пример:

strDoc = "MyDocuments\MyDocFile.doc"
ShellExecute Me.hwnd, vbNullString, strDoc, vbNullString, _
"C:\", SW_SHOWMAXIMIZED



Copyright © 2000-2004 Сообщество Чайников
Контактная информация