Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Анатолий (Киев) надеюсь на Вашу помощь :)
 
 автор: KrukVN   (23.02.2009 в 15:13)   личное сообщение
0 Кб.
 
 

нужно из текстового файла перенести данные в dbf
поля разделены символом |
В видеофокспро пишу так:

create table mytable(f1 c(200), f2 c(200) и т.д. ...)
use mytable
APPEND FROM 'e:\Valera\ARMs_ForSAP\Оборотка\Convert.txt' DELIMITED WITH CHARACTER |

проходит нормально. формируется dbf и заполняется данными

при попытке запуска через ado и Microsoft OLE DB Provider for Visual FoxPro
примерно так:

Sub werfgqwefwe()
Dim con As ADODB.Connection
Dim cmd As ADODB.Connection

Set con = New ADODB.Connection
Dim LocalPath As String

LocalPath = CurrentProject.Path
con.Open "Provider=Microsoft OLE DB Provider for Visual FoxPro;Data Source=" & LocalPath

Dim i As Integer
Dim strFlds As String
For i = 1 To 20
    strFlds = strFlds & "," & "f" & i & " c(200)"
Next
strFlds = "create table mytable(" & Mid(strFlds, 2) & ")"

con.Execute strFlds

con.Execute "EXECSCRIPT(" & _
                "[USE mytable EXCLUSIVE] + chr(13) + " & _
                "[APPEND FROM 'e:\Valera\ARMs_ForSAP\Оборотка\Convert.txt' DELIMITED WITH CHARACTER |])"

'con.Execute "use mytable"
'con.Execute "APPEND FROM 'e:\Valera\ARMs_ForSAP\Оборотка\Convert.txt' DELIMITED WITH CHARACTER |"
'con.Execute "CLOSE ALL"

con.Close
Set con = Nothing
    
End Sub

это номер не проходит :/

как быть?
(тектовый файл прилагаю)

  Ответить  
 
 автор: Анатолий (Киев)   (23.02.2009 в 17:31)   личное сообщение
 
 

Провайдер не поддерживает команды Import и Export, а следовательно и другие команды, где формат источника/адресата отличается от DBF (ИМХО). В вашем случае проще всего читать текстовый файл построчно, дерибанить строку на части (Split(s, "|")) и добавлять записи в Recordset. Можно конечно открыть второй Recordset на базе текстового файла или даже выполнить SELECT * INTO из текстового файла в DBF (используя VFP драйвер), но уж больно много мороки.
ЗЫ. Файл у вас какой-то странный. В одих полях десятичный разделитель ".", в других - ",".

  Ответить  
 
 автор: KrukVN   (23.02.2009 в 18:14)   личное сообщение
 
 

Спасибо Анатолий
у меня уже забегали мысли по поводу.... вот рожаю сейчас

    CurrentDb.Execute "SELECT * INTO [mytable#dbf] IN 'd:\'[ODBC;DSN=Visual FoxPro Tables;SourceDB=d:\;SourceType=DBF] " & _
        "FROM Convert#txt IN 'e:\Victor_M\1\'[Text;HDR=No;IMEX=2;CharacterSet=866;]"

что-то типа... может и пройдет
**
построчно не очень хочется - файл записей на 17-20 тысяч
**
разделители странные в САПе (немцы нахомутали :) - или наши уже подправили чего)

  Ответить  
 
 автор: Анатолий (Киев)   (23.02.2009 в 18:37)   личное сообщение
 
 

С разбегу файл с разделителем "|" файл не прочитаешь. Нужно либо создать и сохранить спецификацию импорта в Access, и тогда [Text;DSN=Имя спецификации;HDR=No], или создать в той же папке файл Schema.ini со спецификацией для этого файла, и тогда - [Text;]
Подробнее здесь

  Ответить  
 
 автор: KrukVN   (24.02.2009 в 00:03)   личное сообщение
 
 

>>С разбегу файл с разделителем "|" файл не прочитаешь...
это я в курсе. просто вообще вариант такой пробую. завтра уже посмотрю

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList