powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / dbf - на VB
16 сообщений из 16, страница 1 из 1
dbf - на VB
    #32536956
Andy154
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может кто-нибудь делал?

Как проще всего "выдать" файл в формате dbf?

Есть ли какие-нибудь источники по этому поводу?

Для чего надо: нужно лить данные в 1С. VB -> dbf, dbf -> 1C.
Процесс не обсуждается, так по ТЗ :).
...
Рейтинг: 0 / 0
dbf - на VB
    #32537014
sYstEmiZer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если тебе все время из одной базы таскать - сделай ODBC коннект и цепляйся к ней запросами по ADO. Примеров везде масса.
...
Рейтинг: 0 / 0
dbf - на VB
    #32537027
Andy154
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне надо СОЗДАВАТЬ файл на диске...
И не факт, что каждый раз одинаковый.
ADO (говорят, сам не проверял :) !) в этом случае подглючивает...
Идеальным было бы описание формата dbf с примерами...
...
Рейтинг: 0 / 0
dbf - на VB
    #32537055
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
h**p://handsoff.infomedia.it/cgi-bin/lwgate/VB-IT/archives/vb-it.log.0009/Subject/article-704.html
h**p://leadersoft.ru/russian/help/subscribe/sub36.htm
h**p://qbcm.hybd.net/issues/2-2/

незачто :-)
...
Рейтинг: 0 / 0
dbf - на VB
    #32537152
Andy154
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2marvan
Спасибо :)

Осталось разобраться...
...
Рейтинг: 0 / 0
dbf - на VB
    #32541901
Ромашка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я делаю так
Dim cn As New ADODB.Connection
dim wayData as string
wayData = "путь к данным"
Set cn = CreateObject("ADODB.Connection")
cn.Open ("Driver={Microsoft dBASE Driver (*.dbf)};driveId = 277 ; Dbq= " & wayData & " ; ")
cn.Execute ("CREATE TABLE Bd_vd (<поле1> text(3), <поле2> text(5);") cn.Execute ("INSERT INTO Bd_vd select <поле1>,<поле2> from ИмяБазы;")
...
Рейтинг: 0 / 0
dbf - на VB
    #32542106
Andy154
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Ромашка

Спасибо, за информацию, но мне нужно писать не в существующую базу, а создавать файл с нуля...
...
Рейтинг: 0 / 0
dbf - на VB
    #32542318
Andy154
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2marvan

Какой-странный Бейсик там в примерах...

НИ ОДИН ПРИМЕР НЕ СКОМПИЛИРОВАЛСЯ... То что про Access - это не то...
Функций типа MKL$ CVI CVL и т. д. я нигде не нашел :(...

Придется самому писать...
...
Рейтинг: 0 / 0
dbf - на VB
    #32542426
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот фрагмент работающего кода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
'Код на основе статьи:
'http://www.accent6.com.ua/kbase6/SQL/sql_dbf.htm#start
'Авторы А. Кухтин, А. Бутенко
'Доступ к DBF-файлам из SQL-Server
'   Создание свзяанного сервера (Linked Server)
'   Операции с DBF-файлами c помощью связанного сервера
'   Операции с DBF-файлами напрямую
'   Примеры работы с DBF-файлом


    Dim pDBF As String
    pDBF = pathToArc & "PAYORDER.dbf"
     If Len(Dir(pDBF)) >  0  Then
        Kill pDBF   'Я пересоздаю dbf каждый раз ЗАНОВО -
    End If          'это НЕ диктуется ADO!
   Set dbfConn = New ADODB.Connection
    With dbfConn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .Properties("Extended Properties") = "dBase IV"
        .Properties("Data Source") = pathToArc
        .Open
    End With
    DoEvents
    Set dbfCmd = New ADODB.Command
    With dbfCmd
        .ActiveConnection = dbfConn
        .CommandTimeout =  10 

        .CommandText = "CREATE TABLE PAYORDER (" & _
                                    "SEQNO int," & _
                                    "PAYNO char(16)," & _
                                    "PAYDATE smalldatetime," & _
                                    "ORGNAME char(30)," & _
                                    "INN char(14)," & _
                                    "PAYBASE numeric(12,2)," & _
                                    "PAYNDS numeric(12,2)," & _
                                    "PAYSUMM numeric(12,2)," & _
                                    "PAYMENT char(8)," & _
                                    "QUITDATE smalldatetime," & _
                                    "INSERTED bit," & _
                                    "ERASED bit," & _
                                    "FILENAME char(128)" & _
                                    ")"
        .Execute            '
    End With
    Set dbfRS = New ADODB.Recordset
    Set dbfRS.ActiveConnection = dbfConn
    
    With dbfRS
        .CursorLocation = adUseClient
        .CursorType = adOpenDynamic
        .LockType = adLockOptimistic
        .Open "SELECT * FROM PAYORDER"
        DoEvents
        For k = 1 To N
            .AddNew
            .Fields(0) = v(k).SeqNo
            .Fields(1) = v(k).PayNo
'    ************
            .Fields( 12 ) = v(i).FileName
        .Update
        Next k
    DoEvents
...
Рейтинг: 0 / 0
dbf - на VB
    #32542613
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тоже посмотрел на всё что там было (см. ссылки) и написал по своему.
Создал байтовый массив и по байтам записывал структуру.
В таком стиле:
Код: plaintext
lVal = mHeader.RecordCount:  CopyMemory aBuf( 4 ), ByVal VarPtr(lVal),  4 
После чего выгрузил в файл, а следом за ней таким же способом и данные.

Плюсом такого способа является независимость от наличия и работоспособности ADO и возможность тонкого контроля всей структуры dbf
...
Рейтинг: 0 / 0
dbf - на VB
    #32542855
Andy154
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2marvan
Я уже тоже написал (почти :)).
Посмотрел структуру (по Вашим ссылкам) и кое-что накатал (но пока не работает, так что не привожу здесь :))...

2Processor
А вот это очень здорово!
Попробую прямо сейчас.
А то байты мне считать надоело :)
P.S. Кто-то там пытался сделать корректную подсветку VB кода... По-моему у них получилось... /topic/96477
Блин, как ссылку-то запихать :)?
...
Рейтинг: 0 / 0
dbf - на VB
    #32542881
Andy154
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Processor

Поясните, пожалуйста эту строку
.Properties("Data Source") = pathToArc

У мне еще НЕТ файла... Я могу его СОЗДАТЬ с помощью этого кода? Если вместо pathToArc указать "C:\1.dbf" - вылетает ошибка "Файл не найден"...
...
Рейтинг: 0 / 0
dbf - на VB
    #32543412
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy154Поясните, пожалуйста эту строку
.Properties("Data Source") = pathToArc

Указывает директорию, в которой размещаются имеющиеся или должны быть записаны новые dbf-файлы.
(в приведенном фрагменте Arc - сокращение от "архив"; никак не связано с именем dbf).
Кстати, имя dbf-файла ОБЯЗАНО быть в формате 8.3
...
Рейтинг: 0 / 0
dbf - на VB
    #32543535
Andy154
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Туплю глобально...

Как должен выглядить код, если мне нужно создать на диске C:\ файл test.dbf

Я не вижу кода, который СОЗДАЕТ файл... Тем более, если в качестве Data Source указана ДИРЕКТОРИЯ (?)
...
Рейтинг: 0 / 0
dbf - на VB
    #32543558
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Строка:
Код: plaintext
       .CommandText = "CREATE TABLE PAYORDER (" 
создаёт ПУСТУЮ таблицу с именем PAYORDER.DBF в требуемой директории
Код: plaintext
1.
.Properties("Data Source") = pathToArc
Затем
Код: plaintext
1.
.Open "SELECT * FROM PAYORDER"
заполняет Properties и Fields рекордсета (ПУСТОГО!). А
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
        For k =  1  To N
            .AddNew
            .Fields( 0 ) = v(k).SeqNo
            .Fields( 1 ) = v(k).PayNo
'    ************
            .Fields( 12 ) = v(i).FileName
        .Update
        Next k
ЗАПОЛНЯЕТ поля .Fields(i) элементами структуры v(k) и ЗАПИСЫВАЕТ (.Update) каждую k-ю запись в dbf-файл
...
Рейтинг: 0 / 0
dbf - на VB
    #32543561
Andy154
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо...
Я уже нашел файл :)...
Просто не успел снять вопрос...

БОЛЬШОЕ СПАСИБО.

P.S. А байты я все-таки посчитал :)...
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / dbf - на VB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]