Консультация № 72082
22.01.2007, 13:48
0.00 руб.
0 2 2
Добрый день, уважаемые эксперты!
Подскажите, пожалуйста, как приделать на VB6 что-то типа конвертера т.е. имея на входе текстовый файл с разделителями, получить на выходе dbf-ник. Или такое возможно только через посредничество программ сторонних разработчиков типа Access или Excel? Открыть файл и считать из него данные не вызывает затруднений, а вот как потом организовать выгрузку в dbf-файл?
Спасибо!

Обсуждение

Неизвестный
22.01.2007, 16:16
общий
это ответ
Здравствуйте, Wino Veritas!
Имеет смысл почитать хелпы на спецификацию формата *.dbf. Попроще - http://alxsoft.narod.ru/SIxFormat.htm, поинтересней - http://www.ronyasoft.nm.ru/phonebook/dbfheader.html (описаны разные варианты формата dbf). Это если организовывать самому запись формата. Если же нет, то можно использовать встроенные объекты VB, позволяющие заполнить соответствующие поля и сохранить их в требуемом формате. Например - создать объект Workspace, использовать его метод CreateDatabase, потом создать там таблицу с нужными типами и количеством полей, затем заполнить её информацией. Однако Microsoft Jet хочет работать только со своим форматом.
Можно немного иначе, как описано в http://www.firststeps.ru/vb/r.php?34, там в строке ODBC-коннекта можно описать стандартный драйвер для dbf (правильную строку подключения можно посмотреть в системных источниках данных при попытке этот источник создать), и потом работать с этим объектом как с обычной ДБ. Есть ещё и сторонние компоненты для VB, но ими не пользовался, потому не буду врать.
Неизвестный
23.01.2007, 13:59
общий
это ответ
Здравствуйте, Wino Veritas!
Одним из вариантов для решения данного вопроса может быть связка VB6+ADO, для этого в референсах подключаем библиотеку Microsoft ActiveX Data Objects 2.7 Library ну или другой версии которую имеем, важно чтоб на компьютере клиента она присутствовала, установить можно с помощью MDAC соответствующей версии
Далее создаем три объекта adocon as new ADODB.connection; adocoM as new ADODB.command; adoRS as new ADODB.Recordset; через них и работаем, adocon объект доступа к базе данных, adocoM используется в тех случаях, когда не требуется возвращать источник данных; adoRS возвращает источник данных в котором можно добавлять, удалять и редактировать записи, а так же выводить на экран в различные гриды (есть специальные для АДО и отдельно для ДАО) ну и т.д.
Ниже примерчик, думаю разберёшся. В принцепе идея работает, проверял, главное творческий подход...

Приложение:
Private Sub Command1_Click()Dim FSO As New FileSystemObjectDim AdoDBFCon As New ADODB.ConnectionDim AdoDBFCom As New ADODB.CommandDim AdoDBFRS As New ADODB.RecordSetAdoDBFCon.Open "Provider=MSDASQL.1;" & _ "Persist Security Info=False;" & _ "Data Source=Файлы dBASE;" & _ "Initial Catalog=" & App.Path If AdoDBFCon.State = adStateOpen Then With AdoDBFCom Set .ActiveConnection = AdoDBFCon .CommandText = " CREATE TABLE MMM.DBF _ ( Lf_LoadID int, _ CodeCarrier int )" .Execute End With If FSO.FileExists(MMM.DBF) = True Then With AdoDBFRS Set .ActiveConnection = AdoDBFCon .Source = "SELECT * FROM MMM.DBF" .CursorLocation = adUseClient .CursorType = adOpenStatic .LockType = adLockOptimistic .Open *************.ADD новая запись.Fields ("FieldName").value = 10.update зафиксироват запись**************** End With End IfEnd IfSet AdoDBFCom = NothingSet AdoDBFRS = NothingSet AdoDBFCon = NothingSet FSO = NothingEnd Sub
Форма ответа